Documentation

Mathlib.ModelTheory.Semantics

Basics on First-Order Semantics #

This file defines the interpretations of first-order terms, formulas, sentences, and theories in a style inspired by the Flypitch project.

Main Definitions #

Main Results #

Implementation Notes #

References #

For the Flypitch project:

def FirstOrder.Language.Term.realize {L : Language} {M : Type w} [L.Structure M] {α : Type u'} (v : αM) (_t : L.Term α) :
M

A term t with variables indexed by α can be evaluated by giving a value to each variable.

Equations
@[simp]
theorem FirstOrder.Language.Term.realize_var {L : Language} {M : Type w} [L.Structure M] {α : Type u'} (v : αM) (k : α) :
realize v (var k) = v k
@[simp]
theorem FirstOrder.Language.Term.realize_func {L : Language} {M : Type w} [L.Structure M] {α : Type u'} (v : αM) {n : } (f : L.Functions n) (ts : Fin nL.Term α) :
realize v (func f ts) = Structure.funMap f fun (i : Fin n) => realize v (ts i)
@[simp]
theorem FirstOrder.Language.Term.realize_relabel {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {t : L.Term α} {g : αβ} {v : βM} :
realize v (relabel g t) = realize (v g) t
@[simp]
theorem FirstOrder.Language.Term.realize_liftAt {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n n' m : } {t : L.Term (α Fin n)} {v : α Fin (n + n')M} :
realize v (liftAt n' m t) = realize (v Sum.map id fun (i : Fin n) => if i < m then Fin.castAdd n' i else i.addNat n') t
@[simp]
theorem FirstOrder.Language.Term.realize_constants {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {c : L.Constants} {v : αM} :
realize v c.term = c
@[simp]
theorem FirstOrder.Language.Term.realize_functions_apply₁ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {f : L.Functions 1} {t : L.Term α} {v : αM} :
@[simp]
theorem FirstOrder.Language.Term.realize_functions_apply₂ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {f : L.Functions 2} {t₁ t₂ : L.Term α} {v : αM} :
realize v (f.apply₂ t₁ t₂) = Structure.funMap f ![realize v t₁, realize v t₂]
theorem FirstOrder.Language.Term.realize_con {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {A : Set M} {a : A} {v : αM} :
realize v (L.con a).term = a
@[simp]
theorem FirstOrder.Language.Term.realize_subst {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {t : L.Term α} {tf : αL.Term β} {v : βM} :
realize v (t.subst tf) = realize (fun (a : α) => realize v (tf a)) t
theorem FirstOrder.Language.Term.realize_restrictVar {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [DecidableEq α] {t : L.Term α} {f : { x : α // x t.varFinset }β} {v : βM} (v' : αM) (hv' : ∀ (a : { x : α // x t.varFinset }), v (f a) = v' a) :
@[simp]
theorem FirstOrder.Language.Term.realize_restrictVar' {L : Language} {M : Type w} [L.Structure M] {α : Type u'} [DecidableEq α] {t : L.Term α} {s : Set α} (h : t.varFinset s) {v : αM} :

A special case of realize_restrictVar, included because we can add the simp attribute to it

theorem FirstOrder.Language.Term.realize_restrictVarLeft {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [DecidableEq α] {γ : Type u_4} {t : L.Term (α γ)} {f : { x : α // x t.varFinsetLeft }β} {xs : β γM} (xs' : αM) (hxs' : ∀ (a : { x : α // x t.varFinsetLeft }), xs (Sum.inl (f a)) = xs' a) :
@[simp]
theorem FirstOrder.Language.Term.realize_restrictVarLeft' {L : Language} {M : Type w} [L.Structure M] {α : Type u'} [DecidableEq α] {γ : Type u_4} {t : L.Term (α γ)} {s : Set α} (h : t.varFinsetLeft s) {v : αM} {xs : γM} :

A special case of realize_restrictVarLeft, included because we can add the simp attribute to it

@[simp]
theorem FirstOrder.Language.Term.realize_constantsToVars {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] {t : (L.withConstants α).Term β} {v : βM} :
realize (Sum.elim (fun (a : α) => (L.con a)) v) t.constantsToVars = realize v t
@[simp]
theorem FirstOrder.Language.Term.realize_varsToConstants {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] {t : L.Term (α β)} {v : βM} :
realize v t.varsToConstants = realize (Sum.elim (fun (a : α) => (L.con a)) v) t
theorem FirstOrder.Language.Term.realize_constantsVarsEquivLeft {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] {n : } {t : (L.withConstants α).Term (β Fin n)} {v : βM} {xs : Fin nM} :
realize (Sum.elim (Sum.elim (fun (a : α) => (L.con a)) v) xs) (constantsVarsEquivLeft t) = realize (Sum.elim v xs) t
@[simp]
theorem FirstOrder.Language.LHom.realize_onTerm {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (t : L.Term α) (v : αM) :
@[simp]
theorem FirstOrder.Language.HomClass.realize_term {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {α : Type u'} {F : Type u_4} [FunLike F M N] [L.HomClass F M N] (g : F) {t : L.Term α} {v : αM} :
Term.realize (g v) t = g (Term.realize v t)
def FirstOrder.Language.BoundedFormula.Realize {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } (_f : L.BoundedFormula α l) (_v : αM) (_xs : Fin lM) :

A bounded formula can be evaluated as true or false by giving values to each free variable.

Equations
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_bot {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} :
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_not {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {φ : L.BoundedFormula α l} {v : αM} {xs : Fin lM} :
φ.not.Realize v xs ¬φ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_bdEqual {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} (t₁ t₂ : L.Term (α Fin l)) :
(t₁.bdEqual t₂).Realize v xs Term.realize (Sum.elim v xs) t₁ = Term.realize (Sum.elim v xs) t₂
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_top {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} :
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_inf {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {φ ψ : L.BoundedFormula α l} {v : αM} {xs : Fin lM} :
(φψ).Realize v xs φ.Realize v xs ψ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_foldr_inf {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } (l : List (L.BoundedFormula α n)) (v : αM) (xs : Fin nM) :
(List.foldr (fun (x1 x2 : L.BoundedFormula α n) => x1x2) l).Realize v xs φl, φ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_imp {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {φ ψ : L.BoundedFormula α l} {v : αM} {xs : Fin lM} :
(φ.imp ψ).Realize v xs φ.Realize v xsψ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_rel {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} {k : } {R : L.Relations k} {ts : Fin kL.Term (α Fin l)} :
(R.boundedFormula ts).Realize v xs Structure.RelMap R fun (i : Fin k) => Term.realize (Sum.elim v xs) (ts i)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_rel₁ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} {R : L.Relations 1} {t : L.Term (α Fin l)} :
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_rel₂ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {v : αM} {xs : Fin lM} {R : L.Relations 2} {t₁ t₂ : L.Term (α Fin l)} :
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_sup {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {φ ψ : L.BoundedFormula α l} {v : αM} {xs : Fin lM} :
(φψ).Realize v xs φ.Realize v xs ψ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_foldr_sup {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } (l : List (L.BoundedFormula α n)) (v : αM) (xs : Fin nM) :
(List.foldr (fun (x1 x2 : L.BoundedFormula α n) => x1x2) l).Realize v xs φl, φ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_all {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {θ : L.BoundedFormula α l.succ} {v : αM} {xs : Fin lM} :
θ.all.Realize v xs ∀ (a : M), θ.Realize v (Fin.snoc xs a)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_ex {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {θ : L.BoundedFormula α l.succ} {v : αM} {xs : Fin lM} :
θ.ex.Realize v xs ∃ (a : M), θ.Realize v (Fin.snoc xs a)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_iff {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {l : } {φ ψ : L.BoundedFormula α l} {v : αM} {xs : Fin lM} :
(φ.iff ψ).Realize v xs (φ.Realize v xs ψ.Realize v xs)
theorem FirstOrder.Language.BoundedFormula.realize_castLE_of_eq {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {m n : } (h : m = n) {h' : m n} {φ : L.BoundedFormula α m} {v : αM} {xs : Fin nM} :
(castLE h' φ).Realize v xs φ.Realize v (xs Fin.cast h)
theorem FirstOrder.Language.BoundedFormula.realize_mapTermRel_id {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [L'.Structure M] {ft : (n : ) → L.Term (α Fin n)L'.Term (β Fin n)} {fr : (n : ) → L.Relations nL'.Relations n} {n : } {φ : L.BoundedFormula α n} {v : αM} {v' : βM} {xs : Fin nM} (h1 : ∀ (n : ) (t : L.Term (α Fin n)) (xs : Fin nM), Term.realize (Sum.elim v' xs) (ft n t) = Term.realize (Sum.elim v xs) t) (h2 : ∀ (n : ) (R : L.Relations n) (x : Fin nM), Structure.RelMap (fr n R) x = Structure.RelMap R x) :
(mapTermRel ft fr (fun (x : ) => id) φ).Realize v' xs φ.Realize v xs
theorem FirstOrder.Language.BoundedFormula.realize_mapTermRel_add_castLe {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [L'.Structure M] {k : } {ft : (n : ) → L.Term (α Fin n)L'.Term (β Fin (k + n))} {fr : (n : ) → L.Relations nL'.Relations n} {n : } {φ : L.BoundedFormula α n} (v : {n : } → (Fin (k + n)M)αM) {v' : βM} (xs : Fin (k + n)M) (h1 : ∀ (n : ) (t : L.Term (α Fin n)) (xs' : Fin (k + n)M), Term.realize (Sum.elim v' xs') (ft n t) = Term.realize (Sum.elim (v xs') (xs' Fin.natAdd k)) t) (h2 : ∀ (n : ) (R : L.Relations n) (x : Fin nM), Structure.RelMap (fr n R) x = Structure.RelMap R x) (hv : ∀ (n : ) (xs : Fin (k + n)M) (x : M), v (Fin.snoc xs x) = v xs) :
(mapTermRel ft fr (fun (x : ) => castLE ) φ).Realize v' xs φ.Realize (v xs) (xs Fin.natAdd k)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_relabel {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {m n : } {φ : L.BoundedFormula α n} {g : αβ Fin m} {v : βM} {xs : Fin (m + n)M} :
(relabel g φ).Realize v xs φ.Realize (Sum.elim v (xs Fin.castAdd n) g) (xs Fin.natAdd m)
theorem FirstOrder.Language.BoundedFormula.realize_liftAt {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n n' m : } {φ : L.BoundedFormula α n} {v : αM} {xs : Fin (n + n')M} (hmn : m + n' n + 1) :
(liftAt n' m φ).Realize v xs φ.Realize v (xs fun (i : Fin n) => if i < m then Fin.castAdd n' i else i.addNat n')
theorem FirstOrder.Language.BoundedFormula.realize_liftAt_one {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n m : } {φ : L.BoundedFormula α n} {v : αM} {xs : Fin (n + 1)M} (hmn : m n) :
(liftAt 1 m φ).Realize v xs φ.Realize v (xs fun (i : Fin n) => if i < m then i.castSucc else i.succ)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_liftAt_one_self {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } {φ : L.BoundedFormula α n} {v : αM} {xs : Fin (n + 1)M} :
(liftAt 1 n φ).Realize v xs φ.Realize v (xs Fin.castSucc)
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_subst {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {n : } {φ : L.BoundedFormula α n} {tf : αL.Term β} {v : βM} {xs : Fin nM} :
(φ.subst tf).Realize v xs φ.Realize (fun (a : α) => Term.realize v (tf a)) xs
theorem FirstOrder.Language.BoundedFormula.realize_restrictFreeVar {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [DecidableEq α] {n : } {φ : L.BoundedFormula α n} {f : { x : α // x φ.freeVarFinset }β} {v : βM} {xs : Fin nM} (v' : αM) (hv' : ∀ (a : { x : α // x φ.freeVarFinset }), v (f a) = v' a) :
(φ.restrictFreeVar f).Realize v xs φ.Realize v' xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_restrictFreeVar' {L : Language} {M : Type w} [L.Structure M] {α : Type u'} [DecidableEq α] {n : } {φ : L.BoundedFormula α n} {s : Set α} (h : φ.freeVarFinset s) {v : αM} {xs : Fin nM} :

A special case of realize_restrictFreeVar, included because we can add the simp attribute to it

theorem FirstOrder.Language.BoundedFormula.realize_constantsVarsEquiv {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] {n : } {φ : (L.withConstants α).BoundedFormula β n} {v : βM} {xs : Fin nM} :
(constantsVarsEquiv φ).Realize (Sum.elim (fun (a : α) => (L.con a)) v) xs φ.Realize v xs
@[simp]
theorem FirstOrder.Language.BoundedFormula.realize_relabelEquiv {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {g : α β} {k : } {φ : L.BoundedFormula α k} {v : βM} {xs : Fin kM} :
((relabelEquiv g) φ).Realize v xs φ.Realize (v g) xs
theorem FirstOrder.Language.BoundedFormula.realize_all_liftAt_one_self {L : Language} {M : Type w} [L.Structure M] {α : Type u'} [Nonempty M] {n : } {φ : L.BoundedFormula α n} {v : αM} {xs : Fin nM} :
(liftAt 1 n φ).all.Realize v xs φ.Realize v xs
@[simp]
theorem FirstOrder.Language.LHom.realize_onBoundedFormula {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] {n : } (ψ : L.BoundedFormula α n) {v : αM} {xs : Fin nM} :
(φ.onBoundedFormula ψ).Realize v xs ψ.Realize v xs
def FirstOrder.Language.Formula.Realize {L : Language} {M : Type w} [L.Structure M] {α : Type u'} (φ : L.Formula α) (v : αM) :

A formula can be evaluated as true or false by giving values to each free variable.

Equations
@[simp]
theorem FirstOrder.Language.Formula.realize_not {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {φ : L.Formula α} {v : αM} :
@[simp]
theorem FirstOrder.Language.Formula.realize_bot {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {v : αM} :
@[simp]
theorem FirstOrder.Language.Formula.realize_top {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {v : αM} :
@[simp]
theorem FirstOrder.Language.Formula.realize_inf {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {φ ψ : L.Formula α} {v : αM} :
(φψ).Realize v φ.Realize v ψ.Realize v
@[simp]
theorem FirstOrder.Language.Formula.realize_imp {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {φ ψ : L.Formula α} {v : αM} :
(φ.imp ψ).Realize v φ.Realize vψ.Realize v
@[simp]
theorem FirstOrder.Language.Formula.realize_rel {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {v : αM} {k : } {R : L.Relations k} {ts : Fin kL.Term α} :
(R.formula ts).Realize v Structure.RelMap R fun (i : Fin k) => Term.realize v (ts i)
@[simp]
theorem FirstOrder.Language.Formula.realize_rel₁ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {v : αM} {R : L.Relations 1} {t : L.Term α} :
@[simp]
theorem FirstOrder.Language.Formula.realize_rel₂ {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {v : αM} {R : L.Relations 2} {t₁ t₂ : L.Term α} :
@[simp]
theorem FirstOrder.Language.Formula.realize_sup {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {φ ψ : L.Formula α} {v : αM} :
(φψ).Realize v φ.Realize v ψ.Realize v
@[simp]
theorem FirstOrder.Language.Formula.realize_iff {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {φ ψ : L.Formula α} {v : αM} :
(φ.iff ψ).Realize v (φ.Realize v ψ.Realize v)
@[simp]
theorem FirstOrder.Language.Formula.realize_relabel {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {φ : L.Formula α} {g : αβ} {v : βM} :
(relabel g φ).Realize v φ.Realize (v g)
theorem FirstOrder.Language.Formula.realize_relabel_sumInr {L : Language} {M : Type w} [L.Structure M] {n : } (φ : L.Formula (Fin n)) {v : EmptyM} {x : Fin nM} :
@[deprecated FirstOrder.Language.Formula.realize_relabel_sumInr (since := "2025-02-21")]
theorem FirstOrder.Language.Formula.realize_relabel_sum_inr {L : Language} {M : Type w} [L.Structure M] {n : } (φ : L.Formula (Fin n)) {v : EmptyM} {x : Fin nM} :

Alias of FirstOrder.Language.Formula.realize_relabel_sumInr.

@[simp]
theorem FirstOrder.Language.Formula.realize_equal {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {t₁ t₂ : L.Term α} {x : αM} :
(t₁.equal t₂).Realize x Term.realize x t₁ = Term.realize x t₂
@[simp]
theorem FirstOrder.Language.Formula.realize_graph {L : Language} {M : Type w} [L.Structure M] {n : } {f : L.Functions n} {x : Fin nM} {y : M} :
theorem FirstOrder.Language.Formula.boundedFormula_realize_eq_realize {L : Language} {M : Type w} [L.Structure M] {α : Type u'} (φ : L.Formula α) (x : αM) (y : Fin 0M) :
@[simp]
theorem FirstOrder.Language.LHom.realize_onFormula {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Formula α) {v : αM} :
(φ.onFormula ψ).Realize v ψ.Realize v
@[simp]
theorem FirstOrder.Language.LHom.setOf_realize_onFormula {L : Language} {L' : Language} {M : Type w} [L.Structure M] {α : Type u'} [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Formula α) :

A sentence can be evaluated as true or false in a structure.

Equations

A sentence can be evaluated as true or false in a structure.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem FirstOrder.Language.Formula.realize_equivSentence_symm_con {L : Language} (M : Type w) [L.Structure M] {α : Type u'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] (φ : (L.withConstants α).Sentence) :
((equivSentence.symm φ).Realize fun (a : α) => (L.con a)) M φ
@[simp]
theorem FirstOrder.Language.Formula.realize_equivSentence {L : Language} (M : Type w) [L.Structure M] {α : Type u'} [(L.withConstants α).Structure M] [(L.lhomWithConstants α).IsExpansionOn M] (φ : L.Formula α) :
M equivSentence φ φ.Realize fun (a : α) => (L.con a)
theorem FirstOrder.Language.Formula.realize_equivSentence_symm {L : Language} (M : Type w) [L.Structure M] {α : Type u'} (φ : (L.withConstants α).Sentence) (v : αM) :
@[simp]
theorem FirstOrder.Language.LHom.realize_onSentence {L : Language} {L' : Language} (M : Type w) [L.Structure M] [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Sentence) :
M φ.onSentence ψ M ψ

The complete theory of a structure M is the set of all sentences M satisfies.

Equations

Two structures are elementarily equivalent when they satisfy the same sentences.

Equations

Two structures are elementarily equivalent when they satisfy the same sentences.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem FirstOrder.Language.elementarilyEquivalent_iff {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] :
L.ElementarilyEquivalent M N ∀ (φ : L.Sentence), M φ N φ

A model of a theory is a structure in which every sentence is realized as true.

Instances

    A model of a theory is a structure in which every sentence is realized as true.

    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem FirstOrder.Language.Theory.model_iff {L : Language} {M : Type w} [L.Structure M] (T : L.Theory) :
    M T φT, M φ
    theorem FirstOrder.Language.Theory.realize_sentence_of_mem {L : Language} {M : Type w} [L.Structure M] (T : L.Theory) [M T] {φ : L.Sentence} (h : φ T) :
    M φ
    @[simp]
    theorem FirstOrder.Language.LHom.onTheory_model {L : Language} {L' : Language} {M : Type w} [L.Structure M] [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (T : L.Theory) :
    M φ.onTheory T M T
    theorem FirstOrder.Language.Theory.Model.mono {L : Language} {M : Type w} [L.Structure M] {T T' : L.Theory} (_h : M T') (hs : T T') :
    M T
    theorem FirstOrder.Language.Theory.Model.union {L : Language} {M : Type w} [L.Structure M] {T T' : L.Theory} (h : M T) (h' : M T') :
    M T T'
    @[simp]
    theorem FirstOrder.Language.Theory.model_union_iff {L : Language} {M : Type w} [L.Structure M] {T T' : L.Theory} :
    M T T' M T M T'
    @[simp]
    theorem FirstOrder.Language.Theory.model_insert_iff {L : Language} {M : Type w} [L.Structure M] {T : L.Theory} {φ : L.Sentence} :
    M insert φ T M φ M T
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_alls {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } {φ : L.BoundedFormula α n} {v : αM} :
    φ.alls.Realize v ∀ (xs : Fin nM), φ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_exs {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } {φ : L.BoundedFormula α n} {v : αM} :
    φ.exs.Realize v ∃ (xs : Fin nM), φ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.Formula.realize_iAlls {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [Finite β] {φ : L.Formula (α β)} {v : αM} :
    (iAlls β φ).Realize v ∀ (i : βM), φ.Realize fun (a : α β) => Sum.elim v i a
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_iAlls {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} [Finite β] {φ : L.Formula (α β)} {v : αM} {v' : Fin 0M} :
    Realize (Formula.iAlls β φ) v v' ∀ (i : βM), φ.Realize fun (a : α β) => Sum.elim v i a
    @[simp]
    theorem FirstOrder.Language.Formula.realize_iExs {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {γ : Type u_3} [Finite γ] {φ : L.Formula (α γ)} {v : αM} :
    (iExs γ φ).Realize v ∃ (i : γM), φ.Realize (Sum.elim v i)
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_iExs {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {γ : Type u_3} [Finite γ] {φ : L.Formula (α γ)} {v : αM} {v' : Fin 0M} :
    Realize (Formula.iExs γ φ) v v' ∃ (i : γM), φ.Realize (Sum.elim v i)
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_toFormula {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {n : } (φ : L.BoundedFormula α n) (v : α Fin nM) :
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_iSup {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {n : } [Finite β] {f : βL.BoundedFormula α n} {v : αM} {v' : Fin nM} :
    (iSup f).Realize v v' ∃ (b : β), (f b).Realize v v'
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_iInf {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {β : Type v'} {n : } [Finite β] {f : βL.BoundedFormula α n} {v : αM} {v' : Fin nM} :
    (iInf f).Realize v v' ∀ (b : β), (f b).Realize v v'
    @[simp]
    theorem FirstOrder.Language.Formula.realize_iExsUnique {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {γ : Type u_3} [Finite γ] {φ : L.Formula (α γ)} {v : αM} :
    (iExsUnique γ φ).Realize v ∃! i : γM, φ.Realize (Sum.elim v i)
    @[simp]
    theorem FirstOrder.Language.BoundedFormula.realize_iExsUnique {L : Language} {M : Type w} [L.Structure M] {α : Type u'} {γ : Type u_3} [Finite γ] {φ : L.Formula (α γ)} {v : αM} {v' : Fin 0M} :
    Realize (Formula.iExsUnique γ φ) v v' ∃! i : γM, φ.Realize (Sum.elim v i)
    @[simp]
    theorem FirstOrder.Language.StrongHomClass.realize_boundedFormula {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {α : Type u'} {n : } {F : Type u_4} [EquivLike F M N] [L.StrongHomClass F M N] (g : F) (φ : L.BoundedFormula α n) {v : αM} {xs : Fin nM} :
    φ.Realize (g v) (g xs) φ.Realize v xs
    @[simp]
    theorem FirstOrder.Language.StrongHomClass.realize_formula {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {α : Type u'} {F : Type u_4} [EquivLike F M N] [L.StrongHomClass F M N] (g : F) (φ : L.Formula α) {v : αM} :
    φ.Realize (g v) φ.Realize v
    theorem FirstOrder.Language.StrongHomClass.realize_sentence {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {F : Type u_4} [EquivLike F M N] [L.StrongHomClass F M N] (g : F) (φ : L.Sentence) :
    M φ N φ
    theorem FirstOrder.Language.StrongHomClass.theory_model {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {T : L.Theory} {F : Type u_4} [EquivLike F M N] [L.StrongHomClass F M N] (g : F) [M T] :
    N T
    @[simp]
    theorem FirstOrder.Language.Relations.realize_total {L : Language} {M : Type w} [L.Structure M] {r : L.Relations 2} :
    M r.total Total fun (x y : M) => Structure.RelMap r ![x, y]
    theorem FirstOrder.Language.model_distinctConstantsTheory (L : Language) {α : Type u'} {M : Type w} [(L.withConstants α).Structure M] (s : Set α) :
    M L.distinctConstantsTheory s Set.InjOn (fun (i : α) => (L.con i)) s
    theorem FirstOrder.Language.ElementarilyEquivalent.theory_model {L : Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {T : L.Theory} [MT : M T] (h : L.ElementarilyEquivalent M N) :
    N T