Documentation

Foundation.Modal.Formula

inductive LO.Modal.Formula (α : Type u) :
Instances For
    Equations
    • LO.Modal.instDecidableEqFormula = LO.Modal.decEqFormula✝
    @[reducible, inline]
    Equations
    • φ.neg = φ.imp LO.Modal.Formula.falsum
    Instances For
      @[reducible, inline]
      Equations
      • LO.Modal.Formula.verum = LO.Modal.Formula.falsum.imp LO.Modal.Formula.falsum
      Instances For
        @[reducible, inline]
        Equations
        • LO.Modal.Formula.top = LO.Modal.Formula.falsum.imp LO.Modal.Formula.falsum
        Instances For
          @[reducible, inline]
          abbrev LO.Modal.Formula.or {α : Type u_1} (φ ψ : LO.Modal.Formula α) :
          Equations
          • φ.or ψ = φ.neg.imp ψ
          Instances For
            @[reducible, inline]
            abbrev LO.Modal.Formula.and {α : Type u_1} (φ ψ : LO.Modal.Formula α) :
            Equations
            • φ.and ψ = (φ.imp ψ.neg).neg
            Instances For
              @[reducible, inline]
              Equations
              • φ.dia = φ.neg.box.neg
              Instances For
                Equations
                • LO.Modal.Formula.instBasicModalLogicalConnective = LO.BasicModalLogicalConnective.mk
                Equations
                Instances For
                  Equations
                  Equations
                  • LO.Modal.Formula.instToString = { toString := LO.Modal.Formula.toStr }
                  Equations
                  • LO.Modal.Formula.instCoe = { coe := LO.Modal.Formula.atom }
                  @[simp]
                  theorem LO.Modal.Formula.or_eq {α : Type u} (φ ψ : LO.Modal.Formula α) :
                  φ.or ψ = φ ψ
                  theorem LO.Modal.Formula.and_eq {α : Type u} (φ ψ : LO.Modal.Formula α) :
                  φ.and ψ = φ ψ
                  theorem LO.Modal.Formula.imp_eq {α : Type u} (φ ψ : LO.Modal.Formula α) :
                  φ.imp ψ = φ ψ
                  theorem LO.Modal.Formula.neg_eq {α : Type u} (φ : LO.Modal.Formula α) :
                  φ.neg = φ
                  theorem LO.Modal.Formula.box_eq {α : Type u} (φ : LO.Modal.Formula α) :
                  φ.box = φ
                  theorem LO.Modal.Formula.dia_eq {α : Type u} (φ : LO.Modal.Formula α) :
                  φ.dia = φ
                  theorem LO.Modal.Formula.iff_eq {α : Type u} (φ ψ : LO.Modal.Formula α) :
                  φ ψ = (φ ψ) (ψ φ)
                  theorem LO.Modal.Formula.falsum_eq {α : Type u} :
                  LO.Modal.Formula.falsum =
                  @[simp]
                  theorem LO.Modal.Formula.and_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : LO.Modal.Formula α) :
                  φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.or_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : LO.Modal.Formula α) :
                  φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.imp_inj {α : Type u} (φ₁ ψ₁ φ₂ ψ₂ : LO.Modal.Formula α) :
                  φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
                  @[simp]
                  theorem LO.Modal.Formula.neg_inj {α : Type u} (φ ψ : LO.Modal.Formula α) :
                  φ = ψ φ = ψ

                  Formula complexity

                  Equations
                  • (LO.Modal.Formula.atom a).complexity = 0
                  • LO.Modal.Formula.falsum.complexity = 0
                  • (φ.imp ψ).complexity = φ.complexity ψ.complexity + 1
                  • φ.box.complexity = φ.complexity + 1
                  Instances For

                    Max numbers of

                    Equations
                    Instances For
                      @[simp]
                      theorem LO.Modal.Formula.degree_neg {α : Type u} (φ : LO.Modal.Formula α) :
                      (φ).degree = φ.degree
                      @[simp]
                      theorem LO.Modal.Formula.degree_imp {α : Type u} (φ ψ : LO.Modal.Formula α) :
                      (φ ψ).degree = φ.degree ψ.degree
                      def LO.Modal.Formula.cases' {α : Type u} {C : LO.Modal.Formula αSort w} (hfalsum : C ) (hatom : (a : α) → C (LO.Modal.Formula.atom a)) (himp : (φ ψ : LO.Modal.Formula α) → C (φ ψ)) (hbox : (φ : LO.Modal.Formula α) → C (φ)) (φ : LO.Modal.Formula α) :
                      C φ
                      Equations
                      Instances For
                        def LO.Modal.Formula.rec' {α : Type u} {C : LO.Modal.Formula αSort w} (hfalsum : C ) (hatom : (a : α) → C (LO.Modal.Formula.atom a)) (himp : (φ ψ : LO.Modal.Formula α) → C φC ψC (φ ψ)) (hbox : (φ : LO.Modal.Formula α) → C φC (φ)) (φ : LO.Modal.Formula α) :
                        C φ
                        Equations
                        Instances For
                          def LO.Modal.Formula.hasDecEq {α : Type u} [DecidableEq α] (φ ψ : LO.Modal.Formula α) :
                          Decidable (φ = ψ)
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            • LO.Modal.Formula.instDecidableEq = LO.Modal.Formula.hasDecEq
                            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
                                  • LO.Modal.instCollectionFormulaTheory = inferInstance
                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem LO.Modal.Formula.subformulae.mem_self {α : Type u_1} [DecidableEq α] {φ : LO.Modal.Formula α} :
                                    φ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp {α : Type u_1} [DecidableEq α] {φ ψ χ : LO.Modal.Formula α} (h : ψ χ φ.subformulae) :
                                    ψ φ.subformulae χ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp₁ {α : Type u_1} [DecidableEq α] {φ ψ χ : LO.Modal.Formula α} (h : ψ χ φ.subformulae) :
                                    ψ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_imp₂ {α : Type u_1} [DecidableEq α] {φ ψ χ : LO.Modal.Formula α} (h : ψ χ φ.subformulae) :
                                    χ φ.subformulae
                                    theorem LO.Modal.Formula.subformulae.mem_box {α : Type u_1} [DecidableEq α] {φ ψ : LO.Modal.Formula α} (h : ψ φ.subformulae := by assumption) :
                                    ψ φ.subformulae
                                    @[simp]
                                    theorem LO.Modal.Formula.subformulae.complexity_lower {α : Type u_1} [DecidableEq α] {φ ψ : LO.Modal.Formula α} (h : ψ φ.subformulae) :
                                    ψ.complexity φ.complexity
                                    Instances
                                      instance LO.Modal.SubformulaClosed.instSubformulaClosedSubformulae {α : Type u_1} [DecidableEq α] {φ : LO.Modal.Formula α} :
                                      φ.subformulae.SubformulaClosed
                                      Equations
                                      • =
                                      theorem LO.Modal.SubformulaClosed.mem_box {α : Type u_1} {φ : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [closed : X.SubformulaClosed] (h : φ X) :
                                      φ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp {α : Type u_1} {φ : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [closed : X.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ X) :
                                      φ X ψ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp₁ {α : Type u_1} {φ : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [closed : X.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ X) :
                                      φ X
                                      theorem LO.Modal.SubformulaClosed.mem_imp₂ {α : Type u_1} {φ : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [closed : X.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ X) :
                                      ψ X
                                      Instances
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_box {α : Type u_1} {φ : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] (h : φ T) :
                                        φ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp {α : Type u_1} {φ : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ T) :
                                        φ T ψ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp₁ {α : Type u_1} {φ : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ T) :
                                        φ T
                                        theorem LO.Modal.Theory.SubformulaClosed.mem_imp₂ {α : Type u_1} {φ : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {ψ : LO.Modal.Formula α} (h : φ ψ T) :
                                        ψ T
                                        def LO.Modal.Formula.cases_neg {α : Type u_1} [DecidableEq α] {C : LO.Modal.Formula αSort w} (hfalsum : C ) (hatom : (a : α) → C (LO.Modal.Formula.atom a)) (hneg : (φ : LO.Modal.Formula α) → C (φ)) (himp : (φ ψ : LO.Modal.Formula α) → ψ C (φ ψ)) (hbox : (φ : LO.Modal.Formula α) → C (φ)) (φ : LO.Modal.Formula α) :
                                        C φ
                                        Equations
                                        Instances For
                                          def LO.Modal.Formula.rec_neg {α : Type u_1} [DecidableEq α] {C : LO.Modal.Formula αSort w} (hfalsum : C ) (hatom : (a : α) → C (LO.Modal.Formula.atom a)) (hneg : (φ : LO.Modal.Formula α) → C φC (φ)) (himp : (φ ψ : LO.Modal.Formula α) → ψ C φC ψC (φ ψ)) (hbox : (φ : LO.Modal.Formula α) → C φC (φ)) (φ : LO.Modal.Formula α) :
                                          C φ
                                          Equations
                                          Instances For
                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_def {α : Type u_1} {φ : LO.Modal.Formula α} :
                                              (φ).negated = true
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_imp {α : Type u_1} {φ ψ : LO.Modal.Formula α} :
                                              (φ ψ).negated = true ψ =
                                              theorem LO.Modal.Formula.negated_iff {α : Type u_1} {φ : LO.Modal.Formula α} [DecidableEq α] :
                                              φ.negated = true ∃ (ψ : LO.Modal.Formula α), φ = ψ
                                              theorem LO.Modal.Formula.not_negated_iff {α : Type u_1} {φ : LO.Modal.Formula α} [DecidableEq α] :
                                              ¬φ.negated = true ∀ (ψ : LO.Modal.Formula α), φ ψ
                                              def LO.Modal.Formula.rec_negated {α : Type u_1} [DecidableEq α] {C : LO.Modal.Formula αSort w} (hfalsum : C ) (hatom : (a : α) → C (LO.Modal.Formula.atom a)) (hneg : (φ : LO.Modal.Formula α) → C φC (φ)) (himp : (φ ψ : LO.Modal.Formula α) → ¬(φ ψ).negated = trueC φC ψC (φ ψ)) (hbox : (φ : LO.Modal.Formula α) → C φC (φ)) (φ : LO.Modal.Formula α) :
                                              C φ
                                              Equations
                                              Instances For
                                                Equations
                                                Instances For
                                                  @[irreducible]
                                                  Equations
                                                  Instances For
                                                    Equations
                                                    • LO.Modal.Formula.instEncodable = { encode := LO.Modal.Formula.toNat, decode := LO.Modal.Formula.ofNat, encodek := }
                                                    @[simp]
                                                    theorem LO.Modal.Formula.subst_atom {α : Type u_1} {σ : αLO.Modal.Formula α} {a : α} :
                                                    @[simp]
                                                    Instances
                                                      def LO.Modal.Theory.instSubstClosed {α : Type u_1} {T : LO.Modal.Theory α} (hAtom : ∀ (a : α), LO.Modal.Formula.atom a T∀ {σ : αLO.Modal.Formula α}, LO.Modal.Formula.subst σ (LO.Modal.Formula.atom a) T) (hImp : ∀ {φ ψ : LO.Modal.Formula α}, φ ψ T∀ {σ : αLO.Modal.Formula α}, LO.Modal.Formula.subst σ (φ ψ) T) (hBox : ∀ {φ : LO.Modal.Formula α}, φ T∀ {σ : αLO.Modal.Formula α}, LO.Modal.Formula.subst σ (φ) T) :
                                                      T.SubstClosed
                                                      Equations
                                                      • =
                                                      Instances For
                                                        theorem LO.Modal.Theory.SubstClosed.mem_atom {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {a : α} {σ : αLO.Modal.Formula α} (h : LO.Modal.Formula.atom a T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_bot {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {σ : αLO.Modal.Formula α} (h : T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_imp {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {φ ψ : LO.Modal.Formula α} {σ : αLO.Modal.Formula α} (h : φ ψ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_neg {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {φ : LO.Modal.Formula α} {σ : αLO.Modal.Formula α} (h : φ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_and {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {φ ψ : LO.Modal.Formula α} {σ : αLO.Modal.Formula α} (h : φ ψ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_or {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {φ ψ : LO.Modal.Formula α} {σ : αLO.Modal.Formula α} (h : φ ψ T) :
                                                        theorem LO.Modal.Theory.SubstClosed.mem_box {α : Type u_1} {T : LO.Modal.Theory α} [T.SubstClosed] {φ : LO.Modal.Formula α} {σ : αLO.Modal.Formula α} (h : φ T) :
                                                        instance LO.Modal.Theory.SubstClosed.union {α : Type u_1} {T₁ T₂ : LO.Modal.Theory α} [T₁_closed : T₁.SubstClosed] [T₂_closed : T₂.SubstClosed] :
                                                        (T₁ T₂).SubstClosed
                                                        Equations
                                                        • =