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 kLO.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 kLO.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 kLO.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 kLO.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 ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.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 ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.nrel r v)) (hand : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n pC n qC n (p q)) (hor : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n pC n qC n (p q)) (hall : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) pC n (∀' p)) (hex : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) pC 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 kLO.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 kLO.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 kLO.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 kLO.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 kLO.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 kLO.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 kLO.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 kLO.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 ly 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 lx 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 kLO.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 0LO.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 kLO.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 0LO.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