Hauptsatz of classical first-order logic #
Main reference: Jeremy Avigad, Algebraic proofs of cut elimination [Avi01]
- or {L : Language} {Ξ : Sequent L} {φ ψ : Proposition L} {Γ : List (Proposition L)} : Ξ ⟶⁺ φ :: ψ :: Γ → Ξ ⟶⁺ φ ⋎ ψ :: Γ
- exs {L : Language} {Ξ : Sequent L} {φ : Semiproposition L (Nat.succ 0)} {t : Semiterm L ℕ 0} {Γ : List (Proposition L)} : Ξ ⟶⁺ φ/[t] :: Γ → Ξ ⟶⁺ (∃¹ φ) :: Γ
- contraction {L : Language} {Ξ Δ Γ : Sequent L} : Ξ ⟶⁺ Δ → Δ ⊆ Γ → Ξ ⟶⁺ Γ
- id {L : Language} {Ξ : Sequent L} : Ξ ⟶⁺ Ξ
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
Equations
- LO.FirstOrder.Derivation.Positive.cons φ d.or = ((LO.FirstOrder.Derivation.Positive.cons φ d).contraction ⋯).or.contraction ⋯
- LO.FirstOrder.Derivation.Positive.cons φ d.exs = ((LO.FirstOrder.Derivation.Positive.cons φ d).contraction ⋯).exs.contraction ⋯
- LO.FirstOrder.Derivation.Positive.cons φ (d.contraction h) = (LO.FirstOrder.Derivation.Positive.cons φ d).contraction ⋯
- LO.FirstOrder.Derivation.Positive.cons φ LO.FirstOrder.Derivation.Positive.id = LO.FirstOrder.Derivation.Positive.id
Instances For
Equations
Instances For
Equations
- d.or.add x✝ = (d.add x✝).or
- d.exs.add x✝ = (d.add x✝).exs
- (d.contraction h).add x✝ = (d.add x✝).contraction ⋯
- LO.FirstOrder.Derivation.Positive.id.add x✝ = LO.FirstOrder.Derivation.Positive.append Γ x✝
Instances For
Equations
- LO.FirstOrder.Derivation.Positive.graft b d.or = (LO.FirstOrder.Derivation.Positive.graft b d).or
- LO.FirstOrder.Derivation.Positive.graft b d.exs = (LO.FirstOrder.Derivation.Positive.graft b d).exs
- LO.FirstOrder.Derivation.Positive.graft b (d.contraction h) = (LO.FirstOrder.Derivation.Positive.graft b d).contraction h
- LO.FirstOrder.Derivation.Positive.graft b LO.FirstOrder.Derivation.Positive.id = b
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implicit_reducible]
Equations
- LO.FirstOrder.Derivation.Canonical.instMinSequent = { min := fun (p q : LO.FirstOrder.Sequent L) => p ++ q }
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.refl
{L : Language}
(p : Sequent L)
:
StrongerThan p p
Equations
Instances For
def
LO.FirstOrder.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
LO.FirstOrder.Derivation.Canonical.StrongerThan.ofSubset
{L : Language}
{q p : Sequent L}
(h : q ⊇ p)
:
StrongerThan q p
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.and
{L : Language}
{p : Sequent L}
(φ ψ : Proposition L)
:
StrongerThan (φ ⋏ ψ :: p) (φ :: ψ :: p)
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.K_left
{L : Language}
{p : Sequent L}
(φ ψ : Proposition L)
:
StrongerThan (φ ⋏ ψ :: p) (φ :: p)
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.K_right
{L : Language}
{p : Sequent L}
(φ ψ : Proposition L)
:
StrongerThan (φ ⋏ ψ :: p) (ψ :: p)
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.all
{L : Language}
{p : Sequent L}
(φ : Semiproposition L 1)
(t : Semiterm L ℕ 0)
:
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.minLeLeft
{L : Language}
(p q : Sequent L)
:
StrongerThan (p ⊓ q) p
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.minLeRight
{L : Language}
(p q : Sequent L)
:
StrongerThan (p ⊓ q) q
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.leMinOfle
{L✝ : Language}
{r p q : Sequent L✝}
(srp : StrongerThan r p)
(srq : StrongerThan r q)
:
StrongerThan r (p ⊓ q)
Instances For
def
LO.FirstOrder.Derivation.Canonical.StrongerThan.leMinRightOfLe
{L✝ : Language}
{q p : Sequent L✝}
(s : StrongerThan q p)
:
StrongerThan q (p ⊓ q)
Equations
Instances For
@[irreducible]
def
LO.FirstOrder.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.
- LO.FirstOrder.Derivation.Canonical.Forces p LO.FirstOrder.Semiformulaᵢ.falsum = { b : ⊢ᴸᴷ¹ ∼p // b.IsCutFree }
- LO.FirstOrder.Derivation.Canonical.Forces p (LO.FirstOrder.Semiformulaᵢ.rel R v) = { b : ⊢ᴸᴷ¹ LO.FirstOrder.Semiformula.rel R v :: ∼p // b.IsCutFree }
- LO.FirstOrder.Derivation.Canonical.Forces p (LO.FirstOrder.Semiformulaᵢ.and φ ψ) = (LO.FirstOrder.Derivation.Canonical.Forces p φ × LO.FirstOrder.Derivation.Canonical.Forces p ψ)
- LO.FirstOrder.Derivation.Canonical.Forces p (LO.FirstOrder.Semiformulaᵢ.or φ ψ) = (LO.FirstOrder.Derivation.Canonical.Forces p φ ⊕ LO.FirstOrder.Derivation.Canonical.Forces p ψ)
- LO.FirstOrder.Derivation.Canonical.Forces p (LO.FirstOrder.Semiformulaᵢ.all φ) = ((t : LO.FirstOrder.SyntacticTerm L) → LO.FirstOrder.Derivation.Canonical.Forces p (φ/[t]))
- LO.FirstOrder.Derivation.Canonical.Forces p (LO.FirstOrder.Semiformulaᵢ.exs φ) = ((t : LO.FirstOrder.SyntacticTerm L) × LO.FirstOrder.Derivation.Canonical.Forces p (φ/[t]))
Instances For
@[reducible, inline]
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
LO.FirstOrder.Derivation.Canonical.Forces.andEquiv
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
:
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.orEquiv
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
:
Equations
Instances For
def
LO.FirstOrder.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
LO.FirstOrder.Derivation.Canonical.Forces.allEquiv
{L : Language}
{p : Sequent L}
{φ : Semipropositionᵢ L (0 + 1)}
:
Equations
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.exsEquiv
{L : Language}
{p : Sequent L}
{φ : Semipropositionᵢ L (0 + 1)}
:
Equations
Instances For
@[irreducible]
def
LO.FirstOrder.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
LO.FirstOrder.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 LO.FirstOrder.Semiformulaᵢ.falsum = b
- b.explosion (LO.FirstOrder.Semiformulaᵢ.and φ ψ) = LO.FirstOrder.Derivation.Canonical.Forces.andEquiv.symm (b.explosion φ, b.explosion ψ)
- b.explosion (LO.FirstOrder.Semiformulaᵢ.or φ ψ) = LO.FirstOrder.Derivation.Canonical.Forces.orEquiv.symm (Sum.inl (b.explosion φ))
- b.explosion (LO.FirstOrder.Semiformulaᵢ.all φ) = LO.FirstOrder.Derivation.Canonical.Forces.allEquiv.symm fun (t : LO.FirstOrder.SyntacticTerm L) => b.explosion (φ/[t])
- b.explosion (LO.FirstOrder.Semiformulaᵢ.exs φ) = LO.FirstOrder.Derivation.Canonical.Forces.exsEquiv.symm ⟨default, b.explosion (φ/[default])⟩
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.implyOf
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
(b : (q : Sequent L) → Forces q φ → Forces (p ⊓ q) ψ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.modusPonens
{L : Language}
{p : Sequent L}
{φ ψ : Propositionᵢ L}
(f : Forces p (φ 🡒 ψ))
(g : Forces p φ)
:
Forces p ψ
Equations
Instances For
@[irreducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
LO.FirstOrder.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
LO.FirstOrder.Derivation.Canonical.Forces.refl.or
{L✝ : Language}
{φ ψ : 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
LO.FirstOrder.Derivation.Canonical.Forces.refl.exs
{L✝ : Language}
{φ : Semiproposition L✝ (Nat.succ 0)}
(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]
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.Canonical.Forces.refl LO.FirstOrder.Semiformula.falsum = LO.FirstOrder.Derivation.Canonical.Forces.falsumEquiv.symm ⟨LO.FirstOrder.Derivation.verum, ⋯⟩
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.conj
{L : Language}
{p : Sequent L}
{Γ : Sequentᵢ L}
(b : (φ : Propositionᵢ L) → φ ∈ Γ → Forces p φ)
:
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.Canonical.Forces.conj b = b φ ⋯
Instances For
def
LO.FirstOrder.Derivation.Canonical.Forces.conj'
{L : Language}
{p Γ : Sequent L}
(b : (φ : Proposition L) → φ ∈ Γ → Forces p (Semiformula.doubleNegation φ))
:
Forces p (⋀Γ.doubleNegation)
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.Canonical.Forces.conj' b = b φ ⋯