Documentation

Cslib.Logics.LinearLogic.CLL.Basic

Classical Linear Logic #

TODO #

References #

inductive Cslib.CLL.Proposition (Atom : Type u) :

Propositions.

Instances For
    def Cslib.CLL.instDecidableEqProposition.decEq {Atom✝ : Type u_1} [DecidableEq Atom✝] (x✝ x✝¹ : Proposition Atom✝) :
    Decidable (x✝ = x✝¹)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def Cslib.CLL.instBEqProposition.beq {Atom✝ : Type u_1} [BEq Atom✝] :
      Proposition Atom✝Proposition Atom✝Bool
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        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

                    Whether a Proposition is positive is decidable.

                    Equations

                    Whether a Proposition is negative is decidable.

                    Equations

                    Propositional duality.

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

                      No proposition is equal to its dual.

                      @[simp]
                      theorem Cslib.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]

                      Duality is an involution.

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

                      Linear implication.

                      Equations
                      Instances For

                        Linear implication.

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

                          A sequent in CLL is a multiset of propositions.

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

                            Checks that all propositions in a sequent Γ are question marks.

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

                              A proof in the sequent calculus for classical linear logic.

                              Instances For

                                A proof in the sequent calculus for classical linear logic.

                                Equations
                                Instances For
                                  def Cslib.CLL.Proof.sequent_rw {Atom✝ : Type u_1} {Γ Δ : Sequent Atom✝} (h : Γ = Δ) (p : Proof Γ) :

                                  Rewrites the conclusion of a proof into an equal one.

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

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

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

                                      Having a proof of Γ shows that it is provable.

                                      noncomputable def Cslib.CLL.Sequent.Provable.toProof {Atom : Type u} {Γ : Sequent Atom} (p : Γ.Provable) :

                                      Having a proof of Γ shows that it is provable.

                                      Equations
                                      Instances For
                                        instance Cslib.CLL.instCoeProofProvable {Atom✝ : Type u_1} {Γ : Sequent Atom✝} :
                                        Equations
                                        def Cslib.CLL.Proof.ax' {Atom : Type u} {a : Proposition Atom} :

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

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

                                          Cut, but where the premises are reversed.

                                          Equations
                                          Instances For
                                            def Cslib.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 Cslib.CLL.Proof.bot_inversion {Atom : Type u} {Γ : Sequent Atom} (h : Proof ( ::ₘ Γ)) :

                                              Inversion of the ⊥ rule.

                                              Equations
                                              Instances For
                                                def Cslib.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 Cslib.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 Cslib.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 Cslib.CLL.Proposition.Equiv {Atom : Type u} (a b : Proposition Atom) :

                                                      Propositional equivalence, proof-irrelevant version (Prop).

                                                      Equations
                                                      Instances For
                                                        theorem Cslib.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.

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

                                                        Equations
                                                        Instances For

                                                          Propositional equivalence, proof-irrelevant version (Prop).

                                                          Equations
                                                          Instances For
                                                            instance Cslib.CLL.instCoeEquivEquiv {Atom : Type u} {a b : Proposition Atom} :
                                                            Coe (a.equiv b) (a.Equiv b)

                                                            Proof-relevant equivalence is coerciable into proof-irrelevant equivalence.

                                                            Equations

                                                            Proof-relevant equivalence is reflexive.

                                                            Equations
                                                            Instances For
                                                              def Cslib.CLL.Proposition.equiv.symm {Atom : Type u} {b : Proposition Atom} (a : Proposition Atom) (h : a.equiv b) :
                                                              b.equiv a

                                                              Proof-relevant equivalence is symmetric.

                                                              Equations
                                                              Instances For
                                                                def Cslib.CLL.Proposition.equiv.trans {Atom : Type u} {a b c : Proposition Atom} (hab : a.equiv b) (hbc : b.equiv c) :
                                                                a.equiv c

                                                                Proof-relevant equivalence is transitive.

                                                                Equations
                                                                Instances For
                                                                  theorem Cslib.CLL.Proposition.Equiv.refl {Atom : Type u} (a : Proposition Atom) :
                                                                  a.Equiv a

                                                                  Proof-irrelevant equivalence is reflexive.

                                                                  theorem Cslib.CLL.Proposition.Equiv.symm {Atom : Type u} {a b : Proposition Atom} (h : a.Equiv b) :
                                                                  b.Equiv a

                                                                  Proof-irrelevant equivalence is symmetric.

                                                                  theorem Cslib.CLL.Proposition.Equiv.trans {Atom : Type u} {a b c : Proposition Atom} (hab : a.Equiv b) (hbc : b.Equiv c) :
                                                                  a.Equiv c

                                                                  Proof-irrelevant equivalence is transitive.

                                                                  noncomputable def Cslib.CLL.Proposition.chooseEquiv {Atom✝ : Type u_1} {a b : Proposition Atom✝} (h : a.Equiv b) :
                                                                  a.equiv b

                                                                  Transforms a proof-irrelevant equivalence into a proof-relevant one (this is not computable).

                                                                  Equations
                                                                  Instances For

                                                                    The canonical equivalence relation for propositions.

                                                                    Equations
                                                                    Instances For
                                                                      def Cslib.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))

                                                                      ⊗ distributed over ⊕.

                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For
                                                                        def Cslib.CLL.Proposition.subst_eqv_head {Atom : Type u} {a b : Proposition Atom} {Γ : Sequent Atom} (heqv : a.equiv b) (p : Proof (a ::ₘ Γ)) :
                                                                        Proof (b ::ₘ Γ)

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

                                                                        Equations
                                                                        Instances For
                                                                          theorem Cslib.CLL.Proposition.add_middle_eq_cons {Atom : Type u} {Γ Δ : Multiset (Proposition Atom)} {a : Proposition Atom} :
                                                                          Γ + {a} + Δ = a ::ₘ (Γ + Δ)
                                                                          def Cslib.CLL.Proposition.subst_eqv {Atom : Type u} {a b : Proposition Atom} {Γ Δ : Sequent Atom} (heqv : a.equiv b) (p : Proof (Γ + {a} + Δ)) :
                                                                          Proof (Γ + {b} + Δ)

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

                                                                          Equations
                                                                          Instances For
                                                                            def Cslib.CLL.Proposition.tensor_assoc {Atom : Type u} {a b c : Proposition Atom} :
                                                                            (a.tensor (b.tensor c)).equiv ((a.tensor b).tensor c)

                                                                            ⊗ is associative.

                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For