Documentation

TauCeti.ModelTheory.Infinitary.Semantics

Semantics of infinitary first-order formulas #

This file defines realization of L_{∞ω} formulas in a structure, with a simp lemma for every constructor and derived connective. The branching carrier is a type parameter, so each realization lemma is a single statement generic in the carrier and its universe: there is no separate L_{ω₁ω} semantics.

Quantification extends the bound-variable valuation at the last slot, with Fin.snoc, as for finitary formulas.

Main definitions #

Main results #

References #

Implementation notes #

BoundedFormulaInf.Realize is exposed, as in the sources. Its pattern-matching definition compiles through an auxiliary matcher, which is named BoundedFormulaInf.Realize.match_1 only when the body is exposed (otherwise the matcher gets a private, module-specific name). Exposing it keeps that name stable, so that a downstream restatement of the same definition can be compared with this one constant by constant.

def FirstOrder.Language.BoundedFormulaInf.Realize {L : Language} {ι : Type uι} {α : Type u'} {M : Type w} [L.Structure M] {n : ℕ} :
L.BoundedFormulaInf ι α n → (α → M) → (Fin n → M) → Prop

Realization of an infinitary bounded formula in a structure, given valuations of the free and bound variables. One recursion serves every carrier.

Instances For
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_falsum {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_equal {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {t₁ t₂ : L.Term (α ⊕ Fin n)} :
    (equal t₁ t₂).Realize v xs ↔ Term.realize (Sum.elim v xs) t₁ = Term.realize (Sum.elim v xs) t₂
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_rel {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {l : ℕ} {R : L.Relations l} {ts : Fin l → L.Term (α ⊕ Fin n)} :
    (rel R ts).Realize v xs ↔ Structure.RelMap R fun (i : Fin l) => Term.realize (Sum.elim v xs) (ts i)
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_imp {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ ψ : L.BoundedFormulaInf ι α n} :
    (φ.imp ψ).Realize v xs ↔ φ.Realize v xs → ψ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_all {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ : L.BoundedFormulaInf ι α (n + 1)} :
    φ.all.Realize v xs ↔ ∀ (y : M), φ.Realize v (Fin.snoc xs y)
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_iSup {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φs : ι → L.BoundedFormulaInf ι α n} :
    (iSup φs).Realize v xs ↔ ∃ (i : ι), (φs i).Realize v xs

    Realization of an infinitary disjunction: one statement, generic in the carrier and its universe.

    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_iInf {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φs : ι → L.BoundedFormulaInf ι α n} :
    (iInf φs).Realize v xs ↔ ∀ (i : ι), (φs i).Realize v xs

    Realization of an infinitary conjunction: one statement, generic in the carrier and its universe.

    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_not {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ : L.BoundedFormulaInf ι α n} :
    φ.not.Realize v xs ↔ ¬φ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_top {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_bot {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_inf {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ ψ : L.BoundedFormulaInf ι α n} :
    (φ ⊓ ψ).Realize v xs ↔ φ.Realize v xs ∧ ψ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_foldr_inf {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} (l : List (L.BoundedFormulaInf ι α n)) :
    (List.foldr (fun (x1 x2 : L.BoundedFormulaInf ι α n) => x1 ⊓ x2) ⊤ l).Realize v xs ↔ ∀ φ ∈ l, φ.Realize v xs

    A finite conjunction holds exactly when every formula in the list holds.

    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_sup {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ ψ : L.BoundedFormulaInf ι α n} :
    (φ ⊔ ψ).Realize v xs ↔ φ.Realize v xs ∨ ψ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_iff {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ ψ : L.BoundedFormulaInf ι α n} :
    (φ.iff ψ).Realize v xs ↔ (φ.Realize v xs ↔ ψ.Realize v xs)
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.realize_ex {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {v : α → M} {xs : Fin n → M} {φ : L.BoundedFormulaInf ι α (n + 1)} :
    φ.ex.Realize v xs ↔ ∃ (y : M), φ.Realize v (Fin.snoc xs y)
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_toInf {L : Language} {ι : Type uι} {α : Type u'} {M : Type w} [L.Structure M] {n : ℕ} (φ : L.BoundedFormula α n) (v : α → M) (xs : Fin n → M) :
    φ.toInf.Realize v xs ↔ φ.Realize v xs

    The finitary embedding preserves realization, at every carrier.

    def FirstOrder.Language.FormulaInf.Realize {L : Language} {ι : Type uι} {α : Type u'} {M : Type w} [L.Structure M] (φ : L.FormulaInf ι α) (v : α → M) :

    Realization of an L_{∞ω} formula, which has no bound-variable slots.

    Instances For
      @[simp]
      theorem FirstOrder.Language.FormulaInf.realize_def {L : Language} {ι : Type uι} {α : Type u'} {M : Type w} [L.Structure M] (φ : L.FormulaInf ι α) (v : α → M) :

      A formula is realized when it is realized as a bounded formula with no bound variables, so the realization lemmas for bounded formulas apply to formulas. The priority is low so that simp tries default-priority facts stated at the formula level (hypotheses passed to simp, downstream simp lemmas) before descending to bounded realization.

      @[simp]
      theorem FirstOrder.Language.BoundedFormulaInf.realize_alls {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {φ : L.BoundedFormulaInf ι α n} {v : α → M} :
      Realize φ.alls v default ↔ ∀ (xs : Fin n → M), φ.Realize v xs

      Closing all bound-variable slots universally realizes as universal quantification over the valuations of those slots.

      @[simp]
      theorem FirstOrder.Language.BoundedFormulaInf.realize_exs {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {φ : L.BoundedFormulaInf ι α n} {v : α → M} :
      Realize φ.exs v default ↔ ∃ (xs : Fin n → M), φ.Realize v xs

      Closing all bound-variable slots existentially realizes as existential quantification over the valuations of those slots.

      @[simp]
      theorem FirstOrder.Language.BoundedFormulaInf.realize_exsLast {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {M : Type w} [L.Structure M] {k : ℕ} {φ : L.BoundedFormulaInf ι α (n + k)} {v : α → M} {xs : Fin n → M} :
      φ.exsLast.Realize v xs ↔ ∃ (ys : Fin k → M), φ.Realize v (Fin.append xs ys)

      Quantifying the last k slots existentially realizes as existential quantification over the valuations ys of those slots, appended to the valuation of the remaining slots.

      def FirstOrder.Language.SentenceInf.Realize {L : Language} {ι : Type uι} (φ : L.SentenceInf ι) (M : Type w) [L.Structure M] :

      Realization of an L_{∞ω} sentence in a structure.

      Instances For
        @[simp]

        A sentence is realized in a structure when it is realized as a formula under the empty valuation of its free variables. The priority is low for the same reason as FormulaInf.realize_def.

        @[simp]
        theorem FirstOrder.Language.SentenceInf.realize_inf {L : Language} {ι : Type uι} {M : Type w} [L.Structure M] {φ ψ : L.SentenceInf ι} :
        (φ ⊓ ψ).Realize M ↔ φ.Realize M ∧ ψ.Realize M

        A conjunction of sentences holds exactly when both sentences hold.

        @[simp]
        theorem FirstOrder.Language.SentenceInf.realize_sup {L : Language} {ι : Type uι} {M : Type w} [L.Structure M] {φ ψ : L.SentenceInf ι} :
        (φ ⊔ ψ).Realize M ↔ φ.Realize M ∨ ψ.Realize M

        A disjunction of sentences holds exactly when one of the sentences holds.

        @[simp]
        theorem FirstOrder.Language.SentenceInf.realize_iInf {L : Language} {ι : Type uι} {M : Type w} [L.Structure M] {φs : ι → L.SentenceInf ι} :
        Realize (BoundedFormulaInf.iInf φs) M ↔ ∀ (i : ι), (φs i).Realize M

        An infinitary conjunction of sentences holds exactly when every sentence holds.

        @[simp]

        The negation of a sentence holds exactly when the sentence does not hold.

        @[simp]
        theorem FirstOrder.Language.SentenceInf.realize_imp {L : Language} {ι : Type uι} {M : Type w} [L.Structure M] {φ ψ : L.SentenceInf ι} :

        An implication of sentences holds exactly when its conclusion holds whenever its hypothesis does.

        @[simp]

        Every closed term equals itself in every structure.

        @[simp]

        The false sentence holds in no structure.

        @[simp]
        theorem FirstOrder.Language.SentenceInf.realize_iSup {L : Language} {ι : Type uι} {M : Type w} [L.Structure M] {φs : ι → L.SentenceInf ι} :
        Realize (BoundedFormulaInf.iSup φs) M ↔ ∃ (i : ι), (φs i).Realize M

        An infinitary disjunction of sentences holds exactly when some sentence holds.

        @[simp]

        The finitary embedding of a sentence preserves satisfaction, at every branching carrier.