Sequent calculus and variants #
This file defines a characterization of Tait style calculus and Gentzen style calculus.
Main Definitions #
One-sided $\mathbf{LK}$ #
class
LO.OneSidedLK
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
(𝔇 : List F → Type u_2)
:
Type (max u_1 u_2)
Instances
class
LO.OneSidedLK.Cut
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
(𝔇 : List F → Type u_2)
extends LO.OneSidedLK 𝔇 :
Type (max u_1 u_2)
Instances
def
LO.OneSidedLK.cast
{F : Type u_1}
{𝔇 : List F → Type u_2}
{Γ Δ : List F}
(b : 𝔇 Γ)
(h : Γ = Δ := by simp)
:
𝔇 Δ
Equations
- LO.OneSidedLK.cast b h = h ▸ b
Instances For
def
LO.OneSidedLK.contra
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{Γ Δ : List F}
[OneSidedLK 𝔇]
(d : 𝔇 Γ)
(h : Γ ⊆ Δ := by simp)
:
𝔇 Δ
Equations
Instances For
def
LO.OneSidedLK.rotate
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{φ : F}
{Γ : List F}
[OneSidedLK 𝔇]
(d : 𝔇 (φ :: Γ))
:
Equations
Instances For
def
LO.OneSidedLK.close
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{Γ : List F}
[OneSidedLK 𝔇]
(φ : F)
(hp : φ ∈ Γ := by simp)
(hn : ∼φ ∈ Γ := by simp)
:
𝔇 Γ
Equations
- LO.OneSidedLK.close φ hp hn = LO.OneSidedLK.contraction (LO.OneSidedLK.identity φ) ⋯
Instances For
def
LO.OneSidedLK.top
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{Γ : List F}
[OneSidedLK 𝔇]
(h : ⊤ ∈ Γ := by simp)
:
𝔇 Γ
Equations
Instances For
def
LO.OneSidedLK.tensor
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{Γ Δ : List F}
[OneSidedLK 𝔇]
{φ ψ : F}
(dφ : 𝔇 (φ :: Γ))
(dψ : 𝔇 (ψ :: Δ))
:
Equations
- LO.OneSidedLK.tensor dφ dψ = LO.OneSidedLK.and (LO.OneSidedLK.contraction dφ ⋯) (LO.OneSidedLK.contraction dψ ⋯)
Instances For
def
LO.OneSidedLK.swap₁
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{φ₂ φ₁ : F}
{Γ : List F}
[OneSidedLK 𝔇]
(d : 𝔇 (φ₂ :: φ₁ :: Γ))
:
Equations
Instances For
def
LO.OneSidedLK.swap₂
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{φ₃ φ₁ φ₂ : F}
{Γ : List F}
[OneSidedLK 𝔇]
(d : 𝔇 (φ₃ :: φ₁ :: φ₂ :: Γ))
:
Equations
Instances For
def
LO.OneSidedLK.swap₃
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{φ₄ φ₁ φ₂ φ₃ : F}
{Γ : List F}
[OneSidedLK 𝔇]
(d : 𝔇 (φ₄ :: φ₁ :: φ₂ :: φ₃ :: Γ))
:
Equations
Instances For
def
LO.OneSidedLK.cut
{F : Type u_1}
{inst✝ : LogicalConnective F}
{inst✝¹ : DeMorgan F}
{inst✝² : TildeInvolutive F}
{𝔇 : List F → Type u_2}
[self : Cut 𝔇]
{φ : F}
{Γ Δ : List F}
:
Alias of LO.OneSidedLK.Cut.cut.
Equations
Instances For
def
LO.OneSidedLK.eCut
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{φ : F}
{Γ : List F}
{ψ : F}
{Δ : List F}
[Cut 𝔇]
(d₁ : 𝔇 (φ :: Γ))
(d₂ : 𝔇 (ψ :: Δ))
(e : ∼φ = ψ := by simp)
:
𝔇 (Γ ++ Δ)
Equations
- LO.OneSidedLK.eCut d₁ d₂ e = LO.OneSidedLK.cut d₁ (LO.OneSidedLK.cast d₂ ⋯)
Instances For
@[irreducible]
def
LO.OneSidedLK.disj₂
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{Γ Δ : List F}
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
- LO.OneSidedLK.disj₂ d_2 = LO.OneSidedLK.contra d_2 ⋯
- LO.OneSidedLK.disj₂ d_2 = d_2
- LO.OneSidedLK.disj₂ d_2 = LO.OneSidedLK.or d_2
Instances For
def
LO.OneSidedLK.conj₂
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
[OneSidedLK 𝔇]
{Γ Δ : List F}
(d : (φ : F) → φ ∈ Γ → 𝔇 (φ :: Δ))
:
Equations
- LO.OneSidedLK.conj₂ d_2 = LO.OneSidedLK.contra LO.OneSidedLK.verum ⋯
- LO.OneSidedLK.conj₂ d_2 = d_2 φ ⋯
- LO.OneSidedLK.conj₂ d_2 = LO.OneSidedLK.and (d_2 φ ⋯) (LO.OneSidedLK.conj₂ fun (χ : F) (h : χ ∈ ψ :: Γ_2) => d_2 χ ⋯)
Instances For
theorem
LO.OneSidedLK.PrincipalEntailment.provable_iff
{F : Type u_1}
{𝔇 : List F → Type u_2}
{P : Type u_3}
[Entailment P F]
{𝓟 : P}
[PrincipalEntailment 𝔇 𝓟]
{φ : F}
:
@[implicit_reducible]
instance
LO.OneSidedLK.PrincipalEntailment.instModusPonens
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{P : Type u_3}
[Entailment P F]
(𝓟 : P)
[PrincipalEntailment 𝔇 𝓟]
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.OneSidedLK.PrincipalEntailment.instCl
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{P : Type u_3}
[Entailment P F]
(𝓟 : P)
[PrincipalEntailment 𝔇 𝓟]
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.OneSidedLK.PrincipalEntailment.derivable_iff_provable_disj
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{P : Type u_3}
[Entailment P F]
{𝓟 : P}
[PrincipalEntailment 𝔇 𝓟]
[Cut 𝔇]
{Γ : List F}
:
@[reducible, inline]
abbrev
LO.OneSidedLK.Pullback
{F : Type u_1}
[LogicalConnective F]
(𝔇 : List F → Type u_3)
{G : Type u_4}
[LogicalConnective G]
(f : G →ˡᶜ F)
:
Equations
- LO.OneSidedLK.Pullback 𝔇 f Γ = 𝔇 (List.map (⇑f) Γ)
Instances For
def
LO.OneSidedLK.Pullback.cast
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
{f : G →ˡᶜ F}
{Δ : List F}
{Γ : List G}
(d : 𝔇 Δ)
(h : Δ = List.map (⇑f) Γ := by simp)
:
Pullback 𝔇 f Γ
Equations
- LO.OneSidedLK.Pullback.cast d h = id (h ▸ d)
Instances For
@[implicit_reducible]
instance
LO.OneSidedLK.Pullback.oneSidedLK
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
[DeMorgan G]
[TildeInvolutive G]
{f : G →ˡᶜ F}
[OneSidedLK 𝔇]
:
OneSidedLK (Pullback 𝔇 f)
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.OneSidedLK.Pullback.cut
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
[DeMorgan G]
[TildeInvolutive G]
{f : G →ˡᶜ F}
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.OneSidedLK.Pullback.instPrincipalEntailmentPullbackCoeHomPullback
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
{f : G →ˡᶜ F}
{P : Type u_4}
[Entailment P F]
(𝓟 : P)
[PrincipalEntailment 𝔇 𝓟]
:
PrincipalEntailment (Pullback 𝔇 f) (Entailment.pullback 𝓟 ⇑f)
Equations
- LO.OneSidedLK.Pullback.instPrincipalEntailmentPullbackCoeHomPullback 𝓟 = { equiv := fun {φ : G} => LO.OneSidedLK.PrincipalEntailment.equiv }
@[simp]
theorem
LO.OneSidedLK.Pullback.nonempty_iff
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
{f : G →ˡᶜ F}
{Γ : List G}
:
@[simp]
theorem
LO.OneSidedLK.Pullback.isEmpty_iff
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{G : Type u_3}
[LogicalConnective G]
{f : G →ˡᶜ F}
{Γ : List G}
:
class
LO.OneSidedLK.ContextualEntailment
{F : Type u_1}
[LogicalConnective F]
(𝔇 : outParam (List F → Type u_3))
(S : Type u_4)
[Entailment S F]
[AdjunctiveSet F S]
:
Type (max (max (max u_1 u_3) u_4) u_5)
An entailment relation which is determined by a context and derivability.
Instances
theorem
LO.OneSidedLK.ContextualEntailment.provable_iff
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
{φ : F}
{𝓢 : S}
:
def
LO.OneSidedLK.ContextualEntailment.toProof
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
{φ : F}
(𝓢 : S)
(d : 𝔇 [φ])
:
Equations
Instances For
def
LO.OneSidedLK.ContextualEntailment.ofAxiom
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
{φ : F}
[OneSidedLK 𝔇]
{𝓢 : S}
(h : φ ∈ 𝓢)
:
Equations
Instances For
def
LO.OneSidedLK.ContextualEntailment.ofAxiomSubset
{F : Type u_1}
[LogicalConnective F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
{φ : F}
{𝓢 𝓤 : S}
:
Equations
- LO.OneSidedLK.ContextualEntailment.ofAxiomSubset b h = match LO.OneSidedLK.ContextualEntailment.equiv b with | ⟨l, d⟩ => LO.OneSidedLK.ContextualEntailment.equiv.symm ⟨⟨↑l, ⋯⟩, d⟩
Instances For
@[implicit_reducible]
instance
LO.OneSidedLK.ContextualEntailment.instAxiomatized
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[OneSidedLK 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.OneSidedLK.ContextualEntailment.instModusPonens
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
(𝓢 : S)
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.OneSidedLK.ContextualEntailment.instStrongCut
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
def
LO.OneSidedLK.ContextualEntailment.instStrongCut.bl
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
{T U : S}
{bs : T ⊢!* AdjunctiveSet.set U}
(l : List F)
(hl : ∀ ψ ∈ l, ψ ∈ U)
(χ : F)
(d : 𝔇 (χ :: ∼l))
:
Equations
Instances For
@[implicit_reducible]
instance
LO.OneSidedLK.ContextualEntailment.instDeductiveExplosion
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
:
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.OneSidedLK.ContextualEntailment.inconsistent_iff
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
{𝓢 : S}
:
@[implicit_reducible]
instance
LO.OneSidedLK.ContextualEntailment.cl
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
(𝓢 : S)
:
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.OneSidedLK.ContextualEntailment.empty_provable_iff_eprovable
{F : Type u_1}
[LogicalConnective F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
{P : Type u_4}
[Entailment P F]
{φ : F}
{𝓟 : P}
[PrincipalEntailment 𝔇 𝓟]
:
theorem
LO.OneSidedLK.ContextualEntailment.iff_context
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
{P : Type u_4}
[Entailment P F]
{φ : F}
{𝓢 : S}
{𝓟 : P}
[PrincipalEntailment 𝔇 𝓟]
:
theorem
LO.OneSidedLK.ContextualEntailment.of_principal_provable
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
{P : Type u_4}
[Entailment P F]
{φ : F}
{𝓟 : P}
[PrincipalEntailment 𝔇 𝓟]
{𝓢 : S}
:
@[reducible, inline]
noncomputable abbrev
LO.OneSidedLK.ContextualEntailment.deduction
{F : Type u_1}
[LogicalConnective F]
[DeMorgan F]
[TildeInvolutive F]
{𝔇 : List F → Type u_2}
{S : Type u_3}
[Entailment S F]
[AdjunctiveSet F S]
[ContextualEntailment 𝔇 S]
[Cut 𝔇]
{P : Type u_4}
[Entailment P F]
(𝓟 : P)
[PrincipalEntailment 𝔇 𝓟]
:
Equations
- One or more equations did not get rendered due to their size.