Documentation

Cslib.Logics.LinearLogic.CLL.MLL

Multiplicative Classical Linear Logic (MLL) #

Multiplicative classical linear logic, defined as a fragment of classical linear logic by means of a predicate (unbundled style) and Subtype (bundled style).

This file serves as the reference example of how to define a fragment of an inference system through tagging of InferenceSystem and Subtype, following the next recipe. It is a work in progress: the recipe will evolve together with how the Lean and CSLib ecosystems can deal with this general problem.

  1. Define predicates for restricting relevant types to the fragment, here IsMLL for propositions (CLL.Proposition) and proofs (CLL.Proof). This part lives under the namespace of the original system (here Cslib.Logic.CLL). Custom recursors can be defined for convenient case analysis that automatically discharges irrelevant cases (those not in the fragment).
  2. Define the inference system in the fragment -- here MLL.Proof -- as an abbreviation of a subtype. This part lives under the namespace of the fragment (here Cslib.Logic.CLL.MLL).

We also call the first part the 'unbundled part' and the second the 'bundled part'.

def Cslib.Logic.CLL.Proposition.IsMLL.rec {Atom : Type u_1} {motive : {a : Proposition Atom} → a.IsMLLSort u} (atom : (x : Atom) → motive ) (atomDual : (x : Atom) → motive ) (one : motive ) (bot : motive ) (tensor : (a b : Proposition Atom) → {ha : a.IsMLL} → {hb : b.IsMLL} → motive hamotive hbmotive ) (parr : (a b : Proposition Atom) → {ha : a.IsMLL} → {hb : b.IsMLL} → motive hamotive hbmotive ) {a : Proposition Atom} (h : a.IsMLL) :
motive h

Recursor for MLL propositions.

Equations
Instances For
    theorem Cslib.Logic.CLL.Proposition.isMLL_dual {Atom : Type u_1} {a : Proposition Atom} (ha : a.IsMLL) :

    Duality in MLL stays in MLL.

    theorem Cslib.Logic.CLL.Proposition.Context.isMLL_fill {Atom : Type u_1} {c : Context Atom} {a : Proposition Atom} (hc : c.IsMLL) :

    Filling a multiplicative propositional context with a multiplicative proposition stays in MLL.

    def Cslib.Logic.CLL.Sequent.IsMLL {Atom : Type u_1} (Γ : Sequent Atom) :

    A multiplicative sequent.

    Equations
    Instances For
      def Cslib.Logic.CLL.Proof.IsMLL.rec {Atom : Type u_1} {motive : {Γ : Sequent Atom} → {p : Proof Γ} → p.IsMLLSort u} (ax : {a : Proposition Atom} → {ha : a.IsMLL} → motive ha) (one : motive ) (bot : {Γ : Sequent Atom} → (p : Proof Γ) → {hp : p.IsMLL} → motive hpmotive hp) (tensor : {a b : Proposition Atom} → {Γ Δ : Sequent Atom} → (p : Proof (a ::ₘ Γ)) → (q : Proof (b ::ₘ Δ)) → {hp : p.IsMLL} → {hq : q.IsMLL} → motive hpmotive hqmotive ) (parr : {a b : Proposition Atom} → {Γ : Sequent Atom} → (p : Proof (a ::ₘ b ::ₘ Γ)) → {hp : p.IsMLL} → motive hpmotive hp) (cut : {a : Proposition Atom} → {Γ Δ : Sequent Atom} → (p : Proof (a ::ₘ Γ)) → (q : Proof (a.dual ::ₘ Δ)) → {hp : p.IsMLL} → {hq : q.IsMLL} → motive hpmotive hqmotive ) {Γ : Sequent Atom} {p : Proof Γ} (h : p.IsMLL) :
      motive h

      Recursor for MLL derivations.

      Equations
      Instances For

        A proof in the MLL fragment can only prove MLL sequents.

        If a CLL derivation is cut-free and concludes an MLL sequent, then it is an MLL derivation.

        Tag for the MLL inference system.

        @[implicit_reducible]

        MLL inference system.

        Equations

        MLL proofs derive only MLL sequents.

        Downcasting of cut-free CLL proofs of multiplicative sequents into MLL proofs.

        Equations
        Instances For