Girard's translation into linear logic
TheoremAdding a why-not proposition keeps a sequent all why-not#✓fully proved
For every CLL proposition \(a\) and every CLL sequent \(\Delta\), every proposition of the sequent \(?a, \Delta\) has the form \(?b\) for some \(b\) if and only if every proposition of \(\Delta\) does.
theorem Sequent.allQuest_cons_quest {Atom : Type*} (a : Proposition Atom) (Δ : Sequent Atom) :
Sequent.allQuest (.quest a ::ₘ Δ) = Sequent.allQuest Δ
Used by 1
DefinitionGirard's translation#✓fully proved
Given a map \(f\) from propositional atoms to CLL propositions, the translation \(A \mapsto A^\circ\) of propositional formulas into CLL is defined by recursion: \(a^\circ = f(a)\) for an atom \(a\), \((A \wedge B)^\circ = A^\circ \mathbin{\&} B^\circ\), \((A \vee B)^\circ = {!A^\circ} \oplus {!B^\circ}\), and \((A \to B)^\circ\) is the multiplicative disjunction (par) of \(?\big((A^\circ)^\perp\big)\) and \(B^\circ\), that is, the linear implication \({!A^\circ} \multimap B^\circ\).
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
Used by 11
TheoremGirard's translation of an implication#✓fully proved
For every map \(f\) from propositional atoms to CLL propositions and all propositional formulas \(A\) and \(B\), \((A \to B)^\circ = {!A^\circ} \multimap B^\circ\), where \(C^\circ\) denotes Girard's translation of a formula \(C\) with atoms translated by \(f\) and \(\multimap\) is linear implication in CLL.
theorem translate_imp (f : Atom → CLL.Proposition Atom') (A B : PL.Proposition Atom) :
translate f (.imp A B) = (.bang (translate f A) ⊸ translate f B)
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
Uses 1
DefinitionGirard's translation of a reusable hypothesis#✓fully proved
Given a map \(f\) from atoms to CLL propositions and a propositional formula \(A\), this is the CLL proposition \(?((A^\circ)^\perp)\), where \(A^\circ\) is Girard's translation of \(A\) with atoms translated by \(f\) and \((\cdot)^\perp\) is linear negation.
def hyp (f : Atom → CLL.Proposition Atom') (A : PL.Proposition Atom) : CLL.Proposition Atom' :=
.quest (translate f A)⫠
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
Uses 1 · Used by 9
DefinitionTranslated hypotheses of a context#✓fully proved
Given a map \(f\) from propositional atoms to CLL propositions and a multiset \(\Gamma\) of propositional formulas, \(?\Gamma^{\circ\perp}\) is the CLL sequent consisting of the propositions \(?\big((A^\circ)^\perp\big)\) for \(A \in \Gamma\), counted with multiplicity, where \(A^\circ\) is Girard's translation of \(A\) with atoms translated by \(f\).
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
def hyp (f : Atom → CLL.Proposition Atom') (A : PL.Proposition Atom) : CLL.Proposition Atom' :=
.quest (translate f A)⫠
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:79
Uses 1 · Used by 10
Structural rules for ?-contexts
TheoremWeakening by translated hypotheses#✓fully proved
Let \(f\) map propositional atoms to CLL propositions. If a CLL sequent \(\vdash \Delta\) is provable, then for every multiset \(\Gamma\) of propositional formulas the sequent \(\vdash ?\Gamma^{\circ\perp}, \Delta\) is provable, where \(?\Gamma^{\circ\perp}\) is the multiset of the propositions \(?\big((A^\circ)^\perp\big)\) for \(A \in \Gamma\) and \(A^\circ\) is Girard's translation of \(A\) with atoms translated by \(f\).
theorem weaken_hyps {Δ : CLL.Sequent Atom'} (p : Derivable Δ)
(Γ : Multiset (PL.Proposition Atom)) : Derivable (hyps f Γ + Δ)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 3 · Used by 2
TheoremContraction of a translated hypothesis context#✓fully proved
Let \(f\) map atoms to CLL propositions, let \(\Gamma\) be a multiset of propositional formulas, and write \(?\Gamma^{\circ\perp}\) for the CLL sequent of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\) counted with multiplicity, where \(B^\circ\) is Girard's translation of \(B\) with atoms translated by \(f\). For every CLL sequent \(\Delta\), if \(\vdash ?\Gamma^{\circ\perp}, ?\Gamma^{\circ\perp}, \Delta\) is provable in CLL, then so is \(\vdash ?\Gamma^{\circ\perp}, \Delta\).
theorem contract_hyps {Δ : CLL.Sequent Atom'} (Γ : Multiset (PL.Proposition Atom))
(p : Derivable (hyps f Γ + hyps f Γ + Δ)) : Derivable (hyps f Γ + Δ)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 3 · Used by 1
TheoremPromotion in a translated hypothesis context#✓fully proved
Let \(f\) map atoms to CLL propositions, let \(\Gamma\) be a multiset of propositional formulas, and write \(?\Gamma^{\circ\perp}\) for the CLL sequent of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\) counted with multiplicity, where \(B^\circ\) is Girard's translation of \(B\) with atoms translated by \(f\). For every CLL proposition \(a\), if the sequent \(\vdash a, ?\Gamma^{\circ\perp}\) is provable in CLL, then so is \(\vdash !a, ?\Gamma^{\circ\perp}\).
theorem bang_hyps {Γ : Multiset (PL.Proposition Atom)} {a : CLL.Proposition Atom'}
(p : Derivable (a ::ₘ hyps f Γ)) : Derivable (.bang a ::ₘ hyps f Γ)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 4 · Used by 1
TheoremCut of a translated hypothesis context against a closed proof#✓fully proved
Let \(f\) map atoms to CLL propositions, let \(\Gamma\) be a multiset of propositional formulas, and write \(?\Gamma^{\circ\perp}\) for the CLL sequent of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\) counted with multiplicity, where \(B^\circ\) is Girard's translation of \(B\) with atoms translated by \(f\). For all CLL propositions \(a\) and \(c\), if \(\vdash a, ?\Gamma^{\circ\perp}\) is provable in CLL and there is a CLL proof of \(\vdash a^\perp, c\), then \(\vdash c, ?\Gamma^{\circ\perp}\) is provable in CLL.
theorem cut_closed {Γ : Multiset (PL.Proposition Atom)} {a c : CLL.Proposition Atom'}
(p : Derivable (a ::ₘ hyps f Γ)) (q : ⇓(a⫠ ::ₘ ({c} : CLL.Sequent Atom'))) :
Derivable (c ::ₘ hyps f Γ)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 2 · Used by 1
TheoremCut within a translated hypothesis context#✓fully proved
Let \(f\) map atoms to CLL propositions, let \(\Gamma\) be a multiset of propositional formulas, and write \(?\Gamma^{\circ\perp}\) for the CLL sequent of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\) counted with multiplicity, where \(B^\circ\) is Girard's translation of \(B\) with atoms translated by \(f\). For all CLL propositions \(a\) and \(c\), if both \(\vdash a, ?\Gamma^{\circ\perp}\) and \(\vdash a^\perp, c, ?\Gamma^{\circ\perp}\) are provable in CLL, then so is \(\vdash c, ?\Gamma^{\circ\perp}\).
theorem cut_hyps {Γ : Multiset (PL.Proposition Atom)} {a c : CLL.Proposition Atom'}
(p : Derivable (a ::ₘ hyps f Γ)) (q : Derivable (a⫠ ::ₘ c ::ₘ hyps f Γ)) :
Derivable (c ::ₘ hyps f Γ)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 3 · Used by 1
Translating derivations
TheoremTranslated hypotheses are provable from their context#✓fully proved
Let \(f\) map atoms to CLL propositions, let \(\Gamma\) be a multiset of propositional formulas, and write \(?\Gamma^{\circ\perp}\) for the CLL sequent of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\) counted with multiplicity, where \(B^\circ\) is Girard's translation of \(B\) with atoms translated by \(f\). For every propositional formula \(A \in \Gamma\), the sequent \(\vdash A^\circ, ?\Gamma^{\circ\perp}\) is provable in CLL.
theorem hyp_mem {Γ : Multiset (PL.Proposition Atom)} {A : PL.Proposition Atom} (h : A ∈ Γ) :
Derivable (translate f A ::ₘ hyps f Γ)
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 4 · Used by 1
TheoremSeparating a new hypothesis in the translation#✓fully proved
Let \(f\) map propositional atoms to CLL propositions, let \(\Gamma\) be a finite set of propositional formulas, \(A\) a propositional formula and \(c\) a CLL proposition. Write \(B^\circ\) for Girard's translation of a formula \(B\) with atoms translated by \(f\), and \(?\Delta^{\circ\perp}\) for the multiset of the propositions \(?\big((B^\circ)^\perp\big)\) for \(B \in \Delta\). If the CLL sequent \(\vdash c, ?(\Gamma \cup \{A\})^{\circ\perp}\) is provable, then so is \(\vdash ?\big((A^\circ)^\perp\big), c, ?\Gamma^{\circ\perp}\).
When \(A \in \Gamma\) the conclusion follows by weakening.
theorem of_insert {Γ : Ctx Atom} {A : PL.Proposition Atom} {c : CLL.Proposition Atom'}
(p : Derivable ((c ::ₘ hyps f (insert A Γ).val))) :
Derivable (hyp f A ::ₘ c ::ₘ hyps f Γ.val)
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
def hyp (f : Atom → CLL.Proposition Atom') (A : PL.Proposition Atom) : CLL.Proposition Atom' :=
.quest (translate f A)⫠
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:79
Uses 3 · Used by 1
TheoremGirard's translation preserves provability#✓fully proved
Let \(f\) map atoms to CLL propositions and write \(B^\circ\) for Girard's translation of a propositional formula \(B\) with atoms translated by \(f\). Let \(T\) be a propositional theory such that the one-formula sequent \(\vdash B^\circ\) is provable in CLL for every \(B \in T\). If \(\Gamma\) is a finite set of propositional formulas and \(\Gamma \vdash A\) has a natural-deduction derivation (in minimal propositional logic) using the axioms of \(T\), then the CLL sequent \(\vdash A^\circ, ?\Gamma^{\circ\perp}\) is provable, where \(?\Gamma^{\circ\perp}\) consists of the propositions \(?((B^\circ)^\perp)\), one for each \(B \in \Gamma\).
theorem derivable_of_derivation {T : Theory Atom}
(hT : ∀ B ∈ T, Derivable ({translate f B} : CLL.Sequent Atom')) {Γ : Ctx Atom}
{A : PL.Proposition Atom} (d : T.Derivation Γ A) :
Derivable (translate f A ::ₘ hyps f Γ.val)
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
def hyps (f : Atom → CLL.Proposition Atom') (Γ : Multiset (PL.Proposition Atom)) :
CLL.Sequent Atom' :=
Γ.map (hyp f)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:86
Uses 9 · Used by 2
TheoremTheorems of minimal logic translate to CLL theorems#✓fully proved
For every map \(f\) from propositional atoms to CLL propositions, if a propositional formula \(A\) is derivable in natural deduction from the empty context with no axioms (minimal logic), then the one-sided CLL sequent \(\vdash A^\circ\) is provable, where \(A^\circ\) is Girard's translation of \(A\) with atoms translated by \(f\).
theorem mpl {A : PL.Proposition Atom} (d : (MPL Atom).Derivation ∅ A) :
Derivable ({translate f A} : CLL.Sequent Atom')
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
Uses 3
DefinitionThe atom map sending \(\bot\) to \(0\)#✓fully proved
For a type of atoms with a distinguished atom \(\bot\) and decidable equality, this is the map from atoms to CLL propositions that sends \(\bot\) to the additive unit \(0\) and every other atom \(a\) to the CLL atom \(a\).
def botToZero [Bot Atom] (a : Atom) : CLL.Proposition Atom :=
if a = ⊥ then .zero else .atom a
TheoremEx falso translates to a CLL theorem#✓fully proved
Let \(f\) map atoms to CLL propositions and send the atom \(\bot\) to the additive unit \(0\). Then for every propositional formula \(B\), the one-formula CLL sequent \(\vdash (\bot \to B)^\circ\) is provable, where \((\cdot)^\circ\) is Girard's translation with atoms translated by \(f\).
The translation \((\bot \to B)^\circ\) is the par of \(?\top\) and \(B^\circ\), which is provable by the \(\top\) rule.
theorem efq [Bot Atom] (hf : f ⊥ = .zero) (B : PL.Proposition Atom) :
Derivable ({translate f (.imp ⊥ B)} : CLL.Sequent Atom')
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
Uses 1 · Used by 1
TheoremTheorems of intuitionistic logic translate to CLL theorems#✓fully proved
Let \(f\) map propositional atoms to CLL propositions and send the atom \(\bot\) to the additive unit \(0\). If a propositional formula \(A\) is derivable in natural deduction from the empty context in intuitionistic propositional logic (no axioms other than ex falso \(\bot \to B\) for every formula \(B\)), then the one-sided CLL sequent \(\vdash A^\circ\) is provable, where \(A^\circ\) is Girard's translation of \(A\) with atoms translated by \(f\).
theorem ipl [Bot Atom] (hf : f ⊥ = .zero) {A : PL.Proposition Atom}
(d : (IPL Atom).Derivation ∅ A) : Derivable ({translate f A} : CLL.Sequent Atom')
def translate (f : Atom → CLL.Proposition Atom') : PL.Proposition Atom → CLL.Proposition Atom'
| .atom a => f a
| .and A B => .with (translate f A) (translate f B)
| .or A B => .oplus (.bang (translate f A)) (.bang (translate f B))
| .imp A B => .parr (.quest (translate f A)⫠) (translate f B)
CSLibExt/Logics/LinearLogic/CLL/GirardTranslation.lean:68
Uses 4
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.