Documentation

InfinitaryLogic.ModelTheory.FragmentLowenheimSkolem

Genuine downward Löwenheim–Skolem for fragments (issue #13 unit 5) #

Per the frozen audit (docs/fragments-audit.md §5–§6): from an arbitrary M and X ⊆ M, construct an A-elementary substructure containing X with the HONEST cardinal bound

|N| ≤ max(ℵ₀, |X|, |A|, |Σ n, L.Functions n|).

The construction is the semantic witness hull (Marker, Exercise 1.23, presented with choice functions instead of a language expansion): interleave Substructure.closure (all language functions — this is where |Σ Functions| honestly enters) with chosen witnesses for failures of the fragment-controlled universals (tvWitnessSet|A|-many witness suppliers), iterate ω times, and close once more. The union is closed under both, so the Tarski–Vaught criterion (aElementary_of_tarskiVaught) applies. Witnesses are extracted from existence proofs (Exists.choose), so no Nonempty M hypothesis and no dummy elements are needed.

Marker's textbook bound max(|A|,|X|) (Theorem 1.22) is the corollary mk_le_of_functions_le under |Σ Functions| ≤ max ℵ₀ |A|; the countable corollary is exists_countable_aElementary_substructure. The file is stated for Language.{0,0} and Type 0 carriers — the consumers' setting.

The witness sets and the hull #

def FirstOrder.Language.tvWitnessSet {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (Y : Set M) :
Set M

The chosen witnesses over a base set Y: for each fragment-controlled universal and each tuple from Y admitting a counterexample in M, THE chosen counterexample.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    def FirstOrder.Language.lsStage {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) :
    Set M

    The Löwenheim–Skolem stages: alternately close under all language functions and add the fragment witnesses.

    Equations
    Instances For
      theorem FirstOrder.Language.lsStage_mono {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) (k : ) :
      lsStage A X klsStage A X (k + 1)
      def FirstOrder.Language.lsHull {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) :

      The witness hull: the substructure generated by all stages.

      Equations
      Instances For
        theorem FirstOrder.Language.subset_lsHull {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) :
        X(lsHull A X)
        theorem FirstOrder.Language.coe_lsHull {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) :
        (lsHull A X) = ⋃ (k : ), ((Substructure.closure L).toFun (lsStage A X k))

        The hull's carrier is the union of the stage closures — directedness makes the last closure redundant.

        theorem FirstOrder.Language.exists_stage_of_tuple {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) {X : Set M} {n : } (a : Fin n(lsHull A X)) :
        ∃ (K : ), ∀ (i : Fin n), (a i) ((Substructure.closure L).toFun (lsStage A X K))

        Finitely many hull elements lie in a common stage closure.

        The hull is A-elementary — the Tarski–Vaught criterion holds by construction.

        The cardinal bound #

        def FirstOrder.Language.tvSlice {L : Language} {M : Type} (A : L.Fragment) (Y : Set M) (n : ) :

        The per-arity witness suppliers: fragment-controlled bodies paired with tuples from Y.

        Equations
        Instances For
          noncomputable def FirstOrder.Language.tvSliceWitness {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (Y : Set M) (n : ) :
          tvSlice A Y nOption M

          The choice map from a slice: the chosen counterexample, when one exists.

          Equations
          Instances For
            theorem FirstOrder.Language.mk_lsStage_le {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) (X : Set M) (k : ) :

            The honest per-stage bound.

            The honest hull bound: |N| ≤ max(ℵ₀, |X|, |A|, |Σ Functions|).

            Genuine downward Löwenheim–Skolem for fragments (issue #13 unit 5): every X ⊆ M is contained in an A-elementary substructure of size at most max(ℵ₀, |X|, |A|, |Σ Functions|) — the honest bound; only function symbols enlarge the hull beyond the fragment's witnesses.

            theorem FirstOrder.Language.exists_countable_aElementary_substructure {L : Language} {M : Type} [L.Structure M] (A : L.Fragment) {X : Set M} (hX : X.Countable) (hA : A.toSet.Countable) [hF : Countable ((n : ) × L.Functions n)] :
            ∃ (N : L.Substructure M), XN AElementary A N.subtype Countable N

            The countable corollary (Marker, Theorem 1.22 second half — what #17 consumes): countable data yields a countable A-elementary substructure.