η-expansion for Classical Linear Logic (CLL) #
@[irreducible]
The η-expansion of a proposition a is a Proof of {a, a⫠} that applies the axiom
only to atomic propositions.
Equations
- (Cslib.CLL.Proposition.atom x).expand = Cslib.CLL.Proof.ax
- (Cslib.CLL.Proposition.atomDual x).expand = Cslib.CLL.Proof.ax
- Cslib.CLL.Proposition.one.expand = Cslib.CLL.Proof.rwConclusion ⋯ (Cslib.CLL.Proof.rwConclusion ⋯ Cslib.CLL.Proof.one.bot)
- Cslib.CLL.Proposition.bot.expand = Cslib.CLL.Proof.one.bot
- Cslib.CLL.Proposition.top.expand = Cslib.CLL.Proof.top
- Cslib.CLL.Proposition.zero.expand = Cslib.CLL.Proof.rwConclusion ⋯ Cslib.CLL.Proof.top
- (a_2.tensor b).expand = Cslib.CLL.Proof.rwConclusion ⋯ (Cslib.CLL.Proof.rwConclusion ⋯ (a_2.expand.tensor b.expand)).parr
- (a_2.parr b).expand = (Cslib.CLL.Proof.rwConclusion ⋯ ((Cslib.CLL.Proof.rwConclusion ⋯ a_2.expand).tensor (Cslib.CLL.Proof.rwConclusion ⋯ b.expand))).parr
- (a_2.oplus b).expand = Cslib.CLL.Proof.rwConclusion ⋯ ((Cslib.CLL.Proof.rwConclusion ⋯ a_2.expand.oplus₁).with (Cslib.CLL.Proof.rwConclusion ⋯ b.expand.oplus₂))
- (a_2.with b).expand = (Cslib.CLL.Proof.rwConclusion ⋯ a_2.dual.expand.oplus₁).with (Cslib.CLL.Proof.rwConclusion ⋯ b.dual.expand.oplus₂)
- a_2.quest.expand = Cslib.CLL.Proof.rwConclusion ⋯ (Cslib.CLL.Proof.bang ⋯ (Cslib.CLL.Proof.rwConclusion ⋯ a_2.expand.quest))
- a_2.bang.expand = Cslib.CLL.Proof.rwConclusion ⋯ (Cslib.CLL.Proof.bang ⋯ (Cslib.CLL.Proof.rwConclusion ⋯ a_2.dual.expand.quest))
Instances For
A Proof has only atomic axioms if all its instances of the axiom treat atomic propositions.
Equations
- Cslib.CLL.Proof.ax.onlyAtomicAxioms = (true || false)
- Cslib.CLL.Proof.ax.onlyAtomicAxioms = (false || true)
- Cslib.CLL.Proof.ax.onlyAtomicAxioms = (false || false)
- (p_2.cut q).onlyAtomicAxioms = (p_2.onlyAtomicAxioms && q.onlyAtomicAxioms)
- Cslib.CLL.Proof.one.onlyAtomicAxioms = true
- p_2.bot.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- p_2.parr.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- (p_2.tensor q).onlyAtomicAxioms = (p_2.onlyAtomicAxioms && p_2.onlyAtomicAxioms)
- p_2.oplus₁.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- p_2.oplus₂.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- (p_2.with q).onlyAtomicAxioms = (p_2.onlyAtomicAxioms && q.onlyAtomicAxioms)
- Cslib.CLL.Proof.top.onlyAtomicAxioms = true
- p_2.quest.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- p_2.weaken.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- p_2.contract.onlyAtomicAxioms = p_2.onlyAtomicAxioms
- (Cslib.CLL.Proof.bang a_1 p_2).onlyAtomicAxioms = p_2.onlyAtomicAxioms
Instances For
theorem
Cslib.CLL.Proof.onlyAtomicAxioms_rwConclusion
{Atom✝ : Type u_1}
{Γ Δ : Sequent Atom✝}
{heq : Γ = Δ}
{p : Proof Γ}
(h : p.onlyAtomicAxioms = true)
:
Proof.onlyAtomicAxioms is preserved by Proof.rwConclusion.
η-expansion is correct: the proof returned by η-expansion contains only atomic axioms.