Documentation

Foundation.Modal.Formula

inductive LO.Modal.Formula (α : Type u) :
Instances For
    instance LO.Modal.instDecidableEqFormula :
    {α : Type u_1} → [inst : DecidableEq α] → DecidableEq (LO.Modal.Formula α)
    Equations
    • LO.Modal.instDecidableEqFormula = LO.Modal.decEqFormula✝
    @[reducible, inline]
    Equations
    • p.neg = p.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]
          Equations
          • p.or q = p.neg.imp q
          Instances For
            @[reducible, inline]
            Equations
            • p.and q = (p.imp q.neg).neg
            Instances For
              @[reducible, inline]
              Equations
              • p.dia = p.neg.box.neg
              Instances For
                Equations
                • LO.Modal.Formula.instBasicModalLogicalConnective = LO.BasicModalLogicalConnective.mk
                Equations
                • LO.Modal.Formula.instLukasiewiczAbbrev = { top := , neg := , or := , and := }
                Equations
                • LO.Modal.Formula.instDiaAbbrev = { dia_abbrev := }
                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} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                  p.or q = p q
                  theorem LO.Modal.Formula.and_eq {α : Type u} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                  p.and q = p q
                  theorem LO.Modal.Formula.imp_eq {α : Type u} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                  p.imp q = p q
                  theorem LO.Modal.Formula.neg_eq {α : Type u} (p : LO.Modal.Formula α) :
                  p.neg = p
                  theorem LO.Modal.Formula.box_eq {α : Type u} (p : LO.Modal.Formula α) :
                  p.box = p
                  theorem LO.Modal.Formula.dia_eq {α : Type u} (p : LO.Modal.Formula α) :
                  p.dia = p
                  theorem LO.Modal.Formula.iff_eq {α : Type u} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                  p q = (p q) (q p)
                  theorem LO.Modal.Formula.falsum_eq {α : Type u} :
                  LO.Modal.Formula.falsum =
                  @[simp]
                  theorem LO.Modal.Formula.and_inj {α : Type u} (p₁ : LO.Modal.Formula α) (q₁ : LO.Modal.Formula α) (p₂ : LO.Modal.Formula α) (q₂ : LO.Modal.Formula α) :
                  p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
                  @[simp]
                  theorem LO.Modal.Formula.or_inj {α : Type u} (p₁ : LO.Modal.Formula α) (q₁ : LO.Modal.Formula α) (p₂ : LO.Modal.Formula α) (q₂ : LO.Modal.Formula α) :
                  p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
                  @[simp]
                  theorem LO.Modal.Formula.imp_inj {α : Type u} (p₁ : LO.Modal.Formula α) (q₁ : LO.Modal.Formula α) (p₂ : LO.Modal.Formula α) (q₂ : LO.Modal.Formula α) :
                  p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
                  @[simp]
                  theorem LO.Modal.Formula.neg_inj {α : Type u} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                  p = q p = q

                  Formula complexity

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

                    Max numbers of

                    Equations
                    Instances For
                      @[simp]
                      theorem LO.Modal.Formula.degree_neg {α : Type u} (p : LO.Modal.Formula α) :
                      (p).degree = p.degree
                      @[simp]
                      theorem LO.Modal.Formula.degree_imp {α : Type u} (p : LO.Modal.Formula α) (q : LO.Modal.Formula α) :
                      (p q).degree = max p.degree q.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 : (p q : LO.Modal.Formula α) → C (p q)) (hbox : (p : LO.Modal.Formula α) → C (p)) (p : LO.Modal.Formula α) :
                      C p
                      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 : (p q : LO.Modal.Formula α) → C pC qC (p q)) (hbox : (p : LO.Modal.Formula α) → C pC (p)) (p : LO.Modal.Formula α) :
                        C p
                        Equations
                        Instances For
                          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
                            • x.isBox = match x with | a.box => true | x => false
                            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.Subformulas.complexity_lower {α : Type u_1} [DecidableEq α] {p : LO.Modal.Formula α} {q : LO.Modal.Formula α} (h : q 𝒮 p) :
                                    q.complexity p.complexity
                                    Instances
                                      theorem LO.Modal.Formulae.SubformulaClosed.imp_closed {α : Type u_1} {X : LO.Modal.Formulae α} [self : X.SubformulaClosed] {p : LO.Modal.Formula α} {q : LO.Modal.Formula α} :
                                      p q Xp X q X
                                      theorem LO.Modal.Formulae.SubformulaClosed.box_closed {α : Type u_1} {X : LO.Modal.Formulae α} [self : X.SubformulaClosed] {p : LO.Modal.Formula α} :
                                      p Xp X
                                      Equations
                                      • LO.Modal.SubformulaClosed.instSubformulaClosedSubformulas = { imp_closed := , box_closed := }
                                      theorem LO.Modal.SubformulaClosed.sub_mem_box {α : Type u_1} {p : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [T_closed : X.SubformulaClosed] (h : p X) :
                                      p X
                                      theorem LO.Modal.SubformulaClosed.sub_mem_imp {α : Type u_1} {p : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [T_closed : X.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q X) :
                                      p X q X
                                      theorem LO.Modal.SubformulaClosed.sub_mem_imp₁ {α : Type u_1} {p : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [T_closed : X.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q X) :
                                      p X
                                      theorem LO.Modal.SubformulaClosed.sub_mem_imp₂ {α : Type u_1} {p : LO.Modal.Formula α} {X : LO.Modal.Formulae α} [T_closed : X.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q X) :
                                      q X
                                      Instances
                                        theorem LO.Modal.Theory.SubformulaClosed.imp_closed {α : Type u_1} {T : LO.Modal.Theory α} [self : T.SubformulaClosed] {p : LO.Modal.Formula α} {q : LO.Modal.Formula α} :
                                        p q Tp T q T
                                        theorem LO.Modal.Theory.SubformulaClosed.box_closed {α : Type u_1} {T : LO.Modal.Theory α} [self : T.SubformulaClosed] {p : LO.Modal.Formula α} :
                                        p Tp T
                                        Equations
                                        • LO.Modal.Theory.SubformulaClosed.instToSetFormulaSubformulas = { imp_closed := , box_closed := }
                                        theorem LO.Modal.Theory.SubformulaClosed.sub_mem_box {α : Type u_1} {p : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] (h : p T) :
                                        p T
                                        theorem LO.Modal.Theory.SubformulaClosed.sub_mem_imp {α : Type u_1} {p : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q T) :
                                        p T q T
                                        theorem LO.Modal.Theory.SubformulaClosed.sub_mem_imp₁ {α : Type u_1} {p : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q T) :
                                        p T
                                        theorem LO.Modal.Theory.SubformulaClosed.sub_mem_imp₂ {α : Type u_1} {p : LO.Modal.Formula α} {T : LO.Modal.Theory α} [T_closed : T.SubformulaClosed] {q : LO.Modal.Formula α} (h : p q T) :
                                        q 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 : (p : LO.Modal.Formula α) → C (p)) (himp : (p q : LO.Modal.Formula α) → q C (p q)) (hbox : (p : LO.Modal.Formula α) → C (p)) (p : LO.Modal.Formula α) :
                                        C p
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        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 : (p : LO.Modal.Formula α) → C pC (p)) (himp : (p q : LO.Modal.Formula α) → q C pC qC (p q)) (hbox : (p : LO.Modal.Formula α) → C pC (p)) (p : LO.Modal.Formula α) :
                                          C p
                                          Equations
                                          Instances For
                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_def {α : Type u_1} {p : LO.Modal.Formula α} :
                                              (p).negated = true
                                              @[simp]
                                              theorem LO.Modal.Formula.negated_imp {α : Type u_1} {p : LO.Modal.Formula α} {q : LO.Modal.Formula α} :
                                              (p q).negated = true q =
                                              theorem LO.Modal.Formula.negated_iff {α : Type u_1} [DecidableEq α] {p : LO.Modal.Formula α} :
                                              p.negated = true ∃ (q : LO.Modal.Formula α), p = q
                                              theorem LO.Modal.Formula.not_negated_iff {α : Type u_1} [DecidableEq α] {p : LO.Modal.Formula α} :
                                              ¬p.negated = true ∀ (q : LO.Modal.Formula α), p q
                                              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 : (p : LO.Modal.Formula α) → C pC (p)) (himp : (p q : LO.Modal.Formula α) → ¬(p q).negated = trueC pC qC (p q)) (hbox : (p : LO.Modal.Formula α) → C pC (p)) (p : LO.Modal.Formula α) :
                                              C p
                                              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 := }