Documentation

Foundation.FirstOrder.Syntax.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 FFL.FirstOrder.Semiformulaᵢ (L : Language) (ξ : Type u_1) :
ℕ → Type (max u_1 u_2)
Instances For
    @[reducible, inline]
    abbrev FFL.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 FFL.FirstOrder.Semiformulaᵢ.neg {L : Language} {ξ : Type u_2} {n : ℕ} (φ : Semiformulaᵢ L ξ n) :
            Equations
            Instances For
              @[reducible, inline]
              Equations
              Instances For
                @[instance_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                theorem FFL.FirstOrder.Semiformulaᵢ.neg_def {L : Language} {ξ : Type u_1} {n : ℕ} (φ : Semiformulaᵢ L ξ n) :
                ∼φ = φ 🡒 ⊥
                def FFL.FirstOrder.Semiformulaᵢ.toStr {ξ : Type u_1} {L : Language} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] {n : ℕ} :
                Equations
                Instances For
                  @[instance_reducible]
                  instance FFL.FirstOrder.Semiformulaᵢ.instRepr {ξ : Type u_1} {L : Language} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] {n : ℕ} :
                  Equations
                  @[instance_reducible]
                  instance FFL.FirstOrder.Semiformulaᵢ.instToString {ξ : Type u_1} {L : Language} [(k : ℕ) → ToString (L.Func k)] [(k : ℕ) → ToString (L.Rel k)] [ToString ξ] {n : ℕ} :
                  Equations
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.and_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ₁ ψ₁ φ₂ ψ₂ : Semiformulaᵢ L ξ n) :
                  φ₁ ⋏ φ₂ = ψ₁ ⋏ ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.or_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ₁ ψ₁ φ₂ ψ₂ : Semiformulaᵢ L ξ n) :
                  φ₁ ⋎ φ₂ = ψ₁ ⋎ ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.imp_inj {L : Language} {ξ : Type u_1} {n : ℕ} {φ₁ φ₂ ψ₁ ψ₂ : Semiformulaᵢ L ξ n} :
                  φ₁ 🡒 φ₂ = ψ₁ 🡒 ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.all_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ (n + 1)) :
                  ∀¹ φ = ∀¹ ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.exs_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ (n + 1)) :
                  ∃¹ φ = ∃¹ ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.allClosure_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  ∀¹* φ = ∀¹* ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.exsClosure_inj {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  ∃¹* φ = ∃¹* ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.allItr_inj {L : Language} {ξ : Type u_1} {n k : ℕ} (φ ψ : Semiformulaᵢ L ξ (n + k)) :
                  ∀¹^[k] φ = ∀¹^[k] ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.exsItr_inj {L : Language} {ξ : Type u_1} {n k : ℕ} (φ ψ : Semiformulaᵢ L ξ (n + k)) :
                  ∃¹^[k] φ = ∃¹^[k] ψ ↔ φ = ψ
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_rel {L : Language} {ξ : Type u_1} {n k : ℕ} (r : L.Rel k) (v : Fin k → Semiterm L ξ n) :
                  (rel r v).complexity = 0
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_and {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_and' {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_or {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_or' {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_imp {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_imp' {L : Language} {ξ : Type u_1} {n : ℕ} (φ ψ : Semiformulaᵢ L ξ n) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_all {L : Language} {ξ : Type u_1} {n : ℕ} (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_all' {L : Language} {ξ : Type u_1} {n : ℕ} (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_exs {L : Language} {ξ : Type u_1} {n : ℕ} (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  theorem FFL.FirstOrder.Semiformulaᵢ.complexity_exs' {L : Language} {ξ : Type u_1} {n : ℕ} (φ : Semiformulaᵢ L ξ (n + 1)) :
                  @[simp]
                  def FFL.FirstOrder.Semiformulaᵢ.cases' {L : Language} {ξ : Type u_2} {C : (n : ℕ) → Semiformulaᵢ L ξ n → Sort w} (hRel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → Semiterm 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 FFL.FirstOrder.Semiformulaᵢ.rec' {L : Language} {ξ : Type u_2} {C : (n : ℕ) → Semiformulaᵢ L ξ n → Sort w} (hRel : {n k : ℕ} → (r : L.Rel k) → (v : Fin k → Semiterm 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 FFL.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 FFL.FirstOrder.Semiformulaᵢ.IsNegative {L : Language} {ξ : Type u_2} {n : ℕ} :
                        Semiformulaᵢ L ξ n → Prop
                        Instances For
                          @[simp]
                          @[simp]
                          @[simp]
                          theorem FFL.FirstOrder.Semiformulaᵢ.IsNegative.not_or {L : Language} {ξ : Type u_1} {n : ℕ} {φ ψ : Semiformulaᵢ L ξ n} :
                          @[simp]
                          @[simp]
                          theorem FFL.FirstOrder.Semiformulaᵢ.IsNegative.not_rel {L : Language} {ξ : Type u_1} {n k : ℕ} (r : L.Rel k) (v : Fin k → Semiterm L ξ n) :
                          @[simp]