Documentation

Foundation.FirstOrder.Tarski.Basic

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.

class FFL.FirstOrder.Tarski.Structure (L : Language) (M : Type w) :
Type (max u w)

A first-order L-structure associates domain M with interpretations of function and relation symbols.

Instances
    theorem FFL.FirstOrder.Tarski.Structure.ext {L : Language} {M : Type w} {x y : Structure L M} (func : func = func) (rel : rel = rel) :
    x = y
    structure FFL.FirstOrder.Tarski.Struc (L : Language) :
    Type (max (u_1 + 1) u_2)

    An auxiliary structure that corresponds to a first-order L-structure with a nonempty domain.

    Instances For
      @[instance_reducible]
      Equations
      @[reducible, inline]
      abbrev FFL.FirstOrder.Tarski.Structure.lMap {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (S : Structure L₂ M) :
      Structure L₁ M
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem FFL.FirstOrder.Tarski.Structure.lMap_func {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : Structure L₂ M) {k : ℕ} {f : L₁.Func k} {v : Fin k → M} :
        func f v = func (φ.func f) v
        @[simp]
        theorem FFL.FirstOrder.Tarski.Structure.lMap_rel {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : Structure L₂ M) {k : ℕ} {r : L₁.Rel k} {v : Fin k → M} :
        rel r v ↔ rel (φ.rel r) v
        @[reducible, inline]
        abbrev FFL.FirstOrder.Tarski.Structure.ofEquiv {L : Language} {M : Type w} [Structure L M] {N : Type w'} (Θ : M ≃ N) :
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[reducible, inline]
          abbrev FFL.FirstOrder.Tarski.Structure.Decidable (L : Language) (M : Type w) [s : Structure L M] :
          Type (max w u)
          Equations
          Instances For
            @[reducible]
            Equations
            • s.toStruc = { Dom := M, nonempty := i, struc := s }
            Instances For
              @[instance_reducible]
              Equations
              @[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) :
                Semiterm L Empty n → M
                Equations
                Instances For
                  @[simp]
                  theorem FFL.FirstOrder.Semiterm.val_bvar {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} (x : Fin n) :
                  val b f (bvar x) = b x
                  @[simp]
                  theorem FFL.FirstOrder.Semiterm.val_fvar {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} (x : ξ) :
                  val b f (fvar x) = f x
                  @[simp]
                  theorem FFL.FirstOrder.Semiterm.val_func {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} {k : ℕ} (F : L.Func k) (v : Fin k → Semiterm L ξ n) :
                  val b f (func F v) = Tarski.Structure.func F (val b f ∘ v)
                  theorem FFL.FirstOrder.Semiterm.val_func' {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} {k : ℕ} (F : L.Func k) (v : Fin k → Semiterm L ξ n) :
                  val b f (func F v) = Tarski.Structure.func F fun (i : Fin k) => val b f (v i)
                  theorem FFL.FirstOrder.Semiterm.val_rew {n₁ n₂ : ℕ} {ξ₁ : Type u_1} {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b₂ : Fin n₂ → M} {f₂ : ξ₂ → M} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (t : Semiterm L ξ₁ n₁) :
                  val b₂ f₂ (ω t) = val (val b₂ f₂ ∘ ⇑ω ∘ bvar) (val b₂ f₂ ∘ ⇑ω ∘ fvar) t
                  theorem FFL.FirstOrder.Semiterm.val_rewrite {n : ℕ} {ξ₁ : Type u_2} {ξ₂ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f₂ : ξ₂ → M} (f : ξ₁ → Semiterm L ξ₂ n) (t : Semiterm L ξ₁ n) :
                  val b f₂ ((Rew.rewrite f) t) = val b (val b f₂ ∘ f) t
                  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) :
                  val b f₂ ((Rew.rewriteMap f) t) = val b (f₂ ∘ f) t
                  theorem FFL.FirstOrder.Semiterm.val_substs {n₁ n₂ : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b₂ : Fin n₂ → M} {f : ξ → M} (w : Fin n₁ → Semiterm L ξ n₂) (t : Semiterm L ξ n₁) :
                  val b₂ f ((Rew.subst w) t) = val (val b₂ f ∘ w) f t
                  @[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) :
                  val (a :> b) f (Rew.bShift t) = val b f t
                  theorem FFL.FirstOrder.Semiterm.val_bShift' {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {f : ξ → M} (b : Fin (n + 1) → M) (t : Semiterm L ξ n) :
                  val b f (Rew.bShift t) = val (fun (x : Fin n) => b x.succ) f t
                  @[simp]
                  theorem FFL.FirstOrder.Semiterm.val_emb {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} {o : Type v'} [i : IsEmpty o] (t : Semiterm L o n) :
                  val b f (Rew.emb t) = val b (fun (a : o) => i.elim a) t
                  @[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₁) :
                  val b₂ f ((Rew.castLE h) t) = val (fun (x : Fin n₁) => b₂ (Fin.castLE h x)) f t
                  theorem FFL.FirstOrder.Semiterm.val_embSubsts {n : ℕ} {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} {f : ξ → M} {k : ℕ} (w : Fin k → Semiterm L ξ n) (t : Semiterm L Empty k) :
                  val b f ((Rew.embSubsts w) t) = valb (val b f ∘ w) t
                  theorem FFL.FirstOrder.Semiterm.val_lMap {n : ℕ} {ξ : Type u_3} {L₁ : Language} {L₂ : Language} {M : Type w} (φ : L₁.Hom L₂) (s₂ : Tarski.Structure L₂ M) (b : Fin n → M) (f : ξ → M) {t : Semiterm L₁ ξ n} :
                  val b f (lMap φ t) = val b f t
                  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) :
                  val b f (Rew.shift t) = val b (f ∘ Nat.succ) t
                  theorem FFL.FirstOrder.Semiterm.val_free {n : ℕ} {L : Language} {M : Type w} {s : Tarski.Structure L M} {b : Fin n → M} (f : ℕ → M) (a : M) (t : SyntacticSemiterm L (n + 1)) :
                  val b (a :>ₙ f) (Rew.free t) = val (b <: a) f t
                  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) :
                  val (b <: a) f (Rew.fix t) = val b (a :>ₙ f) t
                  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') :
                  val b f t = val b f' t
                  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 = ∅) :
                  val b f t = valb b (t.toEmpty h)
                  theorem FFL.FirstOrder.Tarski.Structure.ofEquiv_func {M : Type u_2} {N : Type u_1} {L : Language} [s : Structure L M] (Θ : M ≃ N) {k : ℕ} (f : L.Func k) (v : Fin k → N) :
                  func f v = Θ (func f (⇑Θ.symm ∘ v))
                  theorem FFL.FirstOrder.Tarski.Structure.ofEquiv_val {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) (t : Semiterm L ξ n) :
                  Semiterm.val b f t = Θ (Semiterm.val (⇑Θ.symm ∘ b) (⇑Θ.symm ∘ f) t)
                  @[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) :
                  EvalAux s f b (∼φ) = ¬EvalAux s f b φ
                  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
                  Instances For
                    @[reducible, inline]
                    abbrev FFL.FirstOrder.Semiformula.Evalf {ξ : Type u_1} {L : Language} {M : Type w} [s : Tarski.Structure L M] (f : ξ → M) :
                    Equations
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      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_rel {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → Semiterm L ξ n} :
                        theorem FFL.FirstOrder.Semiformula.eval_rel' {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → Semiterm L ξ n} :
                        (Eval b f) (rel r v) ↔ Tarski.Structure.rel r fun (i : Fin k) => Semiterm.val b f (v i)
                        @[simp]
                        theorem FFL.FirstOrder.Semiformula.eval_nrel {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → Semiterm L ξ n} :
                        theorem FFL.FirstOrder.Semiformula.eval_nrel' {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → Semiterm L ξ n} :
                        (Eval b f) (nrel r v) ↔ ¬Tarski.Structure.rel r fun (i : Fin k) => Semiterm.val b f (v i)
                        @[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)} :
                        (Eval b f) (∀¹ φ) ↔ ∀ (x : M), (Eval (x :> b) f) φ
                        @[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)} :
                        (Eval b f) (∃¹ φ) ↔ ∃ (x : M), (Eval (x :> b) f) φ
                        @[simp]
                        theorem FFL.FirstOrder.Semiformula.eval_ball {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {φ ψ : Semiformula L ξ (n + 1)} :
                        (Eval b f) (∀¹[φ] ψ) ↔ ∀ (x : M), (Eval (x :> b) f) φ → (Eval (x :> b) f) ψ
                        @[simp]
                        theorem FFL.FirstOrder.Semiformula.eval_bexs {ξ : Type u_1} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {φ ψ : Semiformula L ξ (n + 1)} :
                        (Eval b f) (∃¹[φ] ψ) ↔ ∃ (x : M), (Eval (x :> b) f) φ ⋏ (Eval (x :> b) f) ψ
                        @[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} :
                        (Eval b f) (∀¹* φ) ↔ ∀ (e' : Fin k → M), (Eval e' f) φ
                        @[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} :
                        (Eval b f) (∃¹* φ) ↔ ∃ (e' : Fin k → M), (Eval e' f) φ
                        @[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)} :
                        (Eval b f) (∀¹^[k] φ) ↔ ∀ (e' : Fin k → M), (Eval (Matrix.appendr e' b) f) φ
                        @[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)} :
                        (Eval b f) (∃¹^[k] φ) ↔ ∃ (e' : Fin k → M), (Eval (Matrix.appendr e' b) f) φ
                        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₁) :
                        (Eval b f) ((Rewriting.app (Rew.map θ η)) φ) ↔ (Eval (b ∘ θ) (f ∘ η)) φ
                        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) :
                        (Eval b f₂) ((Rewriting.app (Rew.rewriteMap f)) φ) ↔ (Eval b fun (x : ξ₁) => f₂ (f x)) φ
                        @[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) :
                        (Eval (x :> b) f) ((Rewriting.app Rew.bShift) φ) ↔ (Eval b f) φ
                        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) :
                        (Eval e' f) ((Rewriting.app Rew.bShift) φ) ↔ (Eval (fun (x : Fin n) => e' x.succ) f) φ
                        @[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) :
                        (Eval b f) (φ ⇜ w) ↔ (Eval (Semiterm.val b f ∘ w) f) φ
                        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) :
                        (Eval (u :> w :> e) f) (φ ⇜ (Semiterm.bvar 0 :> fun (x : Fin n) => Semiterm.bvar x.succ.succ)) ↔ (Eval (u :> e) f) φ
                        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) :
                        (Eval (u :> x :> w :> e) f) (φ ⇜ (Semiterm.bvar 0 :> Semiterm.bvar 1 :> fun (x : Fin n) => Semiterm.bvar x.succ.succ.succ)) ↔ (Eval (u :> x :> e) f) φ
                        @[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_empty {ξ : Type u_2} {L : Language} {M : Type w} {s : Tarski.Structure L M} {n : ℕ} {b : Fin n → M} {f : ξ → M} {o : Type u_1} [h : IsEmpty o] (φ : Formula L o) :
                        (Eval b f) ((Rewriting.app Rew.empty) φ) ↔ (Eval ![] fun (a : o) => h.elim a) φ
                        @[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) :
                        (Eval b f) ((Rewriting.app (Rew.embSubsts w)) σ) ↔ (Evalb (Semiterm.val b f ∘ w)) σ
                        @[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)) :
                        (Eval b (a :>ₙ f)) ((Rewriting.app Rew.free) φ) ↔ (Eval (b <: a) f) φ
                        @[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) :
                        (Eval b (a :>ₙ f)) ((Rewriting.app Rew.shift) φ) ↔ (Eval b f) φ
                        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') :
                        (Eval b f) φ ↔ (Eval b 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} :
                        (Eval b f) φ ↔ (Evalb b) (φ.toEmpty hp)
                        @[simp]
                        theorem FFL.FirstOrder.Semiformula.eval_univCl' {L : Language} {M : Type w} {s : Tarski.Structure L M} {f : ℕ → M} (φ : Proposition L) :
                        (Evalf f) (univCl' φ) ↔ ∀ (g : ℕ → M), (Evalf g) φ
                        @[simp]
                        theorem FFL.FirstOrder.Semiformula.eval_univCl {L : Language} {M : Type w} {s : Tarski.Structure L M} [Nonempty M] (φ : Proposition L) :
                        (Realize M) (univCl φ) ↔ ∀ (f : ℕ → M), (Evalf f) φ
                        @[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) :
                        (Eval v fun (x : M) => φ.enumerateFVar (φ.idxOfFVar x)) φ ↔ (Eval v id) φ
                        theorem FFL.FirstOrder.Tarski.Structure.ofEquiv_rel {M : Type u_2} {N : Type u_1} {L : Language} [s : Structure L M] (Θ : M ≃ N) {k : ℕ} (r : L.Rel k) (v : Fin k → N) :
                        rel r v ↔ rel r (⇑Θ.symm ∘ v)
                        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} :
                        (Semiformula.Eval b f) φ ↔ (Semiformula.Eval (⇑Θ.symm ∘ b) (⇑Θ.symm ∘ f)) φ
                        theorem FFL.FirstOrder.Tarski.Structure.evalf_ofEquiv_iff {M : Type u_3} {N : Type u_2} {L : Language} [s : Structure L M] (Θ : M ≃ N) {ξ : Type u_1} {f : ξ → N} {φ : Formula L ξ} :
                        @[reducible, inline]

                        Standard structure inferred from a given domain

                        Equations
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[reducible, inline]
                            abbrev FFL.FirstOrder.Consequence {L : Language} (T : Theory L) (σ : Sentence L) :
                            Equations
                            Instances For

                              Semantic entailment, also known as logical consequence.

                              Equations
                              Instances For
                                theorem FFL.FirstOrder.models_theory_iff {L : Language} {M : Type u_1} [Nonempty M] [s : Tarski.Structure L M] {T : Theory L} :
                                M↓[L] ⊧* T ↔ ∀ φ ∈ T, M↓[L] ⊧ φ
                                theorem FFL.FirstOrder.models_of_mem {L : Language} {M : Type u_1} [Nonempty M] [s : Tarski.Structure L M] {T : Theory L} [M↓[L] ⊧* T] {φ : Sentence L} (h : φ ∈ T) :
                                M↓[L] ⊧ φ
                                theorem FFL.FirstOrder.Theory.models {L : Language} (M : Type u_1) [Nonempty M] [s : Tarski.Structure L M] (T : Theory L) [M↓[L] ⊧* T] {σ : Sentence L} (hσ : σ ∈ T) :
                                M↓[L] ⊧ σ
                                theorem FFL.FirstOrder.consequence_iff {L : Language} {T : Theory L} {φ : Sentence L} :
                                T ⊨[Tarski.Struc L] φ ↔ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Tarski.Structure L M], M↓[L] ⊧* T → M↓[L] ⊧ φ
                                theorem FFL.FirstOrder.consequence_iff' {L : Language} {T : Theory L} {φ : Sentence L} :
                                T ⊨[Tarski.Struc L] φ ↔ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Tarski.Structure L M] [M↓[L] ⊧* T], M↓[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] ⊧ φ
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  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} :
                                  (Eval b f) ((lMap Φ) φ) ↔ (Eval b f) φ
                                  theorem FFL.FirstOrder.Semiformula.models_lMap {L₁ : Language} {L₂ : Language} {Φ : L₁.Hom L₂} {M : Type u} {s₂ : Tarski.Structure L₂ M} [Nonempty M] {σ : Sentence L₁} :
                                  s₂.toStruc ⊧ (lMap Φ) σ ↔ (Tarski.Structure.lMap Φ s₂).toStruc ⊧ σ
                                  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.models_of_ss {L : Language} {M : Type u_1} [Nonempty M] [Tarski.Structure L M] {T U : Theory L} (h : M↓[L] ⊧* U) (ss : T ⊆ U) :
                                  theorem FFL.FirstOrder.models_of_le {L : Language} {M : Type u_1} [Nonempty M] [Tarski.Structure L M] {T₁ T₂ : Theory L} (h : M↓[L] ⊧* T₂) (le : T₁ ⊆ T₂) :
                                  M↓[L] ⊧* T₁
                                  instance FFL.FirstOrder.models_theory_sup {L : Language} {M : Type u_1} [Nonempty M] [Tarski.Structure L M] (T₁ T₂ : Theory L) [M↓[L] ⊧* T₁] [M↓[L] ⊧* T₂] :
                                  M↓[L] ⊧* T₁ ∪ T₂
                                  theorem FFL.FirstOrder.models_of_mem_theory {L : Language} {M : Type u_1} [Nonempty M] [Tarski.Structure L M] {φ : Sentence L} {T : Theory L} [h : M↓[L] ⊧* T] (hf : φ ∈ T) :
                                  M↓[L] ⊧ φ
                                  @[reducible, inline]
                                  Equations
                                  Instances For
                                    @[simp]