Model-theoretic semantics of first-order classical logic #
This file defines the structure and the evaluation of terms and formulas by Tarski's truth definition.
@[reducible, inline]
Equations
Instances For
@[instance_reducible]
Equations
@[reducible, inline]
abbrev
FFL.FirstOrder.Tarski.Structure.Decidable
(L : Language)
(M : Type w)
[s : Structure L M]
:
Type (max w u)
Equations
- FFL.FirstOrder.Tarski.Structure.Decidable L M = ({k : ℕ} → (r : L.Rel k) → (v : Fin k → M) → Decidable (FFL.FirstOrder.Tarski.Structure.rel r v))
Instances For
@[instance_reducible]
noncomputable instance
FFL.FirstOrder.Tarski.Structure.instDecidable
{L : Language}
{M : Type w}
[Structure L M]
:
@[instance_reducible]
Equations
- s.instStructureDom = s.struc
def
FFL.FirstOrder.Semiterm.val
{n : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
[s : Tarski.Structure L M]
(b : Fin n → M)
(f : ξ → M)
:
Semiterm L ξ n → M
Equations
- FFL.FirstOrder.Semiterm.val b f (FFL.FirstOrder.Semiterm.bvar x_1) = b x_1
- FFL.FirstOrder.Semiterm.val b f (FFL.FirstOrder.Semiterm.fvar x_1) = f x_1
- FFL.FirstOrder.Semiterm.val b f (FFL.FirstOrder.Semiterm.func F v) = FFL.FirstOrder.Tarski.Structure.func F fun (i : Fin arity) => FFL.FirstOrder.Semiterm.val b f (v i)
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.Semiterm.valb
{n : ℕ}
{L : Language}
{M : Type w}
[s : Tarski.Structure L M]
(b : Fin n → M)
(t : ClosedSemiterm L n)
:
M
Equations
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.Semiterm.valf
{L : Language}
{M : Type w}
[s : Tarski.Structure L M]
{n : ℕ}
(b : Fin n → M)
:
Instances For
theorem
FFL.FirstOrder.Semiterm.val_rewriteMap
{n : ℕ}
{ξ₁ : Type u_1}
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
{f₂ : ξ₂ → M}
(f : ξ₁ → ξ₂)
(t : Semiterm L ξ₁ n)
:
@[simp]
theorem
FFL.FirstOrder.Semiterm.val_bShift
{n : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
{f : ξ → M}
(a : M)
(t : Semiterm L ξ n)
:
@[simp]
theorem
FFL.FirstOrder.Semiterm.val_castLE
{n₁ n₂ : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b₂ : Fin n₂ → M}
{f : ξ → M}
(h : n₁ ≤ n₂)
(t : Semiterm L ξ n₁)
:
theorem
FFL.FirstOrder.Semiterm.val_shift
{n : ℕ}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
(f : ℕ → M)
(t : SyntacticSemiterm L n)
:
theorem
FFL.FirstOrder.Semiterm.val_fix
{n : ℕ}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
(f : ℕ → M)
(a : M)
(t : SyntacticSemiterm L n)
:
theorem
FFL.FirstOrder.Semiterm.val_eq_of_funEqOn
{n : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
{f f' : ξ → M}
[DecidableEq ξ]
(t : Semiterm L ξ n)
(h : Function.funEqOn t.FVar? f f')
:
theorem
FFL.FirstOrder.Semiterm.val_toEmpty
{n : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b : Fin n → M}
{f : ξ → M}
[DecidableEq ξ]
(t : Semiterm L ξ n)
(h : t.freeVariables = ∅)
:
def
FFL.FirstOrder.Semiformula.EvalAux
{ξ : Type u_1}
{L : Language}
{M : Type w}
(s : Tarski.Structure L M)
(f : ξ → M)
{n : ℕ}
(b : Fin n → M)
:
Semiformula L ξ n → Prop
Equations
- FFL.FirstOrder.Semiformula.EvalAux s f b (FFL.FirstOrder.Semiformula.rel φ v) = FFL.FirstOrder.Tarski.Structure.rel φ fun (i : Fin arity) => FFL.FirstOrder.Semiterm.val b f (v i)
- FFL.FirstOrder.Semiformula.EvalAux s f b (FFL.FirstOrder.Semiformula.nrel φ v) = ¬FFL.FirstOrder.Tarski.Structure.rel φ fun (i : Fin arity) => FFL.FirstOrder.Semiterm.val b f (v i)
- FFL.FirstOrder.Semiformula.EvalAux s f b FFL.FirstOrder.Semiformula.verum = True
- FFL.FirstOrder.Semiformula.EvalAux s f b FFL.FirstOrder.Semiformula.falsum = False
- FFL.FirstOrder.Semiformula.EvalAux s f b (φ.and ψ) = (FFL.FirstOrder.Semiformula.EvalAux s f b φ ∧ FFL.FirstOrder.Semiformula.EvalAux s f b ψ)
- FFL.FirstOrder.Semiformula.EvalAux s f b (φ.or ψ) = (FFL.FirstOrder.Semiformula.EvalAux s f b φ ∨ FFL.FirstOrder.Semiformula.EvalAux s f b ψ)
- FFL.FirstOrder.Semiformula.EvalAux s f b φ.all = ∀ (x : M), FFL.FirstOrder.Semiformula.EvalAux s f (x :> b) φ
- FFL.FirstOrder.Semiformula.EvalAux s f b φ.exs = ∃ (x : M), FFL.FirstOrder.Semiformula.EvalAux s f (x :> b) φ
Instances For
@[simp]
theorem
FFL.FirstOrder.Semiformula.EvalAux_neg
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
(φ : Semiformula L ξ n)
:
def
FFL.FirstOrder.Semiformula.Eval
{ξ : Type u_1}
{L : Language}
{M : Type w}
{n : ℕ}
[s : Tarski.Structure L M]
(b : Fin n → M)
(f : ξ → M)
:
Evaluation of semiformula with variation of free-variables f and bounded-variables b
Equations
- FFL.FirstOrder.Semiformula.Eval b f = { toTr := FFL.FirstOrder.Semiformula.EvalAux s f b, map_top' := ⋯, map_bot' := ⋯, map_neg' := ⋯, map_imply' := ⋯, map_and' := ⋯, map_or' := ⋯ }
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.Semiformula.Evalf
{ξ : Type u_1}
{L : Language}
{M : Type w}
[s : Tarski.Structure L M]
(f : ξ → M)
:
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.Semiformula.Evalb
{L : Language}
{M : Type w}
{n : ℕ}
[s : Tarski.Structure L M]
(b : Fin n → M)
:
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.Semiformula.Realize
{L : Language}
(M : Type u_1)
[s : Tarski.Structure L M]
:
Instances For
@[reducible, inline]
Instances For
theorem
FFL.FirstOrder.Semiformula.Eval.of_eq
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b e' : Fin n → M}
{f f' : ξ → M}
{φ : Semiformula L ξ n}
(h : (Eval b f) φ)
(he : b = e')
(hf : f = f')
:
(Eval e' f') φ
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_all
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
{φ : Semiformula L ξ (n + 1)}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_ex
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
{φ : Semiformula L ξ (n + 1)}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_allClosure
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ξ → M}
{k : ℕ}
{b : Fin 0 → M}
{φ : Semiformula L ξ k}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_exsClosure
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ξ → M}
{k : ℕ}
{b : Fin 0 → M}
{φ : Semiformula L ξ k}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_allItr
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{f : ξ → M}
{k : ℕ}
{b : Fin n → M}
{φ : Semiformula L ξ (n + k)}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_exsItr
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{f : ξ → M}
{k : ℕ}
{b : Fin n → M}
{φ : Semiformula L ξ (n + k)}
:
theorem
FFL.FirstOrder.Semiformula.eval_rew
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{ξ₁ : Type u_1}
{n₁ n₂ : ℕ}
{b₂ : Fin n₂ → M}
{f₂ : ξ₂ → M}
(ω : Rew L ξ₁ n₁ ξ₂ n₂)
(φ : Semiformula L ξ₁ n₁)
:
(Eval b₂ f₂) ((Rewriting.app ω) φ) ↔ (Eval (Semiterm.val b₂ f₂ ∘ ⇑ω ∘ Semiterm.bvar) (Semiterm.val b₂ f₂ ∘ ⇑ω ∘ Semiterm.fvar)) φ
theorem
FFL.FirstOrder.Semiformula.eval_rew_q
{n₂ : ℕ}
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b₂ : Fin n₂ → M}
{ξ₁ : Type u_1}
{n₁ : ℕ}
{x : M}
{f₂ : ξ₂ → M}
(ω : Rew L ξ₁ n₁ ξ₂ n₂)
(φ : Semiformula L ξ₁ (n₁ + 1))
:
(Eval (x :> b₂) f₂) ((Rewriting.app ω.q) φ) ↔ (Eval (x :> Semiterm.val b₂ f₂ ∘ ⇑ω ∘ Semiterm.bvar) (Semiterm.val b₂ f₂ ∘ ⇑ω ∘ Semiterm.fvar)) φ
theorem
FFL.FirstOrder.Semiformula.eval_map
{n₂ : ℕ}
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n₁ : ℕ}
{ξ₁ : Type u_1}
(θ : Fin n₁ → Fin n₂)
(η : ξ₁ → ξ₂)
(b : Fin n₂ → M)
(f : ξ₂ → M)
(φ : Semiformula L ξ₁ n₁)
:
theorem
FFL.FirstOrder.Semiformula.eval_rewrite
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f₂ : ξ₂ → M}
{ξ₁ : Type u_1}
(f : ξ₁ → Semiterm L ξ₂ n)
(φ : Semiformula L ξ₁ n)
:
(Eval b f₂) ((Rewriting.app (Rew.rewrite f)) φ) ↔ (Eval b fun (x : ξ₁) => Semiterm.val b f₂ (f x)) φ
theorem
FFL.FirstOrder.Semiformula.eval_rewriteMap
{ξ₂ : Type u_2}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f₂ : ξ₂ → M}
{ξ₁ : Type u_1}
(f : ξ₁ → ξ₂)
(φ : Semiformula L ξ₁ n)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_castLE
{n₂ : ℕ}
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{b₂ : Fin n₂ → M}
{f : ξ → M}
{n₁ : ℕ}
(h : n₁ ≤ n₂)
(φ : Semiformula L ξ n₁)
:
(Eval b₂ f) ((Rewriting.app (Rew.castLE h)) φ) ↔ (Eval (fun (x : Fin n₁) => b₂ (Fin.castLE h x)) f) φ
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_bShift
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
{x : M}
(φ : Semiformula L ξ n)
:
theorem
FFL.FirstOrder.Semiformula.eval_bShift'
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{f : ξ → M}
{e' : Fin (n + 1) → M}
(φ : Semiformula L ξ n)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_substs
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
{k : ℕ}
(w : Fin k → Semiterm L ξ n)
(φ : Semiformula L ξ k)
:
theorem
FFL.FirstOrder.Semiformula.eval_insert1
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ξ → M}
{n : ℕ}
(φ : Semiformula L ξ (n + 1))
(u w : M)
(e : Fin n → M)
:
theorem
FFL.FirstOrder.Semiformula.eval_insert2
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ξ → M}
{n : ℕ}
(φ : Semiformula L ξ (n + 2))
(u x w : M)
(e : Fin n → M)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_emb
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
(φ : Semiformula L Empty n)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_embSubsts
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
{ξ : Type u_1}
{f : ξ → M}
{k : ℕ}
(w : Fin k → Semiterm L ξ n)
(σ : Semisentence L k)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_free
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
(f : ℕ → M)
{a : M}
(φ : Semiproposition L (n + 1))
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_shift
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
{b : Fin n → M}
(f : ℕ → M)
{a : M}
(φ : Semiproposition L n)
:
theorem
FFL.FirstOrder.Semiformula.eval_iff_of_funEqOn
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f f' : ξ → M}
[DecidableEq ξ]
{n : ℕ}
{b : Fin n → M}
(φ : Semiformula L ξ n)
(h : Function.funEqOn φ.FVar? f f')
:
theorem
FFL.FirstOrder.Semiformula.eval_toEmpty
{ξ : Type u_1}
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ξ → M}
[DecidableEq ξ]
{n : ℕ}
{φ : Semiformula L ξ n}
(hp : φ.freeVariables = ∅)
{b : Fin n → M}
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_univCl'
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{f : ℕ → M}
(φ : Proposition L)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_univCl
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
[Nonempty M]
(φ : Proposition L)
:
@[simp]
theorem
FFL.FirstOrder.Semiformula.eval_enumerateFVar_idxOfFVar_eq_id
{L : Language}
{M : Type w}
{s : Tarski.Structure L M}
{n : ℕ}
[DecidableEq M]
[Inhabited M]
(φ : Semiformula L M n)
(v : Fin n → M)
:
theorem
FFL.FirstOrder.Tarski.Structure.eval_ofEquiv_iff
{M : Type u_3}
{N : Type u_2}
{L : Language}
[s : Structure L M]
(Θ : M ≃ N)
{n : ℕ}
{ξ : Type u_1}
{b : Fin n → N}
{f : ξ → N}
{φ : Semiformula L ξ n}
:
@[instance_reducible]
instance
FFL.FirstOrder.instSemanticsStrucSentence
{L : Language}
:
Semantics (Tarski.Struc L) (Sentence L)
Equations
- FFL.FirstOrder.instSemanticsStrucSentence = { Models := fun (str : FFL.FirstOrder.Tarski.Struc L) => ⇑(FFL.FirstOrder.Semiformula.Realize str.Dom) }
@[reducible, inline]
abbrev
FFL.FirstOrder.Language.str
(M : Type u_2)
[Nonempty M]
(L : Language)
[s : Tarski.Structure L M]
:
Standard structure inferred from a given domain
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
Equations
Instances For
Semantic entailment, also known as logical consequence.
Equations
- FFL.FirstOrder.«term_⊨_» = Lean.ParserDescr.trailingNode `FFL.FirstOrder.«term_⊨_» 45 46 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊨ ") (Lean.ParserDescr.cat `term 46))
Instances For
@[reducible, inline]
Equations
Instances For
theorem
FFL.FirstOrder.models_iff
{L : Language}
{M : Type u_1}
[Nonempty M]
[s : Tarski.Structure L M]
{σ : Sentence L}
:
theorem
FFL.FirstOrder.notModels_iff
{L : Language}
{M : Type u_1}
[Nonempty M]
[s : Tarski.Structure L M]
{σ : Sentence L}
:
theorem
FFL.FirstOrder.models_iff_proposition
{L : Language}
{M : Type u_1}
[Nonempty M]
[s : Tarski.Structure L M]
{φ : Proposition L}
:
theorem
FFL.FirstOrder.valid_iff
{L : Language}
{φ : Sentence L}
:
Semantics.Valid (Tarski.Struc L) φ ↔ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Tarski.Structure L M], M↓[L] ⊧ φ
theorem
FFL.FirstOrder.satisfiable_iff
{L : Language}
{T : Theory L}
:
Semantics.Satisfiable (Tarski.Struc L) T ↔ ∃ (M : Type v) (x : Nonempty M) (x_1 : Tarski.Structure L M), M↓[L] ⊧* T
theorem
FFL.FirstOrder.unsatisfiable_iff
{L : Language}
{T : Theory L}
:
¬Semantics.Satisfiable (Tarski.Struc L) T ↔ ∀ (M : Type v) (x : Nonempty M) (x_1 : Tarski.Structure L M), ¬M↓[L] ⊧* T
theorem
FFL.FirstOrder.satisfiable_intro
{L : Language}
{T : Theory L}
(M : Type v)
[Nonempty M]
[s : Tarski.Structure L M]
(h : M↓[L] ⊧* T)
:
noncomputable def
FFL.FirstOrder.ModelOfSat
{L : Language}
{T : Theory L}
(h : Semantics.Satisfiable (Tarski.Struc L) T)
:
Type v
Equations
Instances For
instance
FFL.FirstOrder.nonemptyModelOfSat
{L : Language}
{T : Theory L}
(h : Semantics.Satisfiable (Tarski.Struc L) T)
:
Nonempty (ModelOfSat h)
noncomputable def
FFL.FirstOrder.StructureModelOfSatAux
{L : Language}
{T : Theory L}
(h : Semantics.Satisfiable (Tarski.Struc L) T)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
noncomputable instance
FFL.FirstOrder.StructureModelOfSat
{L : Language}
{T : Theory L}
(h : Semantics.Satisfiable (Tarski.Struc L) T)
:
Tarski.Structure L (ModelOfSat h)
Equations
theorem
FFL.FirstOrder.ModelOfSat.models
{L : Language}
{T : Theory L}
(h : Semantics.Satisfiable (Tarski.Struc L) T)
:
theorem
FFL.FirstOrder.consequence_iff_unsatisfiable
{L : Language}
{T : Theory L}
{σ : Sentence L}
:
theorem
FFL.FirstOrder.Semiformula.eval_lMap
{ξ : Type u_1}
{L₁ : Language}
{L₂ : Language}
{Φ : L₁.Hom L₂}
{M : Type u}
{s₂ : Tarski.Structure L₂ M}
{n : ℕ}
{b : Fin n → M}
{f : ξ → M}
{φ : Semiformula L₁ ξ n}
:
theorem
FFL.FirstOrder.lMap_models_lMap
{L₁ L₂ : Language}
{Φ : L₁.Hom L₂}
{T : Theory L₁}
{σ : Sentence L₁}
(h : T ⊨[Tarski.Struc L₁] σ)
:
theorem
FFL.FirstOrder.Tarski.Structure.theory_satisfiable
{L : Language}
{M : Type v}
[Nonempty M]
[s : Structure L M]
:
Semantics.Satisfiable (Struc L) (theory L M)