Documentation

InfinitaryLogic.Methods.LocalEMCardinality

Exact cardinality of the local EM carrier (issue #11 unit 5) #

The orbit code (LocalEMTupleOrbit.lean) deliberately forgets the J-locations of supports — so it cannot bound the carrier. The located term code restores them: LocatedTermCode Λ J := Σ k, (Fin k ↪o J) × Λ[[Fin k]].Term Empty — a compression arity, the increasing enumeration of the representative's support, and the compressed term. Since the embedding travels WITH the code, expansion is a total function (LocatedTermCode.expand), and locJExpand_compress makes the element-to-code map injective (locatedCode_injective).

The located term code: compression arity, the support's increasing enumeration, and the compressed term. Unlike the orbit code, it remembers WHERE the support sits in J.

Equations
Instances For

    Expansion of a located code — total, since the embedding travels with the code.

    Equations
    Instances For
      noncomputable def FirstOrder.Language.LocalEMContext.locatedCode {Λ : Language} {J : Type} [LinearOrder J] {M : Type} [Λ.Structure M] (ctx : Λ.LocalEMContext J) (x : Carrier Λ J ctx) :

      The located code of a carrier element: enumerate its representative's support and compress.

      Equations
      Instances For

        The located code is injective: equal codes expand to equal representatives, hence equal classes.

        The upper bound #

        The located-code type has size at most max ℵ₀ #J for a countable base language.

        The upper bound: the carrier has size at most max ℵ₀ #J.

        The lower bound #

        Distinct skeleton constants have distinct classes for an injective deep sequence: LocalEMEq c_j c_{j'} would force a (d + r) = a (d + r') at distinct ranks.

        The lower bound: the skeleton injects into the carrier.

        Exact carrier cardinality (issue #11 unit 5): for an infinite skeleton, a countable base language, and an injective deep sequence, mk ctx.Carrier = max ℵ₀ (mk J).