Documentation

TauCeti.ModelTheory.ModelExistence.LowenheimSkolem

The witness hull and downward Löwenheim–Skolem for fragments #

Let A be a fragment of L_{ω₁ω}, M an L-structure and X ⊆ M. Then X lies in an A-elementary substructure of M, its witness hull, with at most max ℵ₀ |X| |A| |Σ n, L.Functions n| elements. Neither M nor X need be nonempty. The function symbols enter the bound separately, because a fragment need not contain an atomic formula mentioning them. The three cardinals start in the universes of M, of the formulas and of the function symbols, and are compared after lifting into their common universe.

For a formation-closed fragment the bound is Marker's max |X| |A|. This is a corollary of the same construction, not a new one: such a fragment is infinite, since it contains ⊥ at every arity and formulas are tagged with their arity, and it has at least as many members as there are function symbols, so both ℵ₀ and the function-symbol term are absorbed by |A|.

Main definitions #

Main results #

References #

noncomputable def FirstOrder.Language.Fragment.witness {L : Language} {M : Type w} [L.Structure M] (p : (n : ℕ) × L.BoundedFormulaω Empty n) :
(Fin p.fst → M) → Option M

The chosen counterexample to a universal formula ∀ x, φ at a tuple a, if φ has one; for every other formula, nothing.

Instances For
    theorem FirstOrder.Language.Fragment.witness_all {L : Language} {M : Type w} [L.Structure M] {n : ℕ} (φ : L.BoundedFormulaω Empty (n + 1)) (a : Fin n → M) :

    At a universal formula ∀ x, φ, the witness is the chosen counterexample to φ, if any.

    A chosen counterexample is a counterexample.

    theorem FirstOrder.Language.Fragment.exists_witness_all {L : Language} {M : Type w} [L.Structure M] {n : ℕ} {φ : L.BoundedFormulaω Empty (n + 1)} {a : Fin n → M} (hex : ∃ (m : M), ¬BoundedFormulaInf.Realize φ Empty.elim (Fin.snoc a m)) :
    ∃ (m : M), witness ⟨n, BoundedFormulaInf.all φ⟩ a = some m

    A universal formula with a counterexample has a chosen one.

    A chosen witness is produced only for a universal formula ∀ x, φ, and is then a counterexample to φ.

    The chosen counterexamples for the members of A at the tuples from Y.

    Instances For
      @[simp]
      theorem FirstOrder.Language.Fragment.mem_witnessSet {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) {Y : Set M} {m : M} :
      m ∈ A.witnessSet Y ↔ ∃ p ∈ A, ∃ (a : Fin p.fst → M), (∀ (i : Fin p.fst), a i ∈ Y) ∧ witness p a = some m

      Membership in witnessSet: a chosen counterexample for a member of A at a tuple from Y.

      def FirstOrder.Language.Fragment.hullStage {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) (X : Set M) :
      ℕ → Set M

      The stages of the witness hull of X: alternately close under the function symbols and add, for each universal member ∀ x, φ of A and each tuple from the closure at which φ has a counterexample in M, a chosen counterexample.

      Instances For
        @[simp]
        theorem FirstOrder.Language.Fragment.hullStage_zero {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) (X : Set M) :
        A.hullStage X 0 = X

        The first stage of the witness hull of X is X.

        @[simp]
        theorem FirstOrder.Language.Fragment.hullStage_succ {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) (X : Set M) (k : ℕ) :

        The next stage adds to the closure of a stage its chosen counterexamples.

        The closures of the stages increase.

        The witness hull of X: the union of the closures of its stages.

        Instances For
          theorem FirstOrder.Language.Fragment.mem_witnessHull {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) {X : Set M} {m : M} :
          m ∈ A.witnessHull X ↔ ∃ (k : ℕ), m ∈ (Substructure.closure L).toFun (A.hullStage X k)

          Membership in the witness hull is membership in the closure of some stage.

          theorem FirstOrder.Language.Fragment.subset_witnessHull {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) (X : Set M) :
          X ⊆ ↑(A.witnessHull X)

          The witness hull contains its seed.

          The witness hull is A-elementary, by the fragment Tarski–Vaught criterion.

          theorem FirstOrder.Language.Fragment.coe_witnessHull {L : Language} {M : Type w} [L.Structure M] (A : L.Fragment) (X : Set M) :
          ↑(A.witnessHull X) = ⋃ (k : ℕ), ↑((Substructure.closure L).toFun (A.hullStage X k))

          The witness hull is the union of the closures of its stages.

          The cardinal bound #

          Each step is bounded by an infinite cardinal κ in the common universe max u v w that bounds the seed, the fragment and the function symbols; the three start in different universes, so each is lifted into max u v w from its own.

          The chosen counterexamples at the tuples from a set of at most κ elements number at most κ, when κ also bounds the fragment.

          Each stage of the witness hull of X has at most κ elements.

          The witness hull of X has at most κ elements.

          Downward Löwenheim–Skolem for fragments. Every subset X of M lies in an A-elementary substructure with at most max ℵ₀ |X| |A| |Σ n, L.Functions n| elements.

          theorem FirstOrder.Language.exists_countable_aElementary_substructure {L : Language} {M : Type w} [L.Structure M] [Countable ((n : ℕ) × L.Functions n)] (A : L.Fragment) (hA : (↑A).Countable) {X : Set M} (hX : X.Countable) :
          ∃ (N : L.Substructure M), X ⊆ ↑N ∧ AElementary A N.subtype ∧ Countable ↥N

          Countable A-elementary substructures. With countably many function symbols, a countable fragment and a countable X ⊆ M, there is a countable A-elementary substructure containing X.

          Downward Löwenheim–Skolem for fragments, in one universe. For a language and a structure in one universe the bound needs no lifts.

          Downward Löwenheim–Skolem for formation-closed fragments. For a formation-closed fragment A, every subset X of M lies in an A-elementary substructure with at most max |X| |A| elements: the fragment is infinite and has at least as many members as there are function symbols.