Documentation

Logic.FirstOrder.Basic.Syntax.Formula

Formulas of first-order logic #

This file defines the formulas of first-order logic.

p : Semiformula L ξ n is a (semi-)formula of language L with bounded variables of Fin n and free variables of ξ. The quantification is represented by de Bruijn index.

inductive LO.FirstOrder.Semiformula (L : LO.FirstOrder.Language) (ξ : Type u_1) :
ℕ → Type (max u_1 u_2)
Instances For
    @[reducible, inline]
    abbrev LO.FirstOrder.Formula (L : LO.FirstOrder.Language) (ξ : Type u_1) :
    Type (max u_1 u_2)
    Equations
    Instances For
      @[reducible, inline]
      Equations
      Instances For
        @[reducible, inline]
        Equations
        Instances For
          Equations
          Instances For
            Equations
            • LO.FirstOrder.Semiformula.instLogicalConnective = LO.LogicalConnective.mk
            Equations
            • LO.FirstOrder.Semiformula.instDeMorgan = { verum := ⋯, falsum := ⋯, imply := ⋯, and := ⋯, or := ⋯, neg := ⋯ }
            Equations
            • LO.FirstOrder.Semiformula.instUnivQuantifier = { univ := fun {n : ℕ} => LO.FirstOrder.Semiformula.all }
            Equations
            • LO.FirstOrder.Semiformula.instExQuantifier = { ex := fun {n : ℕ} => LO.FirstOrder.Semiformula.ex }
            def LO.FirstOrder.Semiformula.toStr {L : LO.FirstOrder.Language} {ξ : Type u_1} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] {n : ℕ} :
            Equations
            Instances For
              instance LO.FirstOrder.Semiformula.instRepr {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] :
              Equations
              instance LO.FirstOrder.Semiformula.instToString {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] :
              Equations
              • LO.FirstOrder.Semiformula.instToString = { toString := LO.FirstOrder.Semiformula.toStr }
              @[simp]
              @[simp]
              @[simp]
              theorem LO.FirstOrder.Semiformula.and_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p₁ : LO.FirstOrder.Semiformula L ξ n) (q₁ : LO.FirstOrder.Semiformula L ξ n) (p₂ : LO.FirstOrder.Semiformula L ξ n) (q₂ : LO.FirstOrder.Semiformula L ξ n) :
              p₁ ⋏ p₂ = q₁ ⋏ q₂ ↔ p₁ = q₁ ∧ p₂ = q₂
              @[simp]
              theorem LO.FirstOrder.Semiformula.or_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p₁ : LO.FirstOrder.Semiformula L ξ n) (q₁ : LO.FirstOrder.Semiformula L ξ n) (p₂ : LO.FirstOrder.Semiformula L ξ n) (q₂ : LO.FirstOrder.Semiformula L ξ n) :
              p₁ ⋎ p₂ = q₁ ⋎ q₂ ↔ p₁ = q₁ ∧ p₂ = q₂
              @[simp]
              theorem LO.FirstOrder.Semiformula.all_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (q : LO.FirstOrder.Semiformula L ξ (n + 1)) :
              ∀' p = ∀' q ↔ p = q
              @[simp]
              theorem LO.FirstOrder.Semiformula.ex_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (q : LO.FirstOrder.Semiformula L ξ (n + 1)) :
              ∃' p = ∃' q ↔ p = q
              @[simp]
              theorem LO.FirstOrder.Semiformula.univItr_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + k)) (q : LO.FirstOrder.Semiformula L ξ (n + k)) :
              ∀^[k] p = ∀^[k] q ↔ p = q
              @[simp]
              theorem LO.FirstOrder.Semiformula.exItr_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + k)) (q : LO.FirstOrder.Semiformula L ξ (n + k)) :
              ∃^[k] p = ∃^[k] q ↔ p = q
              @[simp]
              theorem LO.FirstOrder.Semiformula.imp_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p₁ : LO.FirstOrder.Semiformula L ξ n} {p₂ : LO.FirstOrder.Semiformula L ξ n} {q₁ : LO.FirstOrder.Semiformula L ξ n} {q₂ : LO.FirstOrder.Semiformula L ξ n} :
              p₁ ➝ p₂ = q₁ ➝ q₂ ↔ p₁ = q₁ ∧ p₂ = q₂
              @[reducible, inline]
              abbrev LO.FirstOrder.Semiformula.rel! {ξ : Type u_1} {n : ℕ} (L : LO.FirstOrder.Language) (k : ℕ) (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
              Equations
              Instances For
                @[reducible, inline]
                abbrev LO.FirstOrder.Semiformula.nrel! {ξ : Type u_1} {n : ℕ} (L : LO.FirstOrder.Language) (k : ℕ) (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                Equations
                Instances For
                  Equations
                  Instances For
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} :
                    ⊤.complexity = 0
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_bot {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} :
                    ⊥.complexity = 0
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                    (LO.FirstOrder.Semiformula.rel r v).complexity = 0
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                    (p ⋏ q).complexity = max p.complexity q.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_and' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                    (p.and q).complexity = max p.complexity q.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                    (p ⋎ q).complexity = max p.complexity q.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_or' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                    (p.or q).complexity = max p.complexity q.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                    (∀' p).complexity = p.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_all' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                    p.all.complexity = p.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                    (∃' p).complexity = p.complexity + 1
                    @[simp]
                    theorem LO.FirstOrder.Semiformula.complexity_ex' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                    p.ex.complexity = p.complexity + 1
                    def LO.FirstOrder.Semiformula.cases' {L : LO.FirstOrder.Language} {ξ : Type u_1} {C : (n : ℕ) → LO.FirstOrder.Semiformula L ξ n → Sort w} (hverum : {n : ℕ} → C n ⊤) (hfalsum : {n : ℕ} → C n ⊥) (hrel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → LO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → LO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.nrel r v)) (hand : {n : ℕ} → (p q : LO.FirstOrder.Semiformula L ξ n) → C n (p ⋏ q)) (hor : {n : ℕ} → (p q : LO.FirstOrder.Semiformula L ξ n) → C n (p ⋎ q)) (hall : {n : ℕ} → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C n (∀' p)) (hex : {n : ℕ} → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C n (∃' p)) {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                    C n p
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def LO.FirstOrder.Semiformula.rec' {L : LO.FirstOrder.Language} {ξ : Type u_1} {C : (n : ℕ) → LO.FirstOrder.Semiformula L ξ n → Sort w} (hverum : {n : ℕ} → C n ⊤) (hfalsum : {n : ℕ} → C n ⊥) (hrel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → LO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → LO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.nrel r v)) (hand : {n : ℕ} → (p q : LO.FirstOrder.Semiformula L ξ n) → C n p → C n q → C n (p ⋏ q)) (hor : {n : ℕ} → (p q : LO.FirstOrder.Semiformula L ξ n) → C n p → C n q → C n (p ⋎ q)) (hall : {n : ℕ} → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) p → C n (∀' p)) (hex : {n : ℕ} → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) p → C n (∃' p)) {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                      C n p
                      Equations
                      Instances For
                        @[simp]
                        theorem LO.FirstOrder.Semiformula.complexity_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                        (∼p).complexity = p.complexity
                        def LO.FirstOrder.Semiformula.hasDecEq {L : LO.FirstOrder.Language} {ξ : Type u_1} [(k : ℕ) → DecidableEq (L.Func k)] [(k : ℕ) → DecidableEq (L.Rel k)] [DecidableEq ξ] {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                        Decidable (p = q)
                        Instances For
                          instance LO.FirstOrder.Semiformula.instDecidableEq {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [(k : ℕ) → DecidableEq (L.Func k)] [(k : ℕ) → DecidableEq (L.Rel k)] [DecidableEq ξ] :
                          Equations
                          • LO.FirstOrder.Semiformula.instDecidableEq = LO.FirstOrder.Semiformula.hasDecEq
                          Equations
                          Instances For
                            theorem LO.FirstOrder.Semiformula.fv_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                            (LO.FirstOrder.Semiformula.rel r v).fv = Finset.univ.biUnion fun (i : Fin k) => (v i).fv
                            theorem LO.FirstOrder.Semiformula.fv_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                            (LO.FirstOrder.Semiformula.nrel r v).fv = Finset.univ.biUnion fun (i : Fin k) => (v i).fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                            (p ⋏ q).fv = p.fv ∪ q.fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                            (p ⋎ q).fv = p.fv ∪ q.fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                            (∀' p).fv = p.fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                            (∃' p).fv = p.fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_not {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
                            (∼p).fv = p.fv
                            @[simp]
                            theorem LO.FirstOrder.Semiformula.fv_imp {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                            (p ➝ q).fv = p.fv ∪ q.fv
                            Equations
                            Instances For
                              @[simp]
                              @[simp]
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                              (p ⋏ q).qr = max p.qr q.qr
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                              (p ⋎ q).qr = max p.qr q.qr
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                              (∀' p).qr = p.qr + 1
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                              (∃' p).qr = p.qr + 1
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                              (∼p).qr = p.qr
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_imply {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                              (p ➝ q).qr = max p.qr q.qr
                              @[simp]
                              theorem LO.FirstOrder.Semiformula.qr_iff {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                              (p ⭤ q).qr = max p.qr q.qr
                              Equations
                              • p.Open = (p.qr = 0)
                              Instances For
                                @[simp]
                                @[simp]
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {k : ℕ} (r : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
                                (p ⋏ q).Open ↔ p.Open ∧ q.Open
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
                                (p ⋎ q).Open ↔ p.Open ∧ q.Open
                                @[simp]
                                @[simp]
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} :
                                (∼p).Open ↔ p.Open
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_imply {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
                                (p ➝ q).Open ↔ p.Open ∧ q.Open
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.open_iff {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
                                (p ⭤ q).Open ↔ p.Open ∧ q.Open
                                Equations
                                Instances For
                                  @[reducible, inline]
                                  Equations
                                  • p.fvar? x = (x ∈ p.fvarList)
                                  Instances For
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} :
                                    ⊤.fvarList = []
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_bot {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} :
                                    ⊥.fvarList = []
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                                    (p ⋏ q).fvarList = p.fvarList ++ q.fvarList
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                                    (p ⋎ q).fvarList = p.fvarList ++ q.fvarList
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                                    (∀' p).fvarList = p.fvarList
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                                    (∃' p).fvarList = p.fvarList
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_univClosure {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                                    (∀* p).fvarList = p.fvarList
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvarList_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (p : LO.FirstOrder.Semiformula L ξ n) :
                                    (∼p).fvarList = p.fvarList
                                    @[simp]
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) {k : ℕ} (R : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                                    (LO.FirstOrder.Semiformula.rel R v).fvar? x ↔ ∃ (i : Fin k), (v i).fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) {k : ℕ} (R : L.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L ξ n) :
                                    (LO.FirstOrder.Semiformula.nrel R v).fvar? x ↔ ∃ (i : Fin k), (v i).fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) :
                                    ¬⊤.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_falsum {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) :
                                    ¬⊥.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                                    (p ⋏ q).fvar? x ↔ p.fvar? x ∨ q.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
                                    (p ⋎ q).fvar? x ↔ p.fvar? x ∨ q.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                                    (∀' p).fvar? x ↔ p.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
                                    (∃' p).fvar? x ↔ p.fvar? x
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.fvar?_univClosure {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) :
                                    (∀* p).fvar? x ↔ p.fvar? x
                                    theorem LO.FirstOrder.Semiformula.List.maximam?_some_of_not_nil {α : Type u_2} [LinearOrder α] {l : List α} (h : l ≠ []) :
                                    l.maximum?.isSome = true
                                    @[simp]
                                    theorem LO.FirstOrder.Semiformula.le_foldl_max_self {α : Type u_2} [LinearOrder α] (x : α) (l : List α) :
                                    x ≤ List.foldl max x l
                                    theorem LO.FirstOrder.Semiformula.le_foldl_max {α : Type u_2} [LinearOrder α] (x : α) (l : List α) {y : α} :
                                    y ∈ l → y ≤ List.foldl max x l
                                    theorem LO.FirstOrder.Semiformula.List.maximam?_eq_some {α : Type u_2} [LinearOrder α] {l : List α} {a : α} (h : l.maximum? = some a) (x : α) :
                                    x ∈ l → x ≤ a
                                    theorem LO.FirstOrder.Semiformula.ne_of_ne_complexity {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : ℕ} {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} (h : p.complexity ≠ q.complexity) :
                                    p ≠ q
                                    Equations
                                    Instances For
                                      theorem LO.FirstOrder.Semiformula.lMap_rel {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} {k : ℕ} (r : L₁.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L₁ ξ n) :
                                      @[simp]
                                      theorem LO.FirstOrder.Semiformula.lMap_rel₀ {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0 → LO.FirstOrder.Semiterm L₁ ξ n) :
                                      @[simp]
                                      theorem LO.FirstOrder.Semiformula.lMap_rel₂ {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ : LO.FirstOrder.Semiterm L₁ ξ n) (t₂ : LO.FirstOrder.Semiterm L₁ ξ n) :
                                      theorem LO.FirstOrder.Semiformula.lMap_nrel {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} {k : ℕ} (r : L₁.Rel k) (v : Fin k → LO.FirstOrder.Semiterm L₁ ξ n) :
                                      @[simp]
                                      theorem LO.FirstOrder.Semiformula.lMap_nrel₀ {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0 → LO.FirstOrder.Semiterm L₁ ξ n) :
                                      @[simp]
                                      theorem LO.FirstOrder.Semiformula.lMap_nrel₂ {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ : LO.FirstOrder.Semiterm L₁ ξ n) (t₂ : LO.FirstOrder.Semiterm L₁ ξ n) :
                                      @[simp]
                                      theorem LO.FirstOrder.Semiformula.fvarList_lMap {n : ℕ} {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} (Φ : L₁.Hom L₂) (p : LO.FirstOrder.Semiformula L₁ ξ n) :
                                      ((LO.FirstOrder.Semiformula.lMap Φ) p).fvarList = p.fvarList
                                      Equations
                                      Instances For
                                        Equations
                                        • p.fvEnumInv i = if hi : i < p.fvarList.length then p.fvarList.get ⟨i, hi⟩ else default
                                        Instances For
                                          theorem LO.FirstOrder.Semiformula.fvEnumInv_fvEnum {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] [Inhabited ξ] {p : LO.FirstOrder.Semiformula L ξ n} {x : ξ} (hx : x ∈ p.fvarList) :
                                          p.fvEnumInv (p.fvEnum x) = x
                                          def LO.FirstOrder.Semiformula.fvListing {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
                                          ξ → Fin (p.fvarList.length + 1)
                                          Equations
                                          Instances For
                                            def LO.FirstOrder.Semiformula.fvListingInv {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type u_2} [Inhabited ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
                                            Fin (p.fvarList.length + 1) → ξ
                                            Equations
                                            • p.fvListingInv i = if hi : ↑i < p.fvarList.length then p.fvarList.get ⟨↑i, hi⟩ else default
                                            Instances For
                                              theorem LO.FirstOrder.Semiformula.fvListingInv_fvListing {n : ℕ} {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] [Inhabited ξ] {p : LO.FirstOrder.Semiformula L ξ n} {x : ξ} (hx : x ∈ p.fvarList) :
                                              p.fvListingInv (p.fvListing x) = x
                                              @[reducible, inline]
                                              Equations
                                              Instances For
                                                Equations
                                                • LO.FirstOrder.instCollectionSyntacticFormulaTheory = inferInstance
                                                Equations
                                                • LO.FirstOrder.instCollectionSentenceClosedTheory = inferInstance
                                                Equations