Documentation

Cslib.Logics.Propositional.Defs

Propositions and theories #

Main definitions #

Notation #

We instantiate the notation classes HasAnd, HasOr, HasImpl and HasNot for Proposition Atom to give access to, respectively, the notations ∧, ∨, → and ¬ for propositional connectives. In the case that Atom has a bottom element (respectively, is inhabited) we give instances HasBot (Proposition Atom) and (respectively, HasTop (Proposition Atom)).

inductive Cslib.Logic.PL.Proposition (Atom : Type u) :

Propositions.

Instances For
    def Cslib.Logic.PL.instDecidableEqProposition.decEq {Atom✝ : Type u_1} [DecidableEq Atom✝] (x✝ x✝¹ : Proposition Atom✝) :
    Decidable (x✝ = x✝¹)
    Equations
    Instances For
      @[instance_reducible]
      instance Cslib.Logic.PL.instBEqProposition {Atom✝ : Type u_1} [BEq Atom✝] :
      BEq (Proposition Atom✝)
      Equations
      @[instance_reducible]
      instance Cslib.Logic.PL.instInhabitedOfBot {Atom : Type u} [Bot Atom] :
      Equations
      @[reducible, inline]
      abbrev Cslib.Logic.PL.Proposition.neg {Atom : Type u} [Bot Atom] :
      Proposition AtomProposition Atom

      We view negation as a defined connective ~A := A → ⊥

      Equations
      Instances For
        @[reducible, inline]

        A fixed choice of a derivable proposition (of course any two are equivalent).

        Equations
        Instances For
          theorem Cslib.Logic.PL.not_eq {Atom : Type u} [Bot Atom] (A : Proposition Atom) :
          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          @[reducible, inline]
          abbrev Cslib.Logic.PL.Theory (Atom : Type u_1) :
          Type u_1

          Theories are arbitrary sets of propositions.

          Equations
          Instances For
            def Cslib.Logic.PL.Theory.subst {Atom Atom' : Type u} (T : Theory Atom) (f : AtomProposition Atom') :
            Theory Atom'

            Extend a substitution from Proposition to Theory.

            Equations
            Instances For
              @[instance_reducible]
              Equations
              @[reducible, inline]
              abbrev Cslib.Logic.PL.Theory.MPL (Atom : Type u) :
              Theory Atom

              The empty theory corresponds to minimal propositional logic.

              Equations
              Instances For
                @[reducible, inline]
                abbrev Cslib.Logic.PL.Theory.IPL (Atom : Type u) [Bot Atom] :
                Theory Atom

                Intuitionistic propositional logic adds the principle of explosion (ex falso quodlibet).

                Equations
                Instances For
                  theorem Cslib.Logic.PL.Theory.efq_mem_ipl {Atom : Type u} [Bot Atom] (A : Proposition Atom) :
                  @[reducible]

                  Attach a bottom element to a theory T, and the principle of explosion for that bottom.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev Cslib.Logic.PL.Theory.CPL (Atom : Type u) [Bot Atom] :
                    Theory Atom

                    Classical logic further adds double negation elimination.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      class Cslib.Logic.PL.Theory.IsIntuitionistic (Atom : Type u) [Bot Atom] (S : Type u_1) [InferenceSystem S (Proposition Atom)] :
                      Sort (max (u + 1) u_2)

                      An inference system is intuitionistic if it derives ex falso quodlibet. TODO: this should be generalised outside the PL scope, once we have typeclasses to express that a type possesses an implication connective.

                      Instances
                        class Cslib.Logic.PL.Theory.IsClassical (Atom : Type u) [Bot Atom] (S : Type u_1) [InferenceSystem S (Proposition Atom)] :
                        Sort (max (u + 1) u_2)

                        An inference system is classical if it validates double-negation elimination. TODO: this should be generalised outside the PL scope, once we have typeclasses to express that a type possesses an implication connective.

                        Instances