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
      @[implicit_reducible]
      instance Cslib.CLL.instDecidableEqProposition {Atom✝ : Type u_1} [DecidableEq Atom✝] :
      DecidableEq (Proposition Atom✝)
      Equations
      @[implicit_reducible]
      instance Cslib.CLL.instBEqProposition {Atom✝ : Type u_1} [BEq Atom✝] :
      BEq (Proposition Atom✝)
      Equations
      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
        @[implicit_reducible]
        instance Cslib.CLL.instZeroProposition {Atom : Type u} :
        Zero (Proposition Atom)
        Equations
        @[implicit_reducible]
        instance Cslib.CLL.instOneProposition {Atom : Type u} :
        One (Proposition Atom)
        Equations
        @[implicit_reducible]
        instance Cslib.CLL.instTopProposition {Atom : Type u} :
        Top (Proposition Atom)
        Equations
        @[implicit_reducible]
        instance Cslib.CLL.instBotProposition {Atom : Type u} :
        Bot (Proposition Atom)
        Equations
        def Cslib.CLL.«term_⊗_» :
        Lean.TrailingParserDescr

        The multiplicative conjunction connective.

        Equations
        • Cslib.CLL.«term_⊗_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_⊗_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ ") (Lean.ParserDescr.cat `term 36))
        Instances For
          def Cslib.CLL.«term_⊕_» :
          Lean.TrailingParserDescr

          The additive disjunction connective.

          Equations
          • Cslib.CLL.«term_⊕_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_⊕_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊕ ") (Lean.ParserDescr.cat `term 36))
          Instances For
            def Cslib.CLL.term_⅋_ :
            Lean.TrailingParserDescr

            The multiplicative disjunction connective.

            Equations
            • Cslib.CLL.term_⅋_ = Lean.ParserDescr.trailingNode `Cslib.CLL.term_⅋_ 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⅋ ") (Lean.ParserDescr.cat `term 31))
            Instances For
              def Cslib.CLL.«term_&_» :
              Lean.TrailingParserDescr

              The additive conjunction connective.

              Equations
              • Cslib.CLL.«term_&_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_&_» 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " & ") (Lean.ParserDescr.cat `term 31))
              Instances For
                def Cslib.CLL.term!_ :
                Lean.ParserDescr

                The "of course" exponential.

                Equations
                • Cslib.CLL.term!_ = Lean.ParserDescr.node `Cslib.CLL.term!_ 95 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "!") (Lean.ParserDescr.cat `term 95))
                Instances For
                  def Cslib.CLL.«termʔ_» :
                  Lean.ParserDescr

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

                  Equations
                  • Cslib.CLL.«termʔ_» = Lean.ParserDescr.node `Cslib.CLL.«termʔ_» 95 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "ʔ") (Lean.ParserDescr.cat `term 95))
                  Instances For
                    inductive Cslib.CLL.Proposition.Context (Atom : Type u) :

                    Propositional contexts (single-hole contexts for propositions).

                    Instances For
                      def Cslib.CLL.Proposition.instDecidableEqContext.decEq {Atom✝ : Type u_1} [DecidableEq Atom✝] (x✝ x✝¹ : Context Atom✝) :
                      Decidable (x✝ = x✝¹)
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[implicit_reducible]
                        instance Cslib.CLL.Proposition.instBEqContext {Atom✝ : Type u_1} [BEq Atom✝] :
                        BEq (Context Atom✝)
                        Equations
                        def Cslib.CLL.Proposition.instBEqContext.beq {Atom✝ : Type u_1} [BEq Atom✝] :
                        Context Atom✝Context Atom✝Bool
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def Cslib.CLL.Proposition.Context.fill {Atom : Type u} (c : Context Atom) (a : Proposition Atom) :

                          Replaces the hole in a propositional context with a propositions.

                          Equations
                          Instances For
                            theorem Cslib.CLL.Proposition.context_fill_def {Atom : Type u} (c : Context Atom) (a : Proposition Atom) :
                            c<[a] = c.fill a

                            Definition of context filling.

                            def Cslib.CLL.Proposition.positive {Atom : Type u} :
                            Proposition AtomBool

                            Positive propositions.

                            Equations
                            Instances For
                              def Cslib.CLL.Proposition.negative {Atom : Type u} :
                              Proposition AtomBool

                              Negative propositions.

                              Equations
                              Instances For
                                @[implicit_reducible]
                                instance Cslib.CLL.Proposition.positive_decidable {Atom : Type u} (a : Proposition Atom) :
                                Decidable (a.positive = true)

                                Whether a Proposition is positive is decidable.

                                Equations
                                @[implicit_reducible]
                                instance Cslib.CLL.Proposition.negative_decidable {Atom : Type u} (a : Proposition Atom) :
                                Decidable (a.negative = true)

                                Whether a Proposition is negative is decidable.

                                Equations
                                def Cslib.CLL.«term_⫠» :
                                Lean.TrailingParserDescr

                                Propositional duality.

                                Equations
                                • Cslib.CLL.«term_⫠» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_⫠» 1024 1024 (Lean.ParserDescr.symbol "⫠")
                                Instances For
                                  theorem Cslib.CLL.Proposition.dual_sizeOf {Atom : Type u} (a : Proposition Atom) :
                                  sizeOf a = sizeOf a.dual

                                  Duality preserves size.

                                  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]
                                  theorem Cslib.CLL.Proposition.dual_involution {Atom : Type u} (a : Proposition Atom) :
                                  a.dual.dual = a

                                  Duality is an involution.

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

                                  Linear implication.

                                  Equations
                                  Instances For
                                    def Cslib.CLL.«term_⊸_» :
                                    Lean.TrailingParserDescr

                                    Linear implication.

                                    Equations
                                    • Cslib.CLL.«term_⊸_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_⊸_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊸ ") (Lean.ParserDescr.cat `term 26))
                                    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) :
                                        Bool

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

                                        Equations
                                        Instances For
                                          def Cslib.CLL.Sequent.Context (Atom : Type u_1) :
                                          Type u_1

                                          Judgemental contexts for CLL.

                                          Equations
                                          Instances For
                                            def Cslib.CLL.Sequent.Context.fill {Atom : Type u} (Γc : Context Atom) (a : Proposition Atom) :
                                            Multiset (Proposition Atom)

                                            Filling a judgemental context returns a sequent.

                                            Equations
                                            • Γc.fill a = a ::ₘ Γc
                                            Instances For
                                              inductive Cslib.CLL.Proof {Atom : Type u} :
                                              Sequent AtomType u

                                              A proof in the sequent calculus for classical linear logic.

                                              Instances For

                                                Convenience definition for rewriting conclusions in proofs.

                                                Equations
                                                Instances For

                                                  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 : Logic.InferenceSystem.derivation (a.dual ::ₘ Γ)) (q : Logic.InferenceSystem.derivation (a ::ₘ Δ)) :

                                                    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 : Logic.InferenceSystem.derivation (a.parr b ::ₘ Γ)) :

                                                      Inversion of the ⅋ rule.

                                                      Equations
                                                      Instances For

                                                        Inversion of the ⊥ rule.

                                                        Equations
                                                        Instances For

                                                          Inversion of the & rule, first component.

                                                          Equations
                                                          Instances For

                                                            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.«term_≡⇓_» :
                                                                Lean.TrailingParserDescr

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

                                                                Equations
                                                                • Cslib.CLL.«term_≡⇓_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_≡⇓_» 29 30 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡⇓ ") (Lean.ParserDescr.cat `term 30))
                                                                Instances For
                                                                  def Cslib.CLL.Proposition.Equiv {Atom : Type u} (a b : Proposition Atom) :

                                                                  Propositional equivalence, proof-irrelevant version (Prop).

                                                                  Equations
                                                                  Instances For
                                                                    def Cslib.CLL.«term_≡_» :
                                                                    Lean.TrailingParserDescr

                                                                    Propositional equivalence, proof-irrelevant version (Prop).

                                                                    Equations
                                                                    • Cslib.CLL.«term_≡_» = Lean.ParserDescr.trailingNode `Cslib.CLL.«term_≡_» 29 30 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ ") (Lean.ParserDescr.cat `term 30))
                                                                    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.

                                                                      @[implicit_reducible]
                                                                      instance Cslib.CLL.instCoeEquivEquiv {Atom✝ : Type u_1} {a b : Proposition Atom✝} :
                                                                      Coe (a.equiv b) (a.Equiv b)

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

                                                                      Equations
                                                                      noncomputable def Cslib.CLL.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

                                                                        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.

                                                                              The canonical equivalence relation for propositions.

                                                                              Equations
                                                                              Instances For

                                                                                ʔ0 ≡⇓ ⊥

                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                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 : Logic.InferenceSystem.derivation (a ::ₘ Γ)) :

                                                                                    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 : Logic.InferenceSystem.derivation (Γ + {a} + Δ)) :

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

                                                                                      Equations
                                                                                      Instances For
                                                                                        @[implicit_reducible]
                                                                                        Equations
                                                                                        • One or more equations did not get rendered due to their size.
                                                                                        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