Hauptsatz of classical first-order logic #
Main reference: Jeremy Avigad, Algebraic proofs of cut elimination [Avi01]
- refl {L : Language} {Ξ : Sequent L} : Ξ ⟶⁺ Ξ
- weakening {L : Language} {Ξ Γ : Sequent L} {φ : Proposition L} : Ξ ⟶⁺ Γ → Ξ ⟶⁺ Γ + ⦃φ⦄
- contraction {L : Language} {Ξ : Sequent L} {Γ : Multiset (Proposition L)} {φ : Proposition L} : Ξ ⟶⁺ Γ + (⦃φ⦄ + ⦃φ⦄) → Ξ ⟶⁺ Γ + ⦃φ⦄
- or {L : Language} {Ξ : Sequent L} {Γ : Multiset (Proposition L)} {φ ψ : Proposition L} : Ξ ⟶⁺ Γ + (⦃φ⦄ + ⦃ψ⦄) → Ξ ⟶⁺ Γ + ⦃φ ⋎ ψ⦄
- exs {L : Language} {Ξ : Sequent L} {Γ : Multiset (Semiproposition L 0)} {φ : Semiproposition L (Nat.succ 0)} {t : Semiterm L ℕ 0} : Ξ ⟶⁺ Γ + ⦃φ/[t]⦄ → Ξ ⟶⁺ Γ + ⦃∃¹ φ⦄
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
FFL.FirstOrder.LK.Derivation.Positive.traversal
{L : Language}
{Ξ : Sequent L}
[L.DecidableEq]
{Γ : Sequent L}
:
Ξ ⟶⁺ Γ → Multiset.Traversal Ξ → Multiset.Traversal Γ
Equations
- FFL.FirstOrder.LK.Derivation.Positive.refl.traversal x✝ = x✝
- d.weakening.traversal x✝ = Multiset.Traversal.succ φ (d.traversal x✝)
- d.contraction.traversal x✝ = (Multiset.Traversal.cast ⋯ (d.traversal x✝)).remove
- d.or.traversal x✝ = Multiset.Traversal.succ (φ ⋎ ψ) (Multiset.Traversal.cast ⋯ (d.traversal x✝)).remove.remove
- d.exs.traversal x✝ = Multiset.Traversal.succ (∃¹ φ) (d.traversal x✝).remove
Instances For
@[instance_reducible]
instance
FFL.FirstOrder.LK.Derivation.Positive.instStructuralProposition
{L : Language}
{Ξ : Sequent L}
:
Structural (Positive Ξ)
Equations
- One or more equations did not get rendered due to their size.
def
FFL.FirstOrder.LK.Derivation.Positive.ofSubset
{L : Language}
{Ξ Γ : Sequent L}
[L.DecidableEq]
(tΞ : Multiset.Traversal Ξ)
(tΓ : Multiset.Traversal Γ)
(ss : Ξ ⊆ Γ)
:
Equations
Instances For
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Positive.addLeft
{L : Language}
{Ξ : Sequent L}
(Δ : Sequent L)
{Γ : Sequent L}
:
Equations
- FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d.or = ((FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d).cast ⋯ ⋯).or.cast ⋯ ⋯
- FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d.exs = ((FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d).cast ⋯ ⋯).exs.cast ⋯ ⋯
- FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d.weakening = (FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d).weakening.cast ⋯ ⋯
- FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d.contraction = ((FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ d).cast ⋯ ⋯).contraction.cast ⋯ ⋯
- FFL.FirstOrder.LK.Derivation.Positive.addLeft Δ FFL.FirstOrder.LK.Derivation.Positive.refl = FFL.FirstOrder.LK.Derivation.Positive.refl
Instances For
def
FFL.FirstOrder.LK.Derivation.Positive.cons
{L : Language}
{Ξ Γ : Sequent L}
(φ : Proposition L)
(d : Ξ ⟶⁺ Γ)
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Positive.add
{L : Language}
{Γ Δ Ξ Θ : Sequent L}
(d : Γ ⟶⁺ Δ)
(b : Ξ ⟶⁺ Θ)
:
Equations
- d.add b = (FFL.FirstOrder.LK.Derivation.Positive.addLeft Γ b).trans ((FFL.FirstOrder.LK.Derivation.Positive.addLeft Θ d).cast ⋯ ⋯)
Instances For
Equations
- FFL.FirstOrder.LK.Derivation.Positive.graft b d.or = (FFL.FirstOrder.LK.Derivation.Positive.graft b d).or
- FFL.FirstOrder.LK.Derivation.Positive.graft b d.exs = (FFL.FirstOrder.LK.Derivation.Positive.graft b d).exs
- FFL.FirstOrder.LK.Derivation.Positive.graft b d.weakening = (FFL.FirstOrder.LK.Derivation.Positive.graft b d).weakening
- FFL.FirstOrder.LK.Derivation.Positive.graft b d.contraction = (FFL.FirstOrder.LK.Derivation.Positive.graft b d).contraction
- FFL.FirstOrder.LK.Derivation.Positive.graft b FFL.FirstOrder.LK.Derivation.Positive.refl = b
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- FFL.FirstOrder.LK.Derivation.Canonical.instMinSequent = { min := fun (p q : FFL.FirstOrder.LK.Sequent L) => p + q }
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.refl
{L : Language}
(p : Sequent L)
:
StrongerThan p p
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.trans
{L : Language}
{r q p : Sequent L}
(srq : StrongerThan r q)
(sqp : StrongerThan q p)
:
StrongerThan r p
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.ofSubset
{L : Language}
[L.DecidableEq]
{q p : Sequent L}
(tp : Multiset.Traversal (∼p))
(tq : Multiset.Traversal (∼q))
(h : q ⊇ p)
:
StrongerThan q p
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.K_left
{L : Language}
{p : Sequent L}
(φ ψ : Proposition L)
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.K_right
{L : Language}
{p : Sequent L}
(φ ψ : Proposition L)
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.all
{L : Language}
{p : Sequent L}
(φ : Semiproposition L 1)
(t : Semiterm L ℕ 0)
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.minLeLeft
{L : Language}
(p q : Sequent L)
(tq : Multiset.Traversal (∼q))
:
StrongerThan (p ⊓ q) p
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.minLeRight
{L : Language}
(p q : Sequent L)
(tp : Multiset.Traversal (∼p))
:
StrongerThan (p ⊓ q) q
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.StrongerThan.leMinRightOfLe
{L : Language}
{p q : Sequent L}
(s : StrongerThan q p)
(tq : Multiset.Traversal (∼q))
:
StrongerThan q (p ⊓ q)
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces
{L : Language}
(p : Sequent L)
:
Propositionᵢ L → Type u
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p FFL.FirstOrder.Semiformulaᵢ.falsum = { b : ⊢ᴸᴷ¹ ∼p // b.IsCutFree }
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p (FFL.FirstOrder.Semiformulaᵢ.rel R v) = { b : ⊢ᴸᴷ¹ ∼p + ⦃FFL.FirstOrder.Semiformula.rel R v⦄ // b.IsCutFree }
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p (FFL.FirstOrder.Semiformulaᵢ.and φ ψ) = (FFL.FirstOrder.LK.Derivation.Canonical.Forces p φ × FFL.FirstOrder.LK.Derivation.Canonical.Forces p ψ)
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p (FFL.FirstOrder.Semiformulaᵢ.or φ ψ) = (FFL.FirstOrder.LK.Derivation.Canonical.Forces p φ ⊕ FFL.FirstOrder.LK.Derivation.Canonical.Forces p ψ)
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p (FFL.FirstOrder.Semiformulaᵢ.all φ) = ((t : FFL.FirstOrder.SyntacticTerm L) → FFL.FirstOrder.LK.Derivation.Canonical.Forces p (φ/[t]))
- FFL.FirstOrder.LK.Derivation.Canonical.Forces p (FFL.FirstOrder.Semiformulaᵢ.exs φ) = ((t : FFL.FirstOrder.SyntacticTerm L) × FFL.FirstOrder.LK.Derivation.Canonical.Forces p (φ/[t]))
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.LK.Derivation.Canonical.allForces
{L : Language}
(φ : Propositionᵢ L)
:
Type u_1
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.andEquiv
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.orEquiv
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.implyEquiv
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.allEquiv
{L : Language}
{p : Sequent L}
{φ : Semipropositionᵢ L (0 + 1)}
:
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.exsEquiv
{L : Language}
{p : Sequent L}
{φ : Semipropositionᵢ L (0 + 1)}
:
Equations
Instances For
@[irreducible]
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.monotone
{L : Language}
{q p : Sequent L}
(s : StrongerThan q p)
{φ : Propositionᵢ L}
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.explosion
{L : Language}
{p : Sequent L}
(b : Forces p ⊥)
(φ : Propositionᵢ L)
:
Forces p φ
Equations
- One or more equations did not get rendered due to their size.
- b.explosion FFL.FirstOrder.Semiformulaᵢ.falsum = b
- b.explosion (FFL.FirstOrder.Semiformulaᵢ.and φ ψ) = FFL.FirstOrder.LK.Derivation.Canonical.Forces.andEquiv.symm (b.explosion φ, b.explosion ψ)
- b.explosion (FFL.FirstOrder.Semiformulaᵢ.or φ ψ) = FFL.FirstOrder.LK.Derivation.Canonical.Forces.orEquiv.symm (Sum.inl (b.explosion φ))
- b.explosion (FFL.FirstOrder.Semiformulaᵢ.all φ) = FFL.FirstOrder.LK.Derivation.Canonical.Forces.allEquiv.symm fun (t : FFL.FirstOrder.SyntacticTerm L) => b.explosion (φ/[t])
- b.explosion (FFL.FirstOrder.Semiformulaᵢ.exs φ) = FFL.FirstOrder.LK.Derivation.Canonical.Forces.exsEquiv.symm ⟨default, b.explosion (φ/[default])⟩
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.implyOf
{L : Language}
[L.DecidableEq]
{p : Sequent L}
{φ ψ : Propositionᵢ L}
(tp : Multiset.Traversal (∼p))
(b : (q : Sequent L) → Multiset.Traversal (∼q) → Forces q φ → Forces (p ⊓ q) ψ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.modusPonens
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
(f : Forces p (φ 🡒 ψ))
(g : Forces p φ)
:
Forces p ψ
Equations
Instances For
@[reducible, inline]
abbrev
FFL.FirstOrder.LK.Derivation.Canonical.Forces.ContextForces
{L : Language}
(p : Sequent L)
(Γ : LJ.Sequent L)
:
Type u_1
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.ContextForces.ofSubset
{L : Language}
{p : Sequent L}
{Γ Δ : LJ.Sequent L}
(b : ContextForces p Δ)
(h : Γ ⊆ Δ)
:
ContextForces p Γ
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.ContextForces.monotone
{L : Language}
{p q : Sequent L}
{Γ : LJ.Sequent L}
(b : ContextForces p Γ)
(s : StrongerThan q p)
:
ContextForces q Γ
Equations
- b.monotone s φ hφ = FFL.FirstOrder.LK.Derivation.Canonical.Forces.monotone s (b φ hφ)
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.ContextForces.cons
{L : Language}
[L.DecidableEq]
{p : Sequent L}
{Γ : LJ.Sequent L}
{φ : Propositionᵢ L}
(b : ContextForces p Γ)
(hφ : Forces p φ)
:
ContextForces p (Γ + ⦃φ⦄)
Extend a forcing assignment by one formula (a routine semantic operation).
Instances For
Equations
Instances For
@[irreducible]
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound
{L : Language}
[L.DecidableEq]
{Γ : LJ.Sequent L}
{Ξ : LJ.Head L}
(d : Γ ⊢ᴸᴶ¹ Ξ)
(p : Sequent L)
(tp : Multiset.Traversal (∼p))
(b : ContextForces p Γ)
:
HeadForces p Ξ
Soundness of LJ for the canonical Type-valued forcing interpretation.
- [Avi01, Section 3]
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound (FFL.FirstOrder.LJ.Derivation.identity R v) p tp b_2 = b_2 (FFL.FirstOrder.Semiformulaᵢ.rel R v) ⋯
- FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound d_2.weakening p tp b_2 = FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound d_2 p tp (b_2.ofSubset ⋯)
- FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound FFL.FirstOrder.LJ.Derivation.falsum p tp b_2 = b_2 ⊥ ⋯
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.ljSound
{L : Language}
[L.DecidableEq]
{φ : Propositionᵢ L}
(d : 𝐋𝐉¹ ⊢! φ)
:
Equations
- FFL.FirstOrder.LK.Derivation.Canonical.Forces.ljSound d p tp = FFL.FirstOrder.LK.Derivation.Canonical.Forces.sound d p tp fun (x : FFL.FirstOrder.Propositionᵢ L) (h : x ∈ 0) => ⋯.elim
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.relRefl
{L : Language}
{k : ℕ}
(R : L.Rel k)
(v : Fin k → SyntacticTerm L)
:
Forces ⦃Semiformula.rel R v⦄ (Semiformulaᵢ.rel R v)
Equations
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.refl.or
{L : Language}
[L.DecidableEq]
{φ ψ : Proposition L}
(ihφ : Forces ⦃φ⦄ (Semiformula.doubleNegation φ))
(ihψ : Forces ⦃ψ⦄ (Semiformula.doubleNegation ψ))
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.refl.exs
{L : Language}
[L.DecidableEq]
{φ : Semiproposition L 1}
(d : (x : ℕ) → Forces ⦃φ/[Semiterm.fvar x]⦄ φ/[Semiterm.fvar x].doubleNegation)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def
FFL.FirstOrder.LK.Derivation.Canonical.Forces.refl
{L : Language}
[L.DecidableEq]
(φ : Proposition L)
:
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LK.Derivation.Canonical.Forces.refl FFL.FirstOrder.Semiformula.falsum = FFL.FirstOrder.LK.Derivation.Canonical.Forces.falsumEquiv.symm ⟨FFL.FirstOrder.LK.Derivation.verum, ⋯⟩