Documentation

Foundation.FirstOrder.Basic.Semantics.Semantics

Semantics of first-order logic #

This file defines the structure and the evaluation of terms and formulas by Tarski's truth definition.

class LO.FirstOrder.Structure (L : Language) (M : Type w) :
Type (max u w)
  • func ⦃k : : L.Func k(Fin kM)M
  • rel ⦃k : : L.Rel k(Fin kM)Prop
Instances
    theorem LO.FirstOrder.Structure.ext {L : Language} {M : Type w} {x y : Structure L M} (func : func = func) (rel : rel = rel) :
    x = y
    structure LO.FirstOrder.Struc (L : Language) :
    Type (max (u_1 + 1) u_2)
    Instances For
      @[reducible, inline]
      abbrev LO.FirstOrder.SmallStruc (L : Language) :
      Type (u + 1)
      Equations
      Instances For
        def LO.FirstOrder.Structure.lMap {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (S : Structure L₂ M) :
        Structure L₁ M
        Equations
        Instances For
          @[simp]
          theorem LO.FirstOrder.Structure.lMap_func {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : Structure L₂ M) {k : } {f : L₁.Func k} {v : Fin kM} :
          func f v = func (φ.func f) v
          @[simp]
          theorem LO.FirstOrder.Structure.lMap_rel {L₁ : Language} {L₂ : Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : Structure L₂ M) {k : } {r : L₁.Rel k} {v : Fin kM} :
          rel r v rel (φ.rel r) v
          def LO.FirstOrder.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 LO.FirstOrder.Structure.Decidable (L : Language) (M : Type w) [s : Structure L M] :
            Type (max w u)
            Equations
            Instances For
              @[reducible]
              def LO.FirstOrder.Structure.toStruc {L : Language} {M : Type w} [i : Nonempty M] (s : Structure L M) :
              Equations
              • s.toStruc = { Dom := M, nonempty := i, struc := s }
              Instances For
                Equations
                • s.instStructureDom = s.struc
                def LO.FirstOrder.Semiterm.val {n : } {ξ : Type u_1} {L : Language} {M : Type w} (s : Structure L M) (e : Fin nM) (ε : ξM) :
                Semiterm L ξ nM
                Equations
                Instances For
                  @[reducible, inline]
                  abbrev LO.FirstOrder.Semiterm.valb {n : } {L : Language} {M : Type w} (s : Structure L M) (e : Fin nM) (t : Semiterm L Empty n) :
                  M
                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev LO.FirstOrder.Semiterm.valm {ξ : Type u_1} {L : Language} (M : Type w) [s : Structure L M] {n : } (e : Fin nM) (ε : ξM) :
                    Semiterm L ξ nM
                    Equations
                    Instances For
                      @[reducible, inline]
                      abbrev LO.FirstOrder.Semiterm.valbm {L : Language} (M : Type w) [s : Structure L M] {n : } (e : Fin nM) :
                      Semiterm L Empty nM
                      Equations
                      Instances For
                        @[reducible, inline]
                        abbrev LO.FirstOrder.Semiterm.realize {L : Language} {M : Type w} (s : Structure L M) (t : Term L M) :
                        M
                        Equations
                        Instances For
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_bvar {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (x : Fin n) :
                          val s e ε (bvar x) = e x
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_fvar {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (x : ξ) :
                          val s e ε (fvar x) = ε x
                          theorem LO.FirstOrder.Semiterm.val_func {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} {k : } (f : L.Func k) (v : Fin kSemiterm L ξ n) :
                          val s e ε (func f v) = Structure.func f fun (i : Fin k) => val s e ε (v i)
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_func₀ {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (f : L.Func 0) (v : Fin 0Semiterm L ξ n) :
                          val s e ε (func f v) = Structure.func f ![]
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_func₁ {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (f : L.Func 1) (t : Semiterm L ξ n) :
                          val s e ε (func f ![t]) = Structure.func f ![val s e ε t]
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_func₂ {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (f : L.Func 2) (t u : Semiterm L ξ n) :
                          val s e ε (func f ![t, u]) = Structure.func f ![val s e ε t, val s e ε u]
                          theorem LO.FirstOrder.Semiterm.val_rew {n₁ n₂ : } {μ₁ : Type u_1} {μ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ε₂ : μ₂M} (ω : Rew L μ₁ n₁ μ₂ n₂) (t : Semiterm L μ₁ n₁) :
                          val s e₂ ε₂ (ω t) = val s (val s e₂ ε₂ ω bvar) (val s e₂ ε₂ ω fvar) t
                          theorem LO.FirstOrder.Semiterm.val_rewrite {n : } {μ₁ : Type u_2} {μ₂ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε₂ : μ₂M} (f : μ₁Semiterm L μ₂ n) (t : Semiterm L μ₁ n) :
                          val s e ε₂ ((Rew.rewrite f) t) = val s e (fun (x : μ₁) => val s e ε₂ (f x)) t
                          theorem LO.FirstOrder.Semiterm.val_rewriteMap {n : } {μ₁ : Type u_1} {μ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε₂ : μ₂M} (f : μ₁μ₂) (t : Semiterm L μ₁ n) :
                          val s e ε₂ ((Rew.rewriteMap f) t) = val s e (fun (x : μ₁) => ε₂ (f x)) t
                          theorem LO.FirstOrder.Semiterm.val_substs {n₁ n₂ : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ε : ξM} (w : Fin n₁Semiterm L ξ n₂) (t : Semiterm L ξ n₁) :
                          val s e₂ ε ((Rew.substs w) t) = val s (fun (x : Fin n₁) => val s e₂ ε (w x)) ε t
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_bShift {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} (a : M) (t : Semiterm L ξ n) :
                          val s (a :> e) ε (Rew.bShift t) = val s e ε t
                          theorem LO.FirstOrder.Semiterm.val_bShift' {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {ε : ξM} (e : Fin (n + 1)M) (t : Semiterm L ξ n) :
                          val s e ε (Rew.bShift t) = val s (fun (x : Fin n) => e x.succ) ε t
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_emb {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} {o : Type v'} [i : IsEmpty o] (t : Semiterm L o n) :
                          val s e ε (Rew.emb t) = val s e (fun (a : o) => i.elim a) t
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_castLE {n₁ n₂ : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ε : ξM} (h : n₁ n₂) (t : Semiterm L ξ n₁) :
                          val s e₂ ε ((Rew.castLE h) t) = val s (fun (x : Fin n₁) => e₂ (Fin.castLE h x)) ε t
                          theorem LO.FirstOrder.Semiterm.val_embSubsts {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} {k : } (w : Fin kSemiterm L ξ n) (t : Semiterm L Empty k) :
                          val s e ε ((Rew.embSubsts w) t) = valb s (fun (x : Fin k) => val s e ε (w x)) t
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_toS {n : } {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} (t : Semiterm L (Fin n) 0) :
                          valb s e (Rew.toS t) = val s ![] e t
                          @[simp]
                          theorem LO.FirstOrder.Semiterm.val_toF {n : } {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} (t : Semiterm L Empty n) :
                          val s ![] e (Rew.toF t) = valb s e t
                          theorem LO.FirstOrder.Semiterm.val_lMap {n : } {ξ : Type u_3} {L₁ : Language} {L₂ : Language} {M : Type w} (φ : L₁.Hom L₂) (s₂ : Structure L₂ M) (e : Fin nM) (ε : ξM) {t : Semiterm L₁ ξ n} :
                          val s₂ e ε (lMap φ t) = val (Structure.lMap φ s₂) e ε t
                          theorem LO.FirstOrder.Semiterm.val_shift {n : } {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} (ε : M) (t : SyntacticSemiterm L n) :
                          val s e ε (Rew.shift t) = val s e (ε Nat.succ) t
                          theorem LO.FirstOrder.Semiterm.val_free {n : } {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} (ε : M) (a : M) (t : SyntacticSemiterm L (n + 1)) :
                          val s e (a :>ₙ ε) (Rew.free t) = val s (e <: a) ε t
                          theorem LO.FirstOrder.Semiterm.val_fix {n : } {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} (ε : M) (a : M) (t : SyntacticSemiterm L n) :
                          val s (e <: a) ε (Rew.fix t) = val s e (a :>ₙ ε) t
                          theorem LO.FirstOrder.Semiterm.val_eq_of_funEqOn {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε ε' : ξM} [DecidableEq ξ] (t : Semiterm L ξ n) (h : Function.funEqOn t.FVar? ε ε') :
                          val s e ε t = val s e ε' t
                          theorem LO.FirstOrder.Semiterm.val_toEmpty {n : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e : Fin nM} {ε : ξM} [DecidableEq ξ] (t : Semiterm L ξ n) (h : t.freeVariables = ) :
                          val s e ε t = valb s e (t.toEmpty h)
                          theorem LO.FirstOrder.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 kN) :
                          func f v = Θ (func f (Θ.symm v))
                          theorem LO.FirstOrder.Structure.ofEquiv_val {M : Type u_3} {N : Type u_2} {L : Language} [s : Structure L M] (Θ : M N) {n : } {ξ : Type u_1} (e : Fin nN) (ε : ξN) (t : Semiterm L ξ n) :
                          Semiterm.val (ofEquiv Θ) e ε t = Θ (Semiterm.val s (Θ.symm e) (Θ.symm ε) t)
                          @[simp]
                          theorem LO.FirstOrder.Semiformula.EvalAux_neg {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} (φ : Semiformula L ξ n) :
                          EvalAux s ε e (φ) = ¬EvalAux s ε e φ
                          def LO.FirstOrder.Semiformula.Eval {ξ : Type u_1} {L : Language} {M : Type w} {n : } (s : Structure L M) (e : Fin nM) (ε : ξM) :
                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev LO.FirstOrder.Semiformula.Evalm {ξ : Type u_1} {L : Language} (M : Type w) [s : Structure L M] {n : } (e : Fin nM) (ε : ξM) :
                            Equations
                            Instances For
                              @[reducible, inline]
                              abbrev LO.FirstOrder.Semiformula.Evalf {ξ : Type u_1} {L : Language} {M : Type w} (s : Structure L M) (ε : ξM) :
                              Equations
                              Instances For
                                @[reducible, inline]
                                abbrev LO.FirstOrder.Semiformula.Evalb {L : Language} {M : Type w} {n : } (s : Structure L M) (e : Fin nM) :
                                Equations
                                Instances For
                                  @[reducible, inline]
                                  abbrev LO.FirstOrder.Semiformula.Evalfm {ξ : Type u_1} {L : Language} (M : Type w) [s : Structure L M] (ε : ξM) :
                                  Equations
                                  Instances For
                                    @[reducible, inline]
                                    abbrev LO.FirstOrder.Semiformula.Evalbm {L : Language} {n : } (M : Type w) [s : Structure L M] (e : Fin nM) :
                                    Equations
                                    Instances For
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        theorem LO.FirstOrder.Semiformula.eval_rel {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {k : } {r : L.Rel k} {v : Fin kSemiterm L ξ n} :
                                        (Eval s e ε) (rel r v) Structure.rel r fun (i : Fin k) => Semiterm.val s e ε (v i)
                                        theorem LO.FirstOrder.Semiformula.Eval.of_eq {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e e' : Fin nM} {ε ε' : ξM} {φ : Semiformula L ξ n} (h : (Eval s e ε) φ) (he : e = e') (hε : ε = ε') :
                                        (Eval s e' ε') φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_rel₀ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 0} :
                                        (Eval s e ε) (rel r ![]) Structure.rel r ![]
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_rel₁ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 1} (t : Semiterm L ξ n) :
                                        (Eval s e ε) (rel r ![t]) Structure.rel r ![Semiterm.val s e ε t]
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_rel₂ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 2} (t₁ t₂ : Semiterm L ξ n) :
                                        (Eval s e ε) (rel r ![t₁, t₂]) Structure.rel r ![Semiterm.val s e ε t₁, Semiterm.val s e ε t₂]
                                        theorem LO.FirstOrder.Semiformula.eval_nrel {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {k : } {r : L.Rel k} {v : Fin kSemiterm L ξ n} :
                                        (Eval s e ε) (nrel r v) ¬Structure.rel r fun (i : Fin k) => Semiterm.val s e ε (v i)
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_nrel₀ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 0} :
                                        (Eval s e ε) (nrel r ![]) ¬Structure.rel r ![]
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_nrel₁ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 1} (t : Semiterm L ξ n) :
                                        (Eval s e ε) (nrel r ![t]) ¬Structure.rel r ![Semiterm.val s e ε t]
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_nrel₂ {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {r : L.Rel 2} (t₁ t₂ : Semiterm L ξ n) :
                                        (Eval s e ε) (nrel r ![t₁, t₂]) ¬Structure.rel r ![Semiterm.val s e ε t₁, Semiterm.val s e ε t₂]
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_all {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {φ : Semiformula L ξ (n + 1)} :
                                        (Eval s e ε) (∀' φ) ∀ (x : M), (Eval s (x :> e) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_ex {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {φ : Semiformula L ξ (n + 1)} :
                                        (Eval s e ε) (∃' φ) ∃ (x : M), (Eval s (x :> e) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_ball {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {φ ψ : Semiformula L ξ (n + 1)} :
                                        (Eval s e ε) (∀[φ] ψ) ∀ (x : M), (Eval s (x :> e) ε) φ(Eval s (x :> e) ε) ψ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_bex {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {φ ψ : Semiformula L ξ (n + 1)} :
                                        (Eval s e ε) (∃[φ] ψ) ∃ (x : M), (Eval s (x :> e) ε) φ (Eval s (x :> e) ε) ψ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_univClosure {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {ε : ξM} {n' : } {e' : Fin 0M} {φ : Semiformula L ξ n'} :
                                        (Eval s e' ε) (∀* φ) ∀ (e : Fin n'M), (Eval s e ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_exClosure {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {ε : ξM} {n' : } {e' : Fin 0M} {φ : Semiformula L ξ n'} :
                                        (Eval s e' ε) (∃* φ) ∃ (e : Fin n'M), (Eval s e ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_univItr {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {ε : ξM} {k : } {e : Fin nM} {φ : Semiformula L ξ (n + k)} :
                                        (Eval s e ε) (∀^[k] φ) ∀ (e' : Fin kM), (Eval s (Matrix.appendr e' e) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_exItr {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {ε : ξM} {k : } {e : Fin nM} {φ : Semiformula L ξ (n + k)} :
                                        (Eval s e ε) (∃^[k] φ) ∃ (e' : Fin kM), (Eval s (Matrix.appendr e' e) ε) φ
                                        theorem LO.FirstOrder.Semiformula.eval_rew {n₂ : } {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ε₂ : ξ₂M} {ξ₁ : Type u_1} {n₁ : } (ω : Rew L ξ₁ n₁ ξ₂ n₂) (φ : Semiformula L ξ₁ n₁) :
                                        (Eval s e₂ ε₂) ((Rewriting.app ω) φ) (Eval s (Semiterm.val s e₂ ε₂ ω Semiterm.bvar) (Semiterm.val s e₂ ε₂ ω Semiterm.fvar)) φ
                                        theorem LO.FirstOrder.Semiformula.eval_rew_q {n₂ : } {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ξ₁ : Type u_1} {n₁ : } {x : M} {ε₂ : ξ₂M} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (φ : Semiformula L ξ₁ (n₁ + 1)) :
                                        (Eval s (x :> e₂) ε₂) ((Rewriting.app ω.q) φ) (Eval s (x :> Semiterm.val s e₂ ε₂ ω Semiterm.bvar) (Semiterm.val s e₂ ε₂ ω Semiterm.fvar)) φ
                                        theorem LO.FirstOrder.Semiformula.eval_map {n₂ : } {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {n₁ : } {ξ₁ : Type u_1} (b : Fin n₁Fin n₂) (f : ξ₁ξ₂) (e : Fin n₂M) (ε : ξ₂M) (φ : Semiformula L ξ₁ n₁) :
                                        (Eval s e ε) ((Rewriting.app (Rew.map b f)) φ) (Eval s (e b) (ε f)) φ
                                        theorem LO.FirstOrder.Semiformula.eval_rewrite {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε₂ : ξ₂M} {ξ₁ : Type u_1} (f : ξ₁Semiterm L ξ₂ n) (φ : Semiformula L ξ₁ n) :
                                        (Eval s e ε₂) ((Rewriting.app (Rew.rewrite f)) φ) (Eval s e fun (x : ξ₁) => Semiterm.val s e ε₂ (f x)) φ
                                        theorem LO.FirstOrder.Semiformula.eval_rewriteMap {ξ₂ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε₂ : ξ₂M} {ξ₁ : Type u_1} (f : ξ₁ξ₂) (φ : Semiformula L ξ₁ n) :
                                        (Eval s e ε₂) ((Rewriting.app (Rew.rewriteMap f)) φ) (Eval s e fun (x : ξ₁) => ε₂ (f x)) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_castLE {n₂ : } {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {e₂ : Fin n₂M} {ε : ξM} {n₁ : } (h : n₁ n₂) (φ : Semiformula L ξ n₁) :
                                        (Eval s e₂ ε) ((Rewriting.app (Rew.castLE h)) φ) (Eval s (fun (x : Fin n₁) => e₂ (Fin.castLE h x)) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_bShift {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {x : M} (φ : Semiformula L ξ n) :
                                        (Eval s (x :> e) ε) ((Rewriting.app Rew.bShift) φ) (Eval s e ε) φ
                                        theorem LO.FirstOrder.Semiformula.eval_bShift' {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {ε : ξM} {e' : Fin (n + 1)M} (φ : Semiformula L ξ n) :
                                        (Eval s e' ε) ((Rewriting.app Rew.bShift) φ) (Eval s (fun (x : Fin n) => e' x.succ) ε) φ
                                        theorem LO.FirstOrder.Semiformula.eval_substs {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {k : } (w : Fin kSemiterm L ξ n) (φ : Semiformula L ξ k) :
                                        (Eval s e ε) (φ w) (Eval s (fun (i : Fin k) => Semiterm.val s e ε (w i)) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_emb {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} (φ : Semiformula L Empty n) :
                                        (Eval s e ε) φ (Eval s e Empty.elim) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_empty {ξ : Type u_2} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : ξM} {o : Type u_1} [h : IsEmpty o] (φ : Formula L o) :
                                        (Eval s e ε) ((Rewriting.app Rew.empty) φ) (Eval s ![] fun (a : o) => h.elim a) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_toS {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε : EmptyM} (φ : Formula L (Fin n)) :
                                        (Eval s e ε) ((Rewriting.app Rew.toS) φ) (Eval s ![] e) φ
                                        theorem LO.FirstOrder.Semiformula.eval_embSubsts {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ξ : Type u_1} {ε : ξM} {k : } (w : Fin kSemiterm L ξ n) (σ : Semisentence L k) :
                                        (Eval s e ε) ((Rewriting.app (Rew.embSubsts w)) σ) (Evalb s fun (x : Fin k) => Semiterm.val s e ε (w x)) σ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_free {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} (ε : M) {a : M} (φ : SyntacticSemiformula L (n + 1)) :
                                        (Eval s e (a :>ₙ ε)) ((Rewriting.app Rew.free) φ) (Eval s (e <: a) ε) φ
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_shift {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} (ε : M) {a : M} (φ : SyntacticSemiformula L n) :
                                        (Eval s e (a :>ₙ ε)) ((Rewriting.app Rew.shift) φ) (Eval s e ε) φ
                                        theorem LO.FirstOrder.Semiformula.eval_iff_of_funEqOn {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {ε ε' : ξM} [DecidableEq ξ] (φ : Semiformula L ξ n) (h : Function.funEqOn φ.FVar? ε ε') :
                                        (Eval s e ε) φ (Eval s e ε') φ
                                        theorem LO.FirstOrder.Semiformula.eval_toEmpty {ξ : Type u_1} {L : Language} {M : Type w} {s : Structure L M} {n : } {e : Fin nM} {f : ξM} [DecidableEq ξ] {φ : Semiformula L ξ n} (hp : φ.freeVariables = ) :
                                        (Eval s e f) φ (Evalb s e) (φ.toEmpty hp)
                                        theorem LO.FirstOrder.Semiformula.eval_close {L : Language} {M : Type w} {s : Structure L M} {ε : M} (φ : SyntacticFormula L) :
                                        (Evalf s ε) (close φ) ∀ (f : M), (Evalf s f) φ
                                        theorem LO.FirstOrder.Semiformula.eval_close₀ {L : Language} {M : Type w} {s : Structure L M} [Nonempty M] (φ : SyntacticFormula L) :
                                        (Evalb s ![]) (close₀ φ) ∀ (f : M), (Evalf s f) φ
                                        theorem LO.FirstOrder.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 kN) :
                                        rel r v rel r (Θ.symm v)
                                        theorem LO.FirstOrder.Structure.eval_ofEquiv_iff {M : Type u_3} {N : Type u_2} {L : Language} [s : Structure L M] (Θ : M N) {ξ : Type u_1} {n : } {e : Fin nN} {ε : ξN} {φ : Semiformula L ξ n} :
                                        (Semiformula.Eval (ofEquiv Θ) e ε) φ (Semiformula.Eval s (Θ.symm e) (Θ.symm ε)) φ
                                        theorem LO.FirstOrder.Structure.evalf_ofEquiv_iff {M : Type u_3} {N : Type u_2} {L : Language} [s : Structure L M] (Θ : M N) {ξ : Type u_1} {ε : ξN} {φ : Formula L ξ} :
                                        (Semiformula.Evalf (ofEquiv Θ) ε) φ (Semiformula.Evalf s (Θ.symm ε)) φ
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        @[reducible, inline]
                                        abbrev LO.FirstOrder.Models {L : Language} (M : Type u_1) [Nonempty M] [s : Structure L M] :
                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          abbrev LO.FirstOrder.Models₀ {L : Language} (M : Type u_1) [Nonempty M] [s : Structure L M] (σ : Sentence L) :
                                          Equations
                                          Instances For
                                            @[reducible, inline]
                                            abbrev LO.FirstOrder.ModelsTheory {L : Language} (M : Type u_1) [Nonempty M] [s : Structure L M] (T : Theory L) :
                                            Equations
                                            Instances For
                                              @[reducible, inline]
                                              abbrev LO.FirstOrder.Realize {L : Language} (M : Type u_2) [s : Structure L M] :
                                              Formula L MProp
                                              Equations
                                              Instances For
                                                @[reducible, inline]
                                                Equations
                                                Instances For
                                                  def LO.FirstOrder.modelsTheory_iff_modelsTheory_s {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {T : Theory L} :
                                                  M ⊧ₘ* T s.toStruc ⊧* T
                                                  Equations
                                                  • =
                                                  Instances For
                                                    theorem LO.FirstOrder.models_def {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {φ : SyntacticFormula L} :
                                                    (M ⊧ₘ φ) = ∀ (f : M), (Semiformula.Evalf s f) φ
                                                    theorem LO.FirstOrder.models_iff {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {φ : SyntacticFormula L} :
                                                    M ⊧ₘ φ ∀ (f : M), (Semiformula.Evalf s f) φ
                                                    theorem LO.FirstOrder.models₀_iff {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {σ : Sentence L} :
                                                    theorem LO.FirstOrder.modelsTheory_iff {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {T : Theory L} :
                                                    M ⊧ₘ* T ∀ {φ : SyntacticFormula L}, φ TM ⊧ₘ φ
                                                    theorem LO.FirstOrder.Theory.models {L : Language} (M : Type u_1) [Nonempty M] [s : Structure L M] (T : Theory L) [M ⊧ₘ* T] {φ : SyntacticFormula L} (hp : φ T) :
                                                    M ⊧ₘ φ
                                                    theorem LO.FirstOrder.models_iff_models {L : Language} {M : Type u_1} [Nonempty M] [s : Structure L M] {φ : SyntacticFormula L} :
                                                    M ⊧ₘ φ s.toStruc φ
                                                    theorem LO.FirstOrder.consequence_iff {L : Language} {T : Theory L} {φ : SyntacticFormula L} :
                                                    T ⊨[Struc L] φ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Structure L M], M ⊧ₘ* TM ⊧ₘ φ
                                                    theorem LO.FirstOrder.consequence_iff' {L : Language} {T : Theory L} {φ : SyntacticFormula L} :
                                                    T ⊨[Struc L] φ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Structure L M] [inst_2 : M ⊧ₘ* T], M ⊧ₘ φ
                                                    theorem LO.FirstOrder.valid_iff {L : Language} {φ : SyntacticFormula L} :
                                                    Semantics.Valid (Struc L) φ ∀ (M : Type v) [inst : Nonempty M] [inst_1 : Structure L M], M ⊧ₘ φ
                                                    theorem LO.FirstOrder.satisfiable_iff {L : Language} {T : Theory L} :
                                                    Semantics.Satisfiable (Struc L) T ∃ (M : Type v) (x : Nonempty M) (x_1 : Structure L M), M ⊧ₘ* T
                                                    theorem LO.FirstOrder.unsatisfiable_iff {L : Language} {T : Theory L} :
                                                    ¬Semantics.Satisfiable (Struc L) T ∀ (M : Type v) (x : Nonempty M) (x_1 : Structure L M), ¬M ⊧ₘ* T
                                                    noncomputable def LO.FirstOrder.ModelOfSat {L : Language} {T : Theory L} (h : Semantics.Satisfiable (Struc L) T) :
                                                    Equations
                                                    Instances For
                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        theorem LO.FirstOrder.Semiformula.eval_lMap {ξ : Type u_1} {L₁ : Language} {L₂ : Language} {Φ : L₁.Hom L₂} {M : Type u} {s₂ : Structure L₂ M} {n : } {e : Fin nM} {ε : ξM} [Nonempty M] {φ : Semiformula L₁ ξ n} :
                                                        (Eval s₂ e ε) ((lMap Φ) φ) (Eval (Structure.lMap Φ s₂) e ε) φ
                                                        theorem LO.FirstOrder.Semiformula.models_lMap {L₁ : Language} {L₂ : Language} {Φ : L₁.Hom L₂} {M : Type u} {s₂ : Structure L₂ M} [Nonempty M] {φ : SyntacticFormula L₁} :
                                                        s₂.toStruc (lMap Φ) φ (Structure.lMap Φ s₂).toStruc φ
                                                        theorem LO.FirstOrder.lMap_models_lMap {L₁ L₂ : Language} {Φ : L₁.Hom L₂} {T : Theory L₁} {φ : SyntacticFormula L₁} (h : T ⊨[Struc L₁] φ) :
                                                        theorem LO.FirstOrder.ModelsTheory.models {L : Language} (M : Type u_1) [Nonempty M] [Structure L M] {T : Theory L} [M ⊧ₘ* T] {φ : SyntacticFormula L} (h : φ T) :
                                                        M ⊧ₘ φ
                                                        theorem LO.FirstOrder.ModelsTheory.of_ss {L : Language} {M : Type u_1} [Nonempty M] [Structure L M] {T U : Theory L} (h : M ⊧ₘ* U) (ss : T U) :
                                                        @[simp]
                                                        theorem LO.FirstOrder.ModelsTheory.add_iff {L : Language} {M : Type u_1} [Nonempty M] [Structure L M] {T U : Theory L} :
                                                        M ⊧ₘ* T + U M ⊧ₘ* T M ⊧ₘ* U
                                                        instance LO.FirstOrder.ModelsTheory.add {L : Language} {M : Type u_1} [Nonempty M] [Structure L M] (T U : Theory L) [M ⊧ₘ* T] [M ⊧ₘ* U] :
                                                        M ⊧ₘ* T + U
                                                        theorem LO.FirstOrder.Theory.modelsTheory_onTheory₁ {L₁ L₂ : Language} {Φ : L₁.Hom L₂} {M : Type u} [Nonempty M] [s₂ : Structure L₂ M] {T₁ : Theory L₁} :
                                                        M ⊧ₘ* lMap Φ T₁ M ⊧ₘ* T₁
                                                        @[reducible, inline]
                                                        Equations
                                                        Instances For