Documentation

Cslib.Logics.LinearLogic.CLL.Basic

Classical Linear Logic #

TODO #

References #

inductive CLL.Proposition (Atom : Type u) :

Propositions.

Instances For
    def CLL.instDecidableEqProposition.decEq {Atom✝ : Type u_1} [DecidableEq Atom✝] (x✝ x✝¹ : Proposition Atom✝) :
    Decidable (x✝ = x✝¹)
    Instances For
      instance CLL.instBEqProposition {Atom✝ : Type u_1} [BEq Atom✝] :
      BEq (Proposition Atom✝)
      Equations

      The multiplicative conjunction connective.

      Equations
      Instances For

        The additive disjunction connective.

        Equations
        Instances For

          The multiplicative disjunction connective.

          Equations
          Instances For

            The additive conjunction connective.

            Equations
            Instances For

              The "of course" exponential.

              Equations
              Instances For

                The "why not" exponential. This is written as ʔ, or _?, to distinguish itself from the lean syntatical hole ? syntax

                Equations
                Instances For
                  def CLL.Proposition.Pos {Atom : Type u} :
                  Proposition AtomProp

                  Positive propositions.

                  Equations
                  Instances For

                    Propositional duality.

                    Equations
                    Instances For
                      theorem CLL.Proposition.dual.neq {Atom : Type u} (a : Proposition Atom) :
                      a a.dual

                      No proposition is equal to its dual.

                      @[simp]
                      theorem CLL.Proposition.dual_inj {Atom : Type u} (a b : Proposition Atom) :
                      a.dual = b.dual a = b

                      Two propositions are equal iff their respective duals are equal.

                      @[simp]
                      theorem CLL.Proposition.dual.involution {Atom : Type u} (a : Proposition Atom) :
                      a.dual.dual = a

                      Duality is an involution.

                      def CLL.Proposition.linImpl {Atom : Type u} (a b : Proposition Atom) :

                      Linear implication.

                      Equations
                      Instances For

                        Linear implication.

                        Equations
                        Instances For
                          @[reducible, inline]
                          abbrev CLL.Sequent (Atom : Type u_1) :
                          Type u_1

                          A sequent in CLL is a list of propositions.

                          Equations
                          Instances For
                            def CLL.Sequent.AllQuest {Atom : Type u} (Γ : Sequent Atom) :

                            Checks that all propositions in Γ are question marks.

                            Equations
                            Instances For
                              inductive CLL.Proof {Atom : Type u} :
                              Sequent AtomType u

                              A proof in the sequent calculus for classical linear logic.

                              Instances For
                                def CLL.Provable {Atom : Type u} (Γ : Sequent Atom) :

                                A sequent is provable if there exists a proof that concludes it.

                                Equations
                                Instances For

                                  A proof in the sequent calculus for classical linear logic.

                                  Equations
                                  Instances For

                                    A sequent is provable if there exists a proof that concludes it.

                                    Equations
                                    Instances For
                                      def CLL.Provable.fromProof {Atom : Type u} {Γ : Sequent Atom} (p : Proof Γ) :

                                      Having a proof of Γ shows that it is provable.

                                      Equations
                                      • =
                                      Instances For
                                        noncomputable def CLL.Provable.toProof {Atom : Type u} {Γ : Sequent Atom} (p : Provable Γ) :

                                        Having a proof of Γ shows that it is provable.

                                        Equations
                                        Instances For
                                          instance CLL.instCoeProofProvable {Atom✝ : Type u_1} {Γ : Sequent Atom✝} :
                                          Coe (Proof Γ) (Provable Γ)
                                          Equations
                                          noncomputable instance CLL.instCoeProvableProof {Atom✝ : Type u_1} {Γ : Sequent Atom✝} :
                                          Coe (Provable Γ) (Proof Γ)
                                          Equations
                                          def CLL.Proof.ax' {Atom : Type u} {a : Proposition Atom} :

                                          The axiom, but where the order of propositions is reversed.

                                          Equations
                                          Instances For
                                            def CLL.Proof.cut' {Atom✝ : Type u_1} {a : Proposition Atom✝} {Γ Δ : List (Proposition Atom✝)} (p : Proof (a.dual :: Γ)) (q : Proof (a :: Δ)) :
                                            Proof (Γ ++ Δ)

                                            Cut, but where the premises are reversed.

                                            Equations
                                            Instances For
                                              def CLL.Proof.parr_inversion {Atom : Type u} {a b : Proposition Atom} {Γ : Sequent Atom} (h : Proof (a.parr b :: Γ)) :
                                              Proof (a :: b :: Γ)

                                              Inversion of the ⅋ rule.

                                              Equations
                                              Instances For
                                                def CLL.Proof.bot_inversion {Atom : Type u} {Γ : Sequent Atom} (h : Proof ( :: Γ)) :

                                                Inversion of the ⊥ rule.

                                                Equations
                                                Instances For
                                                  def CLL.Proof.with_inversion₁ {Atom : Type u} {a b : Proposition Atom} {Γ : Sequent Atom} (h : Proof (a.with b :: Γ)) :
                                                  Proof (a :: Γ)

                                                  Inversion of the & rule, first component.

                                                  Equations
                                                  Instances For
                                                    def CLL.Proof.with_inversion₂ {Atom : Type u} {a b : Proposition Atom} {Γ : Sequent Atom} (h : Proof (a.with b :: Γ)) :
                                                    Proof (b :: Γ)

                                                    Inversion of the & rule, second component.

                                                    Equations
                                                    Instances For

                                                      Logical equivalences #

                                                      def CLL.Proposition.equiv {Atom : Type u} (a b : Proposition Atom) :

                                                      Two propositions are equivalent if one implies the other and vice versa. Proof-relevant version.

                                                      Equations
                                                      Instances For
                                                        def CLL.Proposition.Equiv {Atom : Type u} (a b : Proposition Atom) :

                                                        Propositional equivalence, proof-irrelevant version (Prop).

                                                        Equations
                                                        Instances For
                                                          theorem CLL.Proposition.equiv.toProp {Atom✝ : Type u_1} {a b : Proposition Atom✝} (h : a.equiv b) :
                                                          a.Equiv b

                                                          Conversion from proof-relevant to proof-irrelevant versions of propositional equivalence.

                                                          instance CLL.instCoeEquivEquiv {Atom : Type u} {a b : Proposition Atom} :
                                                          Coe (a.equiv b) (a.Equiv b)
                                                          Equations
                                                          theorem CLL.Proposition.Equiv.refl {Atom : Type u} (a : Proposition Atom) :
                                                          a.Equiv a
                                                          theorem CLL.Proposition.Equiv.symm {Atom : Type u} {a b : Proposition Atom} (h : a.Equiv b) :
                                                          b.Equiv a
                                                          theorem CLL.Proposition.Equiv.trans {Atom : Type u} {a b c : Proposition Atom} (hab : a.Equiv b) (hbc : b.Equiv c) :
                                                          a.Equiv c

                                                          The canonical equivalence relation for propositions.

                                                          Equations
                                                          Instances For
                                                            theorem CLL.Proposition.tensor_distrib_oplus {Atom : Type u} (a b c : Proposition Atom) :
                                                            (a.tensor (b.oplus c)).Equiv ((a.tensor b).oplus (a.tensor c))
                                                            theorem CLL.Proposition.subst_eqv_head {Atom : Type u} {Γ : Sequent Atom} {a b : Proposition Atom} (heqv : a.Equiv b) :
                                                            Provable (a :: Γ)Provable (b :: Γ)

                                                            The proposition at the head of a proof can be substituted by an equivalent proposition.

                                                            theorem CLL.Proposition.subst_eqv {Atom : Type u} {Γ Δ : Sequent Atom} {a b : Proposition Atom} (heqv : a.Equiv b) :
                                                            Provable (Γ ++ [a] ++ Δ)Provable (Γ ++ [b] ++ Δ)

                                                            Any proposition in a proof (regardless of its position) can be substituted by an equivalent proposition.

                                                            theorem CLL.Proposition.tensor_symm {Atom : Type u} {a b : Proposition Atom} :
                                                            (a.tensor b).Equiv (b.tensor a)
                                                            theorem CLL.Proposition.tensor_assoc {Atom : Type u} {a b c : Proposition Atom} :
                                                            (a.tensor (b.tensor c)).Equiv ((a.tensor b).tensor c)
                                                            instance CLL.Proposition.instIsSymmProvableConsTensor {Atom : Type u} {Γ : Sequent Atom} :
                                                            IsSymm (Proposition Atom) fun (a b : Proposition Atom) => Provable (a.tensor b :: Γ)
                                                            theorem CLL.Proposition.oplus_idem {Atom : Type u} {a : Proposition Atom} :
                                                            (a.oplus a).Equiv a
                                                            theorem CLL.Proposition.with_idem {Atom : Type u} {a : Proposition Atom} :
                                                            (a.with a).Equiv a