Documentation

Foundation.FirstOrder.Intuitionistic.Formula

Formulas of intuitionistic first-order logic #

This file defines the formulas of first-order logic.

φ : 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 : Language) (ξ : Type u_1) :
Type (max u_1 u_2)
Instances For
    @[reducible, inline]
    abbrev LO.FirstOrder.Formulaᵢ (L : Language) (ξ : Type u_1) :
    Type (max u_1 u_2)
    Equations
    Instances For
      @[reducible, inline]
      Equations
      Instances For
        @[reducible, inline]
        Equations
        Instances For
          @[reducible, inline]
          Equations
          Instances For
            @[reducible, inline]
            abbrev LO.FirstOrder.Semiformulaᵢ.neg {L : Language} {ξ : Type u_2} {n : } (φ : Semiformulaᵢ L ξ n) :
            Equations
            Instances For
              @[reducible, inline]
              abbrev LO.FirstOrder.Semiformulaᵢ.verum {L : Language} {ξ : Type u_2} {n : } :
              Equations
              Instances For
                @[implicit_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                theorem LO.FirstOrder.Semiformulaᵢ.neg_def {L : Language} {ξ : Type u_1} {n : } (φ : Semiformulaᵢ L ξ n) :
                φ = φ 🡒
                def LO.FirstOrder.Semiformulaᵢ.toStr {ξ : Type u_1} {L : Language} [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] {n : } :
                Equations
                Instances For
                  @[implicit_reducible]
                  instance LO.FirstOrder.Semiformulaᵢ.instRepr {ξ : Type u_1} {L : Language} [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] {n : } :
                  Equations
                  @[implicit_reducible]
                  instance LO.FirstOrder.Semiformulaᵢ.instToString {ξ : Type u_1} {L : Language} [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] {n : } :
                  Equations
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.and_inj {L : Language} {ξ : Type u_1} {n : } (φ₁ ψ₁ φ₂ ψ₂ : Semiformulaᵢ L ξ n) :
                  φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.or_inj {L : Language} {ξ : Type u_1} {n : } (φ₁ ψ₁ φ₂ ψ₂ : Semiformulaᵢ L ξ n) :
                  φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.imp_inj {L : Language} {ξ : Type u_1} {n : } {φ₁ φ₂ ψ₁ ψ₂ : Semiformulaᵢ L ξ n} :
                  φ₁ 🡒 φ₂ = ψ₁ 🡒 ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.all_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ (n + 1)) :
                  ∀¹ φ = ∀¹ ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.exs_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ (n + 1)) :
                  ∃¹ φ = ∃¹ ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.allClosure_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  ∀¹* φ = ∀¹* ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.exsClosure_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  ∃¹* φ = ∃¹* ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.allItr_inj {L : Language} {ξ : Type u_1} {n k : } (φ ψ : Semiformulaᵢ L ξ (n + k)) :
                  ∀¹^[k] φ = ∀¹^[k] ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.exsItr_inj {L : Language} {ξ : Type u_1} {n k : } (φ ψ : Semiformulaᵢ L ξ (n + k)) :
                  ∃¹^[k] φ = ∃¹^[k] ψ φ = ψ
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
                  (rel r v).complexity = 0
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_and {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_and' {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_or {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_or' {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_imp {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_imp' {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_all {L : Language} {ξ : Type u_1} {n : } (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_all' {L : Language} {ξ : Type u_1} {n : } (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_exs {L : Language} {ξ : Type u_1} {n : } (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem LO.FirstOrder.Semiformulaᵢ.complexity_exs' {L : Language} {ξ : Type u_1} {n : } (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  def LO.FirstOrder.Semiformulaᵢ.cases' {L : Language} {ξ : Type u_2} {C : (n : ) → Semiformulaᵢ L ξ nSort w} (hRel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (rel r v)) (hFalsum : {n : } → C n ) (hAnd : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n (φ ψ)) (hOr : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n (φ ψ)) (hImp : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n (φ 🡒 ψ)) (hAll : {n : } → (φ : Semiformulaᵢ L ξ (n + 1)) → C n (∀¹ φ)) (hExs : {n : } → (φ : Semiformulaᵢ L ξ (n + 1)) → C n (∃¹ φ)) {n : } (φ : Semiformulaᵢ L ξ n) :
                  C n φ
                  Equations
                  Instances For
                    def LO.FirstOrder.Semiformulaᵢ.rec' {L : Language} {ξ : Type u_2} {C : (n : ) → Semiformulaᵢ L ξ nSort w} (hRel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (rel r v)) (hFalsum : {n : } → C n ) (hAnd : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n φC n ψC n (φ ψ)) (hOr : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n φC n ψC n (φ ψ)) (hImp : {n : } → (φ ψ : Semiformulaᵢ L ξ n) → C n φC n ψC n (φ 🡒 ψ)) (hAll : {n : } → (φ : Semiformulaᵢ L ξ (n + 1)) → C (n + 1) φC n (∀¹ φ)) (hExs : {n : } → (φ : Semiformulaᵢ L ξ (n + 1)) → C (n + 1) φC n (∃¹ φ)) {n : } (φ : Semiformulaᵢ L ξ n) :
                    C n φ
                    Equations
                    Instances For
                      def LO.FirstOrder.Semiformulaᵢ.hasDecEq {ξ : Type u_1} {L : Language} [L.DecidableEq] [DecidableEq ξ] {n : } (φ ψ : Semiformulaᵢ L ξ n) :
                      Decidable (φ = ψ)
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        (Weak) Negative formula #

                        inductive LO.FirstOrder.Semiformulaᵢ.IsNegative {L : Language} {ξ : Type u_2} {n : } :
                        Semiformulaᵢ L ξ nProp
                        Instances For
                          @[simp]
                          @[simp]
                          @[simp]
                          @[simp]
                          theorem LO.FirstOrder.Semiformulaᵢ.IsNegative.not_or {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformulaᵢ L ξ n} :
                          @[simp]
                          @[simp]
                          theorem LO.FirstOrder.Semiformulaᵢ.IsNegative.not_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
                          @[simp]