Semantics of first-order logic #
This file defines the semantics of first-order logic (structures, models, satisfiability, etc.).
A term is interpreted by a structures and an assignment of type Vec M n.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A formula is satisfied by a structure and an assignment if it is interpreted as true.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
FirstOrder.Language.satisfy_true
{L : Language}
{M : Type u}
[L.HasStructure M]
{n : ℕ}
{ρ : Vec M n}
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
FirstOrder.Language.Structure.instHasStructureDom
{L : Language}
{M : L.Structure}
:
L.HasStructure M.Dom
Equations
- FirstOrder.Language.Structure.instHasStructureDom = { interpFunc := fun {m : ℕ} => M.interpFunc, interpRel := fun {m : ℕ} => M.interpRel }
@[reducible, inline]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Γ is satisfiable if there is a structure and an assignment that satisfy all formulas in Γ.
The assignment is not needed for Theory (see Theory.satisfiable_iff).
Equations
Instances For
theorem
FirstOrder.Language.Satisfiable.weaken
{L : Language}
{n : ℕ}
{Γ Δ : L.FormulaSet n}
:
Γ ⊆ Δ → Satisfiable.{u} Δ → Satisfiable.{u} Γ
class
FirstOrder.Language.Theory.IsModel
{L : Language}
(T : L.Theory)
(M : Type u)
[L.HasStructure M]
:
A structure M is a model of theory T if it satisfies all the axioms of T.
Instances
Equations
- FirstOrder.Language.Theory.Model.instCoeOutStructure = { coe := fun (x : T.Model) => x.toStructure }
@[reducible, inline]
abbrev
FirstOrder.Language.Theory.Model.of
{L : Language}
{T : L.Theory}
(M : Type u)
[L.HasStructure M]
[T.IsModel M]
:
T.Model
Equations
- FirstOrder.Language.Theory.Model.of M = { toStructure := FirstOrder.Language.Structure.of M, satisfy_theory := ⋯ }
Instances For
def
FirstOrder.Language.Satisfiable.of_model
{L : Language}
{T : L.Theory}
(M : Type u)
[L.HasStructure M]
[T.IsModel M]
:
Equations
- ⋯ = ⋯
Instances For
@[simp]
theorem
FirstOrder.Language.mem_theory
{L : Language}
{M : Type u}
[L.HasStructure M]
{p : L.Sentence}
:
theorem
FirstOrder.Language.theory_satisfiable
(L : Language)
(M : Type u)
[L.HasStructure M]
:
Satisfiable.{u} (L.theory M)
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
FirstOrder.Language.Entails.down
{L : Language}
{n : ℕ}
{p : L.Formula n}
{Γ : L.FormulaSet n}
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
structure
FirstOrder.Language.Structure.Embedding
{L : Language}
(M : L.Structure)
(N : L.Structure)
extends M.Dom ↪ N.Dom :
Type (max u_1 u_2)
- on_func {m : ℕ} (f : L.Func m) (v : Vec M.Dom m) : self.toEmbedding (HasStructure.interpFunc f v) = HasStructure.interpFunc f (⇑self.toEmbedding ∘ v)
- on_rel {m : ℕ} (r : L.Rel m) (v : Vec M.Dom m) : HasStructure.interpRel r v ↔ HasStructure.interpRel r (⇑self.toEmbedding ∘ v)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- FirstOrder.Language.Structure.Embedding.refl = { toEmbedding := Function.Embedding.refl M.Dom, on_func := ⋯, on_rel := ⋯ }
Instances For
theorem
FirstOrder.Language.Structure.Embedding.is_elementary_iff
{L : Language}
{M : L.Structure}
{N : L.Structure}
(e : M ↪ᴹ N)
:
Tarski–Vaught test.
structure
FirstOrder.Language.Structure.Isomorphism
{L : Language}
(M : L.Structure)
(N : L.Structure)
extends M.Dom ≃ N.Dom :
Type (max u_1 u_2)
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
- on_func {m : ℕ} (f : L.Func m) (v : Vec M.Dom m) : self.toEquiv (HasStructure.interpFunc f v) = HasStructure.interpFunc f (⇑self.toEquiv ∘ v)
- on_rel {m : ℕ} (r : L.Rel m) (v : Vec M.Dom m) : HasStructure.interpRel r v ↔ HasStructure.interpRel r (⇑self.toEquiv ∘ v)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- FirstOrder.Language.Structure.Isomorphism.refl = { toEquiv := Equiv.refl M.Dom, on_func := ⋯, on_rel := ⋯ }
Instances For
def
FirstOrder.Language.Structure.Isomorphism.toEmbedding
{L : Language}
{M : L.Structure}
{N : L.Structure}
(i : M ≃ᴹ N)
:
Equations
- i.toEmbedding = { toEmbedding := i.toEmbedding, on_func := ⋯, on_rel := ⋯ }