Documentation

Logic.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.

theorem LO.FirstOrder.Structure.ext {L : LO.FirstOrder.Language} {M : Type w} (x : LO.FirstOrder.Structure L M) (y : LO.FirstOrder.Structure L M) (func : LO.FirstOrder.Structure.func = LO.FirstOrder.Structure.func) (rel : LO.FirstOrder.Structure.rel = LO.FirstOrder.Structure.rel) :
x = y
theorem LO.FirstOrder.Structure.ext_iff {L : LO.FirstOrder.Language} {M : Type w} (x : LO.FirstOrder.Structure L M) (y : LO.FirstOrder.Structure L M) :
x = y ↔ LO.FirstOrder.Structure.func = LO.FirstOrder.Structure.func ∧ LO.FirstOrder.Structure.rel = LO.FirstOrder.Structure.rel
  • func : ⦃k : ℕ⦄ → L.Func k → (Fin k → M) → M
  • rel : ⦃k : ℕ⦄ → L.Rel k → (Fin k → M) → Prop
Instances
    structure LO.FirstOrder.Struc (L : LO.FirstOrder.Language) :
    Type (max (u_1 + 1) u_2)
    Instances For
      @[reducible, inline]
      Equations
      Instances For
        Equations
        Instances For
          @[simp]
          theorem LO.FirstOrder.Structure.lMap_func {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : LO.FirstOrder.Structure L₂ M) {k : ℕ} {f : L₁.Func k} {v : Fin k → M} :
          @[simp]
          theorem LO.FirstOrder.Structure.lMap_rel {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} (φ : L₁.Hom L₂) {M : Type w} (s₂ : LO.FirstOrder.Structure L₂ M) {k : ℕ} {r : L₁.Rel k} {v : Fin k → M} :
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[reducible, inline]
            Equations
            Instances For
              @[reducible]
              Equations
              • s.toStruc = { Dom := M, nonempty := i, struc := s }
              Instances For
                @[reducible, inline]
                Equations
                Instances For
                  @[reducible, inline]
                  abbrev LO.FirstOrder.Semiterm.valm {L : LO.FirstOrder.Language} {ξ : Type v} (M : Type w) [s : LO.FirstOrder.Structure L M] {n : ℕ} (e : Fin n → M) (ε : ξ → M) :
                  Equations
                  Instances For
                    @[reducible, inline]
                    Equations
                    Instances For
                      @[reducible, inline]
                      Equations
                      Instances For
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_bvar {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} (x : Fin n) :
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_fvar {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} (x : ξ) :
                        theorem LO.FirstOrder.Semiterm.val_func {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} {k : ℕ} (f : L.Func k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_func₀ {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} (f : L.Func 0) (v : Fin 0 → LO.FirstOrder.Semiterm L ξ n) :
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_rew {n₁ : ℕ} {n₂ : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {e₂ : Fin n₂ → M} {ε₂ : μ₂ → M} (ω : LO.FirstOrder.Rew L μ₁ n₁ μ₂ n₂) (t : LO.FirstOrder.Semiterm L μ₁ n₁) :
                        LO.FirstOrder.Semiterm.val s e₂ ε₂ (ω t) = LO.FirstOrder.Semiterm.val s (LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.bvar) (LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.fvar) t
                        theorem LO.FirstOrder.Semiterm.val_rewrite {n : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε₂ : μ₂ → M} (f : μ₁ → LO.FirstOrder.Semiterm L μ₂ n) (t : LO.FirstOrder.Semiterm L μ₁ n) :
                        theorem LO.FirstOrder.Semiterm.val_rewriteMap {n : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε₂ : μ₂ → M} (f : μ₁ → μ₂) (t : LO.FirstOrder.Semiterm L μ₁ n) :
                        LO.FirstOrder.Semiterm.val s e ε₂ ((LO.FirstOrder.Rew.rewriteMap f) t) = LO.FirstOrder.Semiterm.val s e (fun (x : μ₁) => ε₂ (f x)) t
                        theorem LO.FirstOrder.Semiterm.val_substs {n₁ : ℕ} {n₂ : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e₂ : Fin n₂ → M} {ε : ξ → M} (w : Fin n₁ → LO.FirstOrder.Semiterm L ξ n₂) (t : LO.FirstOrder.Semiterm L ξ n₁) :
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_bShift {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} (a : M) (t : LO.FirstOrder.Semiterm L ξ n) :
                        LO.FirstOrder.Semiterm.val s (a :> e) ε (LO.FirstOrder.Rew.bShift t) = LO.FirstOrder.Semiterm.val s e ε t
                        theorem LO.FirstOrder.Semiterm.val_bShift' {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {ε : ξ → M} (e : Fin (n + 1) → M) (t : LO.FirstOrder.Semiterm L ξ n) :
                        LO.FirstOrder.Semiterm.val s e ε (LO.FirstOrder.Rew.bShift t) = LO.FirstOrder.Semiterm.val s (fun (x : Fin n) => e x.succ) ε t
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_emb {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} {o : Type v'} [i : IsEmpty o] (t : LO.FirstOrder.Semiterm L o n) :
                        LO.FirstOrder.Semiterm.val s e ε (LO.FirstOrder.Rew.emb t) = LO.FirstOrder.Semiterm.val s e (fun (a : o) => i.elim a) t
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_castLE {n₁ : ℕ} {n₂ : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e₂ : Fin n₂ → M} {ε : ξ → M} (h : n₁ ≤ n₂) (t : LO.FirstOrder.Semiterm L ξ n₁) :
                        LO.FirstOrder.Semiterm.val s e₂ ε ((LO.FirstOrder.Rew.castLE h) t) = LO.FirstOrder.Semiterm.val s (fun (x : Fin n₁) => e₂ (Fin.castLE h x)) ε t
                        theorem LO.FirstOrder.Semiterm.val_embSubsts {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} {k : ℕ} (w : Fin k → LO.FirstOrder.Semiterm L ξ n) (t : LO.FirstOrder.Semiterm L Empty k) :
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_toS {n : ℕ} {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} (t : LO.FirstOrder.Semiterm L (Fin n) 0) :
                        LO.FirstOrder.Semiterm.valb s e (LO.FirstOrder.Rew.toS t) = LO.FirstOrder.Semiterm.val s ![] e t
                        @[simp]
                        theorem LO.FirstOrder.Semiterm.val_toF {n : ℕ} {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} (t : LO.FirstOrder.Semiterm L Empty n) :
                        LO.FirstOrder.Semiterm.val s ![] e (LO.FirstOrder.Rew.toF t) = LO.FirstOrder.Semiterm.valb s e t
                        theorem LO.FirstOrder.Semiterm.val_lMap {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} (φ : L₁.Hom L₂) (s₂ : LO.FirstOrder.Structure L₂ M) (e : Fin n → M) (ε : ξ → M) {t : LO.FirstOrder.Semiterm L₁ ξ n} :
                        theorem LO.FirstOrder.Semiterm.val_shift {n : ℕ} {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} (ε : ℕ → M) (t : LO.FirstOrder.SyntacticSemiterm L n) :
                        LO.FirstOrder.Semiterm.val s e ε (LO.FirstOrder.Rew.shift t) = LO.FirstOrder.Semiterm.val s e (ε ∘ Nat.succ) t
                        theorem LO.FirstOrder.Semiterm.val_free {n : ℕ} {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} (ε : ℕ → M) (a : M) (t : LO.FirstOrder.SyntacticSemiterm L (n + 1)) :
                        LO.FirstOrder.Semiterm.val s e (a :>ₙ ε) (LO.FirstOrder.Rew.free t) = LO.FirstOrder.Semiterm.val s (e <: a) ε t
                        theorem LO.FirstOrder.Semiterm.val_fix {n : ℕ} {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} (ε : ℕ → M) (a : M) (t : LO.FirstOrder.SyntacticSemiterm L n) :
                        LO.FirstOrder.Semiterm.val s (e <: a) ε (LO.FirstOrder.Rew.fix t) = LO.FirstOrder.Semiterm.val s e (a :>ₙ ε) t
                        theorem LO.FirstOrder.Semiterm.val_eq_of_funEqOn {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} {ε' : ξ → M} (t : LO.FirstOrder.Semiterm L ξ n) (h : Function.funEqOn t.fvar? ε ε') :
                        theorem LO.FirstOrder.Semiterm.val_toEmpty {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e : Fin n → M} {ε : ξ → M} (t : LO.FirstOrder.Semiterm L ξ n) (h : t.fvarList = []) :
                        theorem LO.FirstOrder.Structure.ofEquiv_func {M : Type u_2} {N : Type u_1} {L : LO.FirstOrder.Language} [s : LO.FirstOrder.Structure L M] (φ : M ≃ N) {k : ℕ} (f : L.Func k) (v : Fin k → N) :
                        theorem LO.FirstOrder.Structure.ofEquiv_val {M : Type u_2} {N : Type u_1} {L : LO.FirstOrder.Language} {ξ : Type v} [s : LO.FirstOrder.Structure L M] (φ : M ≃ N) {n : ℕ} (e : Fin n → N) (ε : ξ → N) (t : LO.FirstOrder.Semiterm L ξ n) :
                        def LO.FirstOrder.Semiformula.Eval {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {n : ℕ} (s : LO.FirstOrder.Structure L M) (e : Fin n → M) (ε : ξ → M) :
                        Equations
                        Instances For
                          @[reducible, inline]
                          abbrev LO.FirstOrder.Semiformula.Evalm {L : LO.FirstOrder.Language} {ξ : Type v} (M : Type w) [s : LO.FirstOrder.Structure L M] {n : ℕ} (e : Fin n → M) (ε : ξ → M) :
                          Equations
                          Instances For
                            @[reducible, inline]
                            Equations
                            Instances For
                              @[reducible, inline]
                              Equations
                              Instances For
                                @[reducible, inline]
                                Equations
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    theorem LO.FirstOrder.Semiformula.eval_rel {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → LO.FirstOrder.Semiterm L ξ n} :
                                    theorem LO.FirstOrder.Semiformula.Eval.of_eq {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {e' : Fin n → M} {ε : ξ → M} {ε' : ξ → M} {p : LO.FirstOrder.Semiformula L ξ n} (h : (LO.FirstOrder.Semiformula.Eval s e ε) p) (he : e = e') (hε : ε = ε') :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_rel₀ {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {r : L.Rel 0} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_rel₂ {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {r : L.Rel 2} (t₁ : LO.FirstOrder.Semiterm L ξ n) (t₂ : LO.FirstOrder.Semiterm L ξ n) :
                                    theorem LO.FirstOrder.Semiformula.eval_nrel {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {k : ℕ} {r : L.Rel k} {v : Fin k → LO.FirstOrder.Semiterm L ξ n} :
                                    @[simp]
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_nrel₂ {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {r : L.Rel 2} (t₁ : LO.FirstOrder.Semiterm L ξ n) (t₂ : LO.FirstOrder.Semiterm L ξ n) :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_all {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {p : LO.FirstOrder.Semiformula L ξ (n + 1)} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_ex {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {p : LO.FirstOrder.Semiformula L ξ (n + 1)} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_ball {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {p : LO.FirstOrder.Semiformula L ξ (n + 1)} {q : LO.FirstOrder.Semiformula L ξ (n + 1)} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_bex {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {p : LO.FirstOrder.Semiformula L ξ (n + 1)} {q : LO.FirstOrder.Semiformula L ξ (n + 1)} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_univClosure {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {ε : ξ → M} {n' : ℕ} {e' : Fin 0 → M} {p : LO.FirstOrder.Semiformula L ξ n'} :
                                    (LO.FirstOrder.Semiformula.Eval s e' ε) (∀* p) ↔ ∀ (e : Fin n' → M), (LO.FirstOrder.Semiformula.Eval s e ε) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_exClosure {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {ε : ξ → M} {n' : ℕ} {e' : Fin 0 → M} {p : LO.FirstOrder.Semiformula L ξ n'} :
                                    (LO.FirstOrder.Semiformula.Eval s e' ε) (∃* p) ↔ ∃ (e : Fin n' → M), (LO.FirstOrder.Semiformula.Eval s e ε) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_univItr {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {ε : ξ → M} {k : ℕ} {e : Fin n → M} {p : LO.FirstOrder.Semiformula L ξ (n + k)} :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_exItr {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {ε : ξ → M} {k : ℕ} {e : Fin n → M} {p : LO.FirstOrder.Semiformula L ξ (n + k)} :
                                    theorem LO.FirstOrder.Semiformula.eval_rew {n₂ : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {e₂ : Fin n₂ → M} {ε₂ : μ₂ → M} {n₁ : ℕ} (ω : LO.FirstOrder.Rew L μ₁ n₁ μ₂ n₂) (p : LO.FirstOrder.Semiformula L μ₁ n₁) :
                                    (LO.FirstOrder.Semiformula.Eval s e₂ ε₂) (ω.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s (LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.bvar) (LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.fvar)) p
                                    theorem LO.FirstOrder.Semiformula.eval_rew_q {n₂ : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {n₁ : ℕ} {x : M} {e₂ : Fin n₂ → M} {ε₂ : μ₂ → M} (ω : LO.FirstOrder.Rew L μ₁ n₁ μ₂ n₂) (p : LO.FirstOrder.Semiformula L μ₁ (n₁ + 1)) :
                                    (LO.FirstOrder.Semiformula.Eval s (x :> e₂) ε₂) (ω.q.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s (x :> LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.bvar) (LO.FirstOrder.Semiterm.val s e₂ ε₂ ∘ ⇑ω ∘ LO.FirstOrder.Semiterm.fvar)) p
                                    theorem LO.FirstOrder.Semiformula.eval_map {n₂ : ℕ} {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {n₁ : ℕ} (b : Fin n₁ → Fin n₂) (f : μ₁ → μ₂) (e : Fin n₂ → M) (ε : μ₂ → M) (p : LO.FirstOrder.Semiformula L μ₁ n₁) :
                                    theorem LO.FirstOrder.Semiformula.eval_rewrite {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε₂ : μ₂ → M} (f : μ₁ → LO.FirstOrder.Semiterm L μ₂ n) (p : LO.FirstOrder.Semiformula L μ₁ n) :
                                    theorem LO.FirstOrder.Semiformula.eval_rewriteMap {L : LO.FirstOrder.Language} {μ₁ : Type v₁} {μ₂ : Type v₂} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε₂ : μ₂ → M} (f : μ₁ → μ₂) (p : LO.FirstOrder.Semiformula L μ₁ n) :
                                    (LO.FirstOrder.Semiformula.Eval s e ε₂) ((LO.FirstOrder.Rew.rewriteMap f).hom p) ↔ (LO.FirstOrder.Semiformula.Eval s e fun (x : μ₁) => ε₂ (f x)) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_castLE {n₂ : ℕ} {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {e₂ : Fin n₂ → M} {ε : ξ → M} {n₁ : ℕ} (h : n₁ ≤ n₂) (p : LO.FirstOrder.Semiformula L ξ n₁) :
                                    (LO.FirstOrder.Semiformula.Eval s e₂ ε) ((LO.FirstOrder.Rew.castLE h).hom p) ↔ (LO.FirstOrder.Semiformula.Eval s (fun (x : Fin n₁) => e₂ (Fin.castLE h x)) ε) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_bShift {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {x : M} (p : LO.FirstOrder.Semiformula L ξ n) :
                                    (LO.FirstOrder.Semiformula.Eval s (x :> e) ε) (LO.FirstOrder.Rew.bShift.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s e ε) p
                                    theorem LO.FirstOrder.Semiformula.eval_bShift' {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {ε : ξ → M} {e' : Fin (n + 1) → M} (p : LO.FirstOrder.Semiformula L ξ n) :
                                    (LO.FirstOrder.Semiformula.Eval s e' ε) (LO.FirstOrder.Rew.bShift.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s (fun (x : Fin n) => e' x.succ) ε) p
                                    theorem LO.FirstOrder.Semiformula.eval_substs {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {k : ℕ} (w : Fin k → LO.FirstOrder.Semiterm L ξ n) (p : LO.FirstOrder.Semiformula L ξ k) :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_emb {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} (p : LO.FirstOrder.Semiformula L Empty n) :
                                    (LO.FirstOrder.Semiformula.Eval s e ε) (LO.FirstOrder.Rew.emb.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s e Empty.elim) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_empty {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {o : Type u_1} [h : IsEmpty o] (p : LO.FirstOrder.Formula L o) :
                                    (LO.FirstOrder.Semiformula.Eval s e ε) (LO.FirstOrder.Rew.empty.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s ![] fun (a : o) => h.elim a) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_toS {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : Empty → M} (p : LO.FirstOrder.Formula L (Fin n)) :
                                    (LO.FirstOrder.Semiformula.Eval s e ε) (LO.FirstOrder.Rew.toS.hom p) ↔ (LO.FirstOrder.Semiformula.Eval s ![] e) p
                                    theorem LO.FirstOrder.Semiformula.eval_embSubsts {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {k : ℕ} (w : Fin k → LO.FirstOrder.Semiterm L ξ n) (σ : LO.FirstOrder.Semisentence L k) :
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_free {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} (ε : ℕ → M) {a : M} (p : LO.FirstOrder.SyntacticSemiformula L (n + 1)) :
                                    (LO.FirstOrder.Semiformula.Eval s e (a :>ₙ ε)) ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) p) ↔ (LO.FirstOrder.Semiformula.Eval s (e <: a) ε) p
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.eval_shift {L : LO.FirstOrder.Language} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} (ε : ℕ → M) {a : M} (p : LO.FirstOrder.SyntacticSemiformula L n) :
                                    theorem LO.FirstOrder.Semiformula.eval_iff_of_funEqOn {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {ε' : ξ → M} (p : LO.FirstOrder.Semiformula L ξ n) (h : Function.funEqOn p.fvar? ε ε') :
                                    theorem LO.FirstOrder.Semiformula.eval_toEmpty {L : LO.FirstOrder.Language} {ξ : Type v} {M : Type w} {s : LO.FirstOrder.Structure L M} {n : ℕ} {e : Fin n → M} {f : ξ → M} {p : LO.FirstOrder.Semiformula L ξ n} (hp : p.fvarList = []) :
                                    theorem LO.FirstOrder.Structure.ofEquiv_rel {M : Type u_2} {N : Type u_1} {L : LO.FirstOrder.Language} [s : LO.FirstOrder.Structure L M] (φ : M ≃ N) {k : ℕ} (r : L.Rel k) (v : Fin k → N) :
                                    theorem LO.FirstOrder.Structure.eval_ofEquiv_iff {M : Type u_2} {N : Type u_1} {L : LO.FirstOrder.Language} {ξ : Type v} [s : LO.FirstOrder.Structure L M] (φ : M ≃ N) {n : ℕ} {e : Fin n → N} {ε : ξ → N} {p : LO.FirstOrder.Semiformula L ξ n} :
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Equations
                                    • LO.FirstOrder.instTopStrucSyntacticFormula = { realize_top := ⋯ }
                                    Equations
                                    • LO.FirstOrder.instBotStrucSyntacticFormula = { realize_bot := ⋯ }
                                    Equations
                                    • LO.FirstOrder.instAndStrucSyntacticFormula = { realize_and := ⋯ }
                                    @[reducible, inline]
                                    Equations
                                    Instances For
                                      @[reducible, inline]
                                      Equations
                                      Instances For
                                        @[reducible, inline]
                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          Equations
                                          Instances For
                                            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 v} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {Φ : L₁.Hom L₂} {M : Type u} {s₂ : LO.FirstOrder.Structure L₂ M} {n : ℕ} {e : Fin n → M} {ε : ξ → M} {p : LO.FirstOrder.Semiformula L₁ ξ n} :