Documentation

Foundation.Modal.Formula

inductive LO.Modal.Formula (α : Type u) :
Instances For
    @[reducible, inline]
    abbrev LO.Modal.Formula.neg {α : Type u_1} (φ : Formula α) :
    Equations
    Instances For
      @[reducible, inline]
      abbrev LO.Modal.Formula.verum {α : Type u_1} :
      Equations
      Instances For
        @[reducible, inline]
        abbrev LO.Modal.Formula.top {α : Type u_1} :
        Equations
        Instances For
          @[reducible, inline]
          abbrev LO.Modal.Formula.or {α : Type u_1} (φ ψ : Formula α) :
          Equations
          • φ.or ψ = φ.neg.imp ψ
          Instances For
            @[reducible, inline]
            abbrev LO.Modal.Formula.and {α : Type u_1} (φ ψ : Formula α) :
            Equations
            • φ.and ψ = (φ.imp ψ.neg).neg
            Instances For
              @[reducible, inline]
              abbrev LO.Modal.Formula.dia {α : Type u_1} (φ : Formula α) :
              Equations
              • φ.dia = φ.neg.box.neg
              Instances For
                Equations
                Instances For
                  instance LO.Modal.Formula.instRepr {α : Type u} [ToString α] :
                  Equations
                  @[simp]
                  theorem LO.Modal.Formula.or_eq {α : Type u} (φ ψ : Formula α) :
                  φ.or ψ = φ ⋎ ψ
                  theorem LO.Modal.Formula.and_eq {α : Type u} (φ ψ : Formula α) :
                  φ.and ψ = φ ⋏ ψ
                  theorem LO.Modal.Formula.imp_eq {α : Type u} (φ ψ : Formula α) :
                  φ.imp ψ = φ ➝ ψ
                  theorem LO.Modal.Formula.neg_eq {α : Type u} (φ : Formula α) :
                  φ.neg = ∼φ
                  theorem LO.Modal.Formula.box_eq {α : Type u} (φ : Formula α) :
                  φ.box = □φ
                  theorem LO.Modal.Formula.dia_eq {α : Type u} (φ : Formula α) :
                  φ.dia = ◇φ
                  theorem LO.Modal.Formula.iff_eq {α : Type u} (φ ψ : Formula α) :
                  φ ⭤ ψ = (φ ➝ ψ) ⋏ (ψ ➝ φ)
                  @[simp]
                  theorem LO.Modal.Formula.and_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : Formula α) :
                  φ₁ ⋏ φ₂ = ψ₁ ⋏ ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.or_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : Formula α) :
                  φ₁ ⋎ φ₂ = ψ₁ ⋎ ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.imp_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : Formula α) :
                  φ₁ ➝ φ₂ = ψ₁ ➝ ψ₂ ↔ φ₁ = ψ₁ ∧ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.neg_inj {α : Type u} (φ ψ : Formula α) :
                  ∼φ = ∼ψ ↔ φ = ψ

                  Formula complexity

                  Equations
                  Instances For

                    Max numbers of □

                    Equations
                    Instances For
                      @[simp]
                      theorem LO.Modal.Formula.degree_neg {α : Type u} (φ : Formula α) :
                      (∼φ).degree = φ.degree
                      @[simp]
                      theorem LO.Modal.Formula.degree_imp {α : Type u} (φ ψ : Formula α) :
                      (φ ➝ ψ).degree = φ.degree ⊔ ψ.degree
                      def LO.Modal.Formula.cases' {α : Type u} {C : Formula α → Sort w} (hfalsum : C ⊥) (hatom : (a : α) → C (atom a)) (himp : (φ ψ : Formula α) → C (φ ➝ ψ)) (hbox : (φ : Formula α) → C (□φ)) (φ : Formula α) :
                      C φ
                      Equations
                      Instances For
                        def LO.Modal.Formula.rec' {α : Type u} {C : Formula α → Sort w} (hfalsum : C ⊥) (hatom : (a : α) → C (atom a)) (himp : (φ ψ : Formula α) → C φ → C ψ → C (φ ➝ ψ)) (hbox : (φ : Formula α) → C φ → C (□φ)) (φ : Formula α) :
                        C φ
                        Equations
                        Instances For
                          def LO.Modal.Formula.hasDecEq {α : Type u} [DecidableEq α] (φ ψ : Formula α) :
                          Decidable (φ = ψ)
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            Instances For
                              @[reducible, inline]
                              abbrev LO.Modal.Formulae (α : Type u_1) :
                              Type u_1
                              Equations
                              Instances For
                                @[reducible, inline]
                                abbrev LO.Modal.Theory (α : Type u_1) :
                                Type u_1
                                Equations
                                Instances For
                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem LO.Modal.Formula.subformulae.mem_self {α : Type u_1} [DecidableEq α] {φ : Formula α} :
                                    φ ∈ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp {α : Type u_1} [DecidableEq α] {φ ψ χ : Formula α} (h : ψ ➝ χ ∈ φ.subformulae) :
                                    ψ ∈ φ.subformulae ∧ χ ∈ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp₁ {α : Type u_1} [DecidableEq α] {φ ψ χ : Formula α} (h : ψ ➝ χ ∈ φ.subformulae) :
                                    ψ ∈ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp₂ {α : Type u_1} [DecidableEq α] {φ ψ χ : Formula α} (h : ψ ➝ χ ∈ φ.subformulae) :
                                    χ ∈ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_box {α : Type u_1} [DecidableEq α] {φ ψ : Formula α} (h : □ψ ∈ φ.subformulae := by assumption) :
                                    ψ ∈ φ.subformulae
                                    @[simp]
                                    theorem LO.Modal.Formula.subformulae.complexity_lower {α : Type u_1} [DecidableEq α] {φ ψ : Formula α} (h : ψ ∈ φ.subformulae) :
                                    ψ.complexity ≤ φ.complexity
                                    Instances
                                      instance LO.Modal.SubformulaClosed.instSubformulaClosedSubformulae {α : Type u_1} [DecidableEq α] {φ : Formula α} :
                                      φ.subformulae.SubformulaClosed
                                      theorem LO.Modal.SubformulaClosed.mem_box {α : Type u_1} {φ : Formula α} {X : Formulae α} [closed : X.SubformulaClosed] (h : □φ ∈ X) :
                                      φ ∈ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp {α : Type u_1} {φ : Formula α} {X : Formulae α} [closed : X.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ X) :
                                      φ ∈ X ∧ ψ ∈ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp₁ {α : Type u_1} {φ : Formula α} {X : Formulae α} [closed : X.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ X) :
                                      φ ∈ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp₂ {α : Type u_1} {φ : Formula α} {X : Formulae α} [closed : X.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ X) :
                                      ψ ∈ X
                                      Instances
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_box {α : Type u_1} {φ : Formula α} {T : Theory α} [T_closed : T.SubformulaClosed] (h : □φ ∈ T) :
                                        φ ∈ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp {α : Type u_1} {φ : Formula α} {T : Theory α} [T_closed : T.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ T) :
                                        φ ∈ T ∧ ψ ∈ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp₁ {α : Type u_1} {φ : Formula α} {T : Theory α} [T_closed : T.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ T) :
                                        φ ∈ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp₂ {α : Type u_1} {φ : Formula α} {T : Theory α} [T_closed : T.SubformulaClosed] {ψ : Formula α} (h : φ ➝ ψ ∈ T) :
                                        ψ ∈ T
                                        def LO.Modal.Formula.cases_neg {α : Type u_1} [DecidableEq α] {C : Formula α → Sort w} (hfalsum : C ⊥) (hatom : (a : α) → C (atom a)) (hneg : (φ : Formula α) → C (∼φ)) (himp : (φ ψ : Formula α) → ψ ≠ ⊥ → C (φ ➝ ψ)) (hbox : (φ : Formula α) → C (□φ)) (φ : Formula α) :
                                        C φ
                                        Equations
                                        Instances For
                                          def LO.Modal.Formula.rec_neg {α : Type u_1} [DecidableEq α] {C : Formula α → Sort w} (hfalsum : C ⊥) (hatom : (a : α) → C (atom a)) (hneg : (φ : Formula α) → C φ → C (∼φ)) (himp : (φ ψ : Formula α) → ψ ≠ ⊥ → C φ → C ψ → C (φ ➝ ψ)) (hbox : (φ : Formula α) → C φ → C (□φ)) (φ : Formula α) :
                                          C φ
                                          Equations
                                          Instances For
                                            def LO.Modal.Formula.negated {α : Type u_1} :
                                            Formula α → Bool
                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_def {α : Type u_1} {φ : Formula α} :
                                              (∼φ).negated = true
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_imp {α : Type u_1} {φ ψ : Formula α} :
                                              (φ ➝ ψ).negated = true ↔ ψ = ⊥
                                              theorem LO.Modal.Formula.negated_iff {α : Type u_1} {φ : Formula α} [DecidableEq α] :
                                              φ.negated = true ↔ ∃ (ψ : Formula α), φ = ∼ψ
                                              theorem LO.Modal.Formula.not_negated_iff {α : Type u_1} {φ : Formula α} [DecidableEq α] :
                                              ¬φ.negated = true ↔ ∀ (ψ : Formula α), φ ≠ ∼ψ
                                              def LO.Modal.Formula.rec_negated {α : Type u_1} [DecidableEq α] {C : Formula α → Sort w} (hfalsum : C ⊥) (hatom : (a : α) → C (atom a)) (hneg : (φ : Formula α) → C φ → C (∼φ)) (himp : (φ ψ : Formula α) → ¬(φ ➝ ψ).negated = true → C φ → C ψ → C (φ ➝ ψ)) (hbox : (φ : Formula α) → C φ → C (□φ)) (φ : Formula α) :
                                              C φ
                                              Equations
                                              Instances For
                                                def LO.Modal.Formula.toNat {α : Type u_1} [Encodable α] :
                                                Formula α → ℕ
                                                Equations
                                                Instances For
                                                  @[irreducible]
                                                  def LO.Modal.Formula.ofNat {α : Type u_1} [Encodable α] :
                                                  ℕ → Option (Formula α)
                                                  Equations
                                                  Instances For
                                                    theorem LO.Modal.Formula.ofNat_toNat {α : Type u_1} [Encodable α] (φ : Formula α) :
                                                    ofNat φ.toNat = some φ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_atom {α : Type u_1} {σ : α → Formula α} {a : α} :
                                                    subst σ (atom a) = σ a
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_bot {α : Type u_1} {σ : α → Formula α} :
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_imp {α : Type u_1} {φ ψ : Formula α} {σ : α → Formula α} :
                                                    subst σ (φ ➝ ψ) = subst σ φ ➝ subst σ ψ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_neg {α : Type u_1} {φ : Formula α} {σ : α → Formula α} :
                                                    subst σ (∼φ) = ∼subst σ φ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_and {α : Type u_1} {φ ψ : Formula α} {σ : α → Formula α} :
                                                    subst σ (φ ⋏ ψ) = subst σ φ ⋏ subst σ ψ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_or {α : Type u_1} {φ ψ : Formula α} {σ : α → Formula α} :
                                                    subst σ (φ ⋎ ψ) = subst σ φ ⋎ subst σ ψ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_iff {α : Type u_1} {φ ψ : Formula α} {σ : α → Formula α} :
                                                    subst σ (φ ⭤ ψ) = subst σ φ ⭤ subst σ ψ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_box {α : Type u_1} {φ : Formula α} {σ : α → Formula α} :
                                                    subst σ (□φ) = □subst σ φ
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_dia {α : Type u_1} {φ : Formula α} {σ : α → Formula α} :
                                                    subst σ (◇φ) = ◇subst σ φ
                                                    class LO.Modal.Theory.SubstClosed {α : Type u_1} (T : Theory α) :
                                                    Instances
                                                      def LO.Modal.Theory.instSubstClosed {α : Type u_1} {T : Theory α} (hAtom : ∀ (a : α), Formula.atom a ∈ T → ∀ {σ : α → Formula α}, Formula.subst σ (Formula.atom a) ∈ T) (hImp : ∀ {φ ψ : Formula α}, φ ➝ ψ ∈ T → ∀ {σ : α → Formula α}, Formula.subst σ (φ ➝ ψ) ∈ T) (hBox : ∀ {φ : Formula α}, □φ ∈ T → ∀ {σ : α → Formula α}, Formula.subst σ (□φ) ∈ T) :
                                                      T.SubstClosed
                                                      Equations
                                                      • ⋯ = ⋯
                                                      Instances For
                                                        theorem LO.Modal.Theory.SubstClosed.mem_atom {α : Type u_1} {T : Theory α} [T.SubstClosed] {a : α} {σ : α → Formula α} (h : Formula.atom a ∈ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_bot {α : Type u_1} {T : Theory α} [T.SubstClosed] {σ : α → Formula α} (h : ⊥ ∈ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_imp {α : Type u_1} {T : Theory α} [T.SubstClosed] {φ ψ : Formula α} {σ : α → Formula α} (h : φ ➝ ψ ∈ T) :
                                                        Formula.subst σ (φ ➝ ψ) ∈ T
                                                        theorem LO.Modal.Theory.SubstClosed.mem_neg {α : Type u_1} {T : Theory α} [T.SubstClosed] {φ : Formula α} {σ : α → Formula α} (h : ∼φ ∈ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_and {α : Type u_1} {T : Theory α} [T.SubstClosed] {φ ψ : Formula α} {σ : α → Formula α} (h : φ ⋏ ψ ∈ T) :
                                                        Formula.subst σ (φ ⋏ ψ) ∈ T
                                                        theorem LO.Modal.Theory.SubstClosed.mem_or {α : Type u_1} {T : Theory α} [T.SubstClosed] {φ ψ : Formula α} {σ : α → Formula α} (h : φ ⋎ ψ ∈ T) :
                                                        Formula.subst σ (φ ⋎ ψ) ∈ T
                                                        theorem LO.Modal.Theory.SubstClosed.mem_box {α : Type u_1} {T : Theory α} [T.SubstClosed] {φ : Formula α} {σ : α → Formula α} (h : □φ ∈ T) :
                                                        instance LO.Modal.Theory.SubstClosed.union {α : Type u_1} {T₁ T₂ : Theory α} [T₁_closed : T₁.SubstClosed] [T₂_closed : T₂.SubstClosed] :
                                                        (T₁ ∪ T₂).SubstClosed