Girard's embedding of classical logic into linear logic #
$\mathbf{LL}$ to $\mathbf{LK}$ #
def
LO.FirstOrder.LinearLogic.Semiformula.forget
{L : Language}
{ξ : Type u_2}
{n : ℕ}
:
Semiformula L ξ n → FirstOrder.Semiformula L ξ n
Forget the linear structure and return a classical first-order formula.
Equations
- (LO.FirstOrder.LinearLogic.Semiformula.rel r v).forget = LO.FirstOrder.Semiformula.rel r v
- (LO.FirstOrder.LinearLogic.Semiformula.nrel r v).forget = LO.FirstOrder.Semiformula.nrel r v
- LO.FirstOrder.LinearLogic.Semiformula.one.forget = ⊤
- LO.FirstOrder.LinearLogic.Semiformula.verum.forget = ⊤
- LO.FirstOrder.LinearLogic.Semiformula.falsum.forget = ⊥
- LO.FirstOrder.LinearLogic.Semiformula.zero.forget = ⊥
- (φ.tensor ψ).forget = φ.forget ⋏ ψ.forget
- (φ.with ψ).forget = φ.forget ⋏ ψ.forget
- (φ.par ψ).forget = φ.forget ⋎ ψ.forget
- (φ.plus ψ).forget = φ.forget ⋎ ψ.forget
- φ.all.forget = ∀⁰ φ.forget
- φ.exs.forget = ∃⁰ φ.forget
- φ.bang.forget = φ.forget
- φ.quest.forget = φ.forget
Instances For
@[simp]
theorem
LO.FirstOrder.LinearLogic.Semiformula.forget_bang
{L : Language}
{ξ : Type u_1}
{n : ℕ}
(φ : Semiformula L ξ n)
:
@[simp]
theorem
LO.FirstOrder.LinearLogic.Semiformula.forget_quest
{L : Language}
{ξ : Type u_1}
{n : ℕ}
(φ : Semiformula L ξ n)
:
@[simp]
theorem
LO.FirstOrder.LinearLogic.Semiformula.forget_rew
{L : Language}
{ξ₁ : Type u_1}
{n₁ : ℕ}
{ξ₂ : Type u_2}
{n₂ : ℕ}
(ω : Rew L ξ₁ n₁ ξ₂ n₂)
(φ : Semiformula L ξ₁ n₁)
:
@[reducible, inline]
Equations
Instances For
@[simp]
def
LO.FirstOrder.LinearLogic.Derivation.forget
{L : Language}
{Γ : Sequent L}
:
Derivation Γ → ⊢ᵀ Γ.forget
Equations
- (LO.FirstOrder.LinearLogic.Derivation.identity φ).forget = LO.FirstOrder.Derivation.em ⋯ ⋯
- (d₁.cut d₂).forget = (LO.FirstOrder.Derivation.wk d₁.forget ⋯).cut (LO.FirstOrder.Derivation.wk d₂.forget ⋯)
- (d.exchange h).forget = LO.FirstOrder.Derivation.wk d.forget ⋯
- LO.FirstOrder.LinearLogic.Derivation.one.forget = LO.FirstOrder.Derivation.verum
- d.falsum.forget = LO.FirstOrder.Derivation.wk d.forget ⋯
- d.par.forget = LO.FirstOrder.Derivation.or (LO.FirstOrder.Derivation.cast d.forget ⋯)
- (d₁.tensor d₂).forget = (LO.FirstOrder.Derivation.wk d₁.forget ⋯).and (LO.FirstOrder.Derivation.wk d₂.forget ⋯)
- (LO.FirstOrder.LinearLogic.Derivation.verum Γ_2).forget = LO.FirstOrder.Derivation.verum' ⋯
- (d₁.with d₂).forget = LO.FirstOrder.Derivation.and (LO.FirstOrder.Derivation.cast d₁.forget ⋯) (LO.FirstOrder.Derivation.cast d₂.forget ⋯)
- (d.plusRight ψ).forget = (LO.FirstOrder.Derivation.wk d.forget ⋯).or
- (d.plusLeft φ).forget = (LO.FirstOrder.Derivation.wk d.forget ⋯).or
- d.all.forget = LO.FirstOrder.Derivation.all (LO.FirstOrder.Derivation.cast d.forget ⋯)
- (LO.FirstOrder.LinearLogic.Derivation.exs t d).forget = LO.FirstOrder.Derivation.exs t (LO.FirstOrder.Derivation.cast d.forget ⋯)
- (d.weakening φ).forget = LO.FirstOrder.Derivation.wk d.forget ⋯
- d.contraction.forget = LO.FirstOrder.Derivation.wk d.forget ⋯
- d.dereliction.forget = LO.FirstOrder.Derivation.cast d.forget ⋯
- (d.ofCourse a).forget = LO.FirstOrder.Derivation.cast d.forget ⋯
Instances For
theorem
LO.FirstOrder.LinearLogic.Proof.forget
{L : Language}
{φ : Sentence L}
:
𝐋𝐋 ⊢ φ → 𝐋𝐊 ⊢ Semiformula.forget φ
$\mathbf{LK}$ to $\mathbf{LL}$ #
def
LO.FirstOrder.Semiformula.girard
{L : Language}
{ξ : Type u_2}
{n : ℕ}
(φ : Semiformula L ξ n)
:
LinearLogic.Semiformula L ξ n
Girard embedding
Equations
- One or more equations did not get rendered due to their size.
- (LO.FirstOrder.Semiformula.rel r v).girard = !LO.FirstOrder.LinearLogic.Semiformula.rel r v
- (LO.FirstOrder.Semiformula.nrel r v).girard = ?LO.FirstOrder.LinearLogic.Semiformula.nrel r v
- LO.FirstOrder.Semiformula.verum.girard = 1
- LO.FirstOrder.Semiformula.falsum.girard = ⊥
- φ.all.girard = match φ.polarity with | true => ∀⁰ ?φ.girard | false => ∀⁰ φ.girard
- φ.exs.girard = match φ.polarity with | true => ∃⁰ φ.girard | false => ∃⁰ !φ.girard
Instances For
@[simp]
theorem
LO.FirstOrder.Semiformula.girard_rew
{L : Language}
{ξ₁ : Type u_1}
{n₁ : ℕ}
{ξ₂ : Type u_2}
{n₂ : ℕ}
(ω : Rew L ξ₁ n₁ ξ₂ n₂)
(φ : Semiformula L ξ₁ n₁)
:
def
LO.FirstOrder.Semiformula.Girard
{L : Language}
{ξ : Type u_2}
{n : ℕ}
(φ : Semiformula L ξ n)
:
LinearLogic.Semiformula L ξ n
Instances For
@[simp]
theorem
LO.FirstOrder.Semiformula.Girard_rew
{L : Language}
{ξ₁ : Type u_1}
{n₁ : ℕ}
{ξ₂ : Type u_2}
{n₂ : ℕ}
(ω : Rew L ξ₁ n₁ ξ₂ n₂)
(φ : Semiformula L ξ₁ n₁)
:
theorem
LO.FirstOrder.Semiformula.girard_negative
{L : Language}
{ξ : Type u_1}
{n : ℕ}
{φ : Semiformula L ξ n}
(h : φ.Negative)
:
theorem
LO.FirstOrder.Semiformula.girard_positive
{L : Language}
{ξ : Type u_1}
{n : ℕ}
{φ : Semiformula L ξ n}
(h : φ.Positive)
:
@[simp]
theorem
LO.FirstOrder.Semiformula.girard_negative_iff
{L : Language}
{ξ : Type u_1}
{n : ℕ}
{φ : Semiformula L ξ n}
:
@[simp]
theorem
LO.FirstOrder.Semiformula.girard_positive_iff
{L : Language}
{ξ : Type u_1}
{n : ℕ}
{φ : Semiformula L ξ n}
:
@[simp]
theorem
LO.FirstOrder.Semiformula.Girard_negative
{L : Language}
{ξ : Type u_1}
{n : ℕ}
(φ : Semiformula L ξ n)
:
@[simp]
theorem
LO.FirstOrder.Semiformula.forget_girard
{L : Language}
{ξ : Type u_1}
{n : ℕ}
(φ : Semiformula L ξ n)
:
@[simp]
theorem
LO.FirstOrder.Semiformula.forget_Girard
{L : Language}
{ξ : Type u_1}
{n : ℕ}
(φ : Semiformula L ξ n)
:
@[reducible, inline]
Equations
Instances For
@[simp]
def
LO.FirstOrder.Derivation.toLL
{L : Language}
[L.DecidableEq]
{Γ : Sequent L}
:
⊢ᵀ Γ → LinearLogic.Derivation Γ.Girard
Equations
- One or more equations did not get rendered due to their size.
- (LO.FirstOrder.Derivation.axL R v).toLL = (LO.FirstOrder.LinearLogic.Derivation.identity (!LO.FirstOrder.LinearLogic.Semiformula.rel R v)).dereliction
- (d.wk h).toLL = d.toLL.negativeWk ⋯ ⋯
- LO.FirstOrder.Derivation.verum.toLL = LO.FirstOrder.LinearLogic.Derivation.one.dereliction
- d.all.toLL = match h : LO.FirstOrder.Semiformula.polarity φ with | true => have this := d.toLL.cast ⋯; this.all.cast ⋯ | false => have this := d.toLL.cast ⋯; this.all.cast ⋯
Instances For
theorem
LO.FirstOrder.Proof.girard
{L : Language}
[L.DecidableEq]
{φ : Sentence L}
:
𝐋𝐊 ⊢ φ → 𝐋𝐋 ⊢ Semiformula.Girard φ