Propositions.
- atom {Atom : Type u} (x : Atom) : Proposition Atom
- atomDual {Atom : Type u} (x : Atom) : Proposition Atom
- one {Atom : Type u} : Proposition Atom
- zero {Atom : Type u} : Proposition Atom
- top {Atom : Type u} : Proposition Atom
- bot {Atom : Type u} : Proposition Atom
- tensor
{Atom : Type u}
(a b : Proposition Atom)
: Proposition Atom
The multiplicative conjunction connective.
- parr
{Atom : Type u}
(a b : Proposition Atom)
: Proposition Atom
The multiplicative disjunction connective.
- oplus
{Atom : Type u}
(a b : Proposition Atom)
: Proposition Atom
The additive disjunction connective.
- with
{Atom : Type u}
(a b : Proposition Atom)
: Proposition Atom
The additive conjunction connective.
- bang
{Atom : Type u}
(a : Proposition Atom)
: Proposition Atom
The "of course" exponential.
- quest
{Atom : Type u}
(a : Proposition Atom)
: Proposition Atom
The "why not" exponential. This is written as ʔ, or _?, to distinguish itself from the lean syntatical hole ? syntax
Instances For
Instances For
Equations
Equations
- CLL.instBEqProposition.beq (CLL.Proposition.atom a) (CLL.Proposition.atom b) = (a == b)
- CLL.instBEqProposition.beq (CLL.Proposition.atomDual a) (CLL.Proposition.atomDual b) = (a == b)
- CLL.instBEqProposition.beq CLL.Proposition.one CLL.Proposition.one = true
- CLL.instBEqProposition.beq CLL.Proposition.zero CLL.Proposition.zero = true
- CLL.instBEqProposition.beq CLL.Proposition.top CLL.Proposition.top = true
- CLL.instBEqProposition.beq CLL.Proposition.bot CLL.Proposition.bot = true
- CLL.instBEqProposition.beq (a.tensor a_1) (b.tensor b_1) = (CLL.instBEqProposition.beq a b && CLL.instBEqProposition.beq a_1 b_1)
- CLL.instBEqProposition.beq (a.parr a_1) (b.parr b_1) = (CLL.instBEqProposition.beq a b && CLL.instBEqProposition.beq a_1 b_1)
- CLL.instBEqProposition.beq (a.oplus a_1) (b.oplus b_1) = (CLL.instBEqProposition.beq a b && CLL.instBEqProposition.beq a_1 b_1)
- CLL.instBEqProposition.beq (a.with a_1) (b.with b_1) = (CLL.instBEqProposition.beq a b && CLL.instBEqProposition.beq a_1 b_1)
- CLL.instBEqProposition.beq a.bang b.bang = CLL.instBEqProposition.beq a b
- CLL.instBEqProposition.beq a.quest b.quest = CLL.instBEqProposition.beq a b
- CLL.instBEqProposition.beq x✝¹ x✝ = false
Instances For
Equations
- CLL.instZeroProposition = { zero := CLL.Proposition.zero }
Equations
- CLL.instOneProposition = { one := CLL.Proposition.one }
Equations
- CLL.instTopProposition = { top := CLL.Proposition.top }
Equations
- CLL.instBotProposition = { bot := CLL.Proposition.bot }
The multiplicative conjunction connective.
Equations
- CLL.«term_⊗_» = Lean.ParserDescr.trailingNode `CLL.«term_⊗_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ ") (Lean.ParserDescr.cat `term 36))
Instances For
The additive disjunction connective.
Equations
- CLL.«term_⊕_» = Lean.ParserDescr.trailingNode `CLL.«term_⊕_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊕ ") (Lean.ParserDescr.cat `term 36))
Instances For
The multiplicative disjunction connective.
Equations
- CLL.term_⅋_ = Lean.ParserDescr.trailingNode `CLL.term_⅋_ 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⅋ ") (Lean.ParserDescr.cat `term 31))
Instances For
The additive conjunction connective.
Equations
- CLL.«term_&_» = Lean.ParserDescr.trailingNode `CLL.«term_&_» 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " & ") (Lean.ParserDescr.cat `term 31))
Instances For
The "of course" exponential.
Equations
- CLL.term!_ = Lean.ParserDescr.node `CLL.term!_ 95 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "!") (Lean.ParserDescr.cat `term 95))
Instances For
The "why not" exponential. This is written as ʔ, or _?, to distinguish itself from the lean syntatical hole ? syntax
Equations
- CLL.«termʔ_» = Lean.ParserDescr.node `CLL.«termʔ_» 95 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "ʔ") (Lean.ParserDescr.cat `term 95))
Instances For
Propositional duality.
Equations
- (CLL.Proposition.atom x_1).dual = CLL.Proposition.atomDual x_1
- (CLL.Proposition.atomDual x_1).dual = CLL.Proposition.atom x_1
- CLL.Proposition.one.dual = CLL.Proposition.bot
- CLL.Proposition.bot.dual = CLL.Proposition.one
- CLL.Proposition.zero.dual = CLL.Proposition.top
- CLL.Proposition.top.dual = CLL.Proposition.zero
- (a.tensor b).dual = a.dual.parr b.dual
- (a.parr b).dual = a.dual.tensor b.dual
- (a.oplus b).dual = a.dual.with b.dual
- (a.with b).dual = a.dual.oplus b.dual
- a.bang.dual = a.dual.quest
- a.quest.dual = a.dual.bang
Instances For
Propositional duality.
Equations
- CLL.«term_⫠» = Lean.ParserDescr.trailingNode `CLL.«term_⫠» 1024 1024 (Lean.ParserDescr.symbol "⫠")
Instances For
No proposition is equal to its dual.
Two propositions are equal iff their respective duals are equal.
Duality is an involution.
Linear implication.
Instances For
Linear implication.
Equations
- CLL.«term_⊸_» = Lean.ParserDescr.trailingNode `CLL.«term_⊸_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊸ ") (Lean.ParserDescr.cat `term 26))
Instances For
A sequent in CLL is a list of propositions.
Equations
- CLL.Sequent Atom = List (CLL.Proposition Atom)
Instances For
A proof in the sequent calculus for classical linear logic.
- ax {Atom : Type u} {a : Proposition Atom} : Proof [a, a.dual]
- cut {Atom : Type u} {a : Proposition Atom} {Γ Δ : List (Proposition Atom)} : Proof (a :: Γ) → Proof (a.dual :: Δ) → Proof (Γ ++ Δ)
- exchange {Atom : Type u} {Γ Δ : List (Proposition Atom)} : Γ.Perm Δ → Proof Γ → Proof Δ
- one {Atom : Type u} : Proof [1]
- bot {Atom : Type u} {Γ : Sequent Atom} : Proof Γ → Proof (⊥ :: Γ)
- parr {Atom : Type u} {a b : Proposition Atom} {Γ : List (Proposition Atom)} : Proof (a :: b :: Γ) → Proof (a.parr b :: Γ)
- tensor {Atom : Type u} {a : Proposition Atom} {Γ : List (Proposition Atom)} {b : Proposition Atom} {Δ : List (Proposition Atom)} : Proof (a :: Γ) → Proof (b :: Δ) → Proof (a.tensor b :: (Γ ++ Δ))
- oplus₁ {Atom : Type u} {a : Proposition Atom} {Γ : List (Proposition Atom)} {b : Proposition Atom} : Proof (a :: Γ) → Proof (a.oplus b :: Γ)
- oplus₂ {Atom : Type u} {b : Proposition Atom} {Γ : List (Proposition Atom)} {a : Proposition Atom} : Proof (b :: Γ) → Proof (a.oplus b :: Γ)
- with {Atom : Type u} {a : Proposition Atom} {Γ : List (Proposition Atom)} {b : Proposition Atom} : Proof (a :: Γ) → Proof (b :: Γ) → Proof (a.with b :: Γ)
- top {Atom : Type u} {Γ : List (Proposition Atom)} : Proof (⊤ :: Γ)
- quest {Atom : Type u} {a : Proposition Atom} {Γ : List (Proposition Atom)} : Proof (a :: Γ) → Proof (a.quest :: Γ)
- weaken {Atom : Type u} {Γ : Sequent Atom} {a : Proposition Atom} : Proof Γ → Proof (a.quest :: Γ)
- contract {Atom : Type u} {a : Proposition Atom} {Γ : List (Proposition Atom)} : Proof (a.quest :: a.quest :: Γ) → Proof (a.quest :: Γ)
- bang {Atom : Type u} {Γ : Sequent Atom} {a : Proposition Atom} : Γ.AllQuest → Proof (a :: Γ) → Proof (a.bang :: Γ)
Instances For
A sequent is provable if there exists a proof that concludes it.
Equations
- CLL.Provable Γ = Nonempty (CLL.Proof Γ)
Instances For
A proof in the sequent calculus for classical linear logic.
Equations
- CLL.«term⇓_» = Lean.ParserDescr.node `CLL.«term⇓_» 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⇓") (Lean.ParserDescr.cat `term 90))
Instances For
A sequent is provable if there exists a proof that concludes it.
Equations
- CLL.«term⊢_» = Lean.ParserDescr.node `CLL.«term⊢_» 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 90))
Instances For
Equations
- CLL.instCoeProvableProof = { coe := fun (p : CLL.Provable Γ) => p.toProof }
The axiom, but where the order of propositions is reversed.
Equations
Instances For
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 #
Propositional equivalence, proof-irrelevant version (Prop
).
Instances For
Conversion from proof-relevant to proof-irrelevant versions of propositional equivalence.
Equations
- CLL.instCoeEquivEquiv = { coe := ⋯ }
Equations
- CLL.«term_≡_» = Lean.ParserDescr.trailingNode `CLL.«term_≡_» 29 30 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ ") (Lean.ParserDescr.cat `term 30))
Instances For
Equations
Instances For
The canonical equivalence relation for propositions.
Equations
- CLL.Proposition.propositionSetoid = { r := CLL.Proposition.Equiv, iseqv := ⋯ }
Instances For
The proposition at the head of a proof can be substituted by an equivalent proposition.