One-sided sequent calculus for first-order classical logic #
@[reducible, inline]
Equations
Instances For
Equations
Instances For
theorem
LO.FirstOrder.Sequent.not_fvar?_newVar
{L : Language}
{φ : Proposition L}
{Γ : Sequent L}
(h : φ ∈ Γ)
:
Equations
Instances For
@[simp]
Derivation for one-sided $\mathbf{LK}$ #
Derivation for one-sided $\mathbf{LK}$
- identity {L : Language} {k : ℕ} (r : L.Rel k) (v : Fin k → Semiterm L ℕ 0) : ⊢ᴸᴷ¹ [Semiformula.rel r v, Semiformula.nrel r v]
- cut {L : Language} {φ : Proposition L} {Γ Δ : List (Proposition L)} : ⊢ᴸᴷ¹ φ :: Γ → ⊢ᴸᴷ¹ ∼φ :: Δ → ⊢ᴸᴷ¹ Γ ++ Δ
- contraction {L : Language} {Δ Γ : Sequent L} : ⊢ᴸᴷ¹ Δ → Δ ⊆ Γ → ⊢ᴸᴷ¹ Γ
- verum {L : Language} : ⊢ᴸᴷ¹ [⊤]
- or {L : Language} {φ ψ : Proposition L} {Γ : List (Proposition L)} : ⊢ᴸᴷ¹ φ :: ψ :: Γ → ⊢ᴸᴷ¹ φ ⋎ ψ :: Γ
- and {L : Language} {φ : Proposition L} {Γ : List (Proposition L)} {ψ : Proposition L} : ⊢ᴸᴷ¹ φ :: Γ → ⊢ᴸᴷ¹ ψ :: Γ → ⊢ᴸᴷ¹ φ ⋏ ψ :: Γ
- all {L : Language} {Γ : List (Semiproposition L 0)} {φ : Semiproposition L (0 + 1)} : ⊢ᴸᴷ¹ Semiformula.free φ :: Rewriting.shifts Γ → ⊢ᴸᴷ¹ (∀⁰ φ) :: Γ
- exs {L : Language} {φ : Semiproposition L (Nat.succ 0)} {t : Semiterm L ℕ 0} {Γ : List (Proposition L)} : ⊢ᴸᴷ¹ φ/[t] :: Γ → ⊢ᴸᴷ¹ (∃⁰ φ) :: Γ
Instances For
Equations
- LO.FirstOrder.«term⊢ᴸᴷ¹_» = Lean.ParserDescr.node `LO.FirstOrder.«term⊢ᴸᴷ¹_» 45 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢ᴸᴷ¹ ") (Lean.ParserDescr.cat `term 45))
Instances For
Equations
- (LO.FirstOrder.Derivation.identity r v).height = 0
- (dp.cut dn).height = max dp.height dn.height + 1
- (d.contraction a).height = d.height + 1
- LO.FirstOrder.Derivation.verum.height = 0
- d.or.height = d.height + 1
- (dp.and dq).height = max dp.height dq.height + 1
- d.all.height = d.height + 1
- d.exs.height = d.height + 1
Instances For
@[simp]
theorem
LO.FirstOrder.Derivation.height_or
{L✝ : Language}
{Δ : List (Proposition L✝)}
{φ ψ : Proposition L✝}
(d : ⊢ᴸᴷ¹ φ :: ψ :: Δ)
:
@[simp]
theorem
LO.FirstOrder.Derivation.height_all
{L : Language}
{Δ : List (Semiproposition L 0)}
{φ : Semiproposition L 1}
(d : ⊢ᴸᴷ¹ Semiformula.free φ :: Rewriting.shifts Δ)
:
def
LO.FirstOrder.Derivation.contra
{L✝ : Language}
{Δ Γ : Sequent L✝}
(d : ⊢ᴸᴷ¹ Δ)
(h : Δ ⊆ Γ := by simp)
:
⊢ᴸᴷ¹ Γ
Equations
- d.contra h = d.contraction h
Instances For
Instances For
def
LO.FirstOrder.Derivation.identity'
{L : Language}
{k : ℕ}
{Δ : Sequent L}
(r : L.Rel k)
(v : Fin k → Semiterm L ℕ 0)
(hpos : Semiformula.rel r v ∈ Δ := by simp)
(hneg : Semiformula.nrel r v ∈ Δ := by simp)
:
⊢ᴸᴷ¹ Δ
Equations
- LO.FirstOrder.Derivation.identity' r v hpos hneg = (LO.FirstOrder.Derivation.identity r v).contraction ⋯
Instances For
def
LO.FirstOrder.Derivation.rotate
{L✝ : Language}
{φ : Proposition L✝}
{Γ : List (Proposition L✝)}
(d : ⊢ᴸᴷ¹ φ :: Γ)
:
Instances For
@[irreducible]
Equations
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.rel R v) = LO.FirstOrder.Derivation.identity' R v ⋯ ⋯
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.nrel R v) = LO.FirstOrder.Derivation.identity' R v ⋯ ⋯
- LO.FirstOrder.Derivation.eta LO.FirstOrder.Semiformula.verum = LO.FirstOrder.Derivation.top ⋯
- LO.FirstOrder.Derivation.eta LO.FirstOrder.Semiformula.falsum = LO.FirstOrder.Derivation.top ⋯
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.and φ ψ) = ((LO.FirstOrder.Derivation.eta φ).tensor (LO.FirstOrder.Derivation.eta ψ)).rotate.or.rotate
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.or φ ψ) = ((LO.FirstOrder.Derivation.eta φ).rotate.tensor (LO.FirstOrder.Derivation.eta ψ).rotate).rotate.or
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.all φ) = (((LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.free φ)).rotate.cast ⋯).exs.rotate.cast ⋯).all
- LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.exs φ) = (((LO.FirstOrder.Derivation.eta (LO.FirstOrder.Semiformula.free φ)).cast ⋯).exs.rotate.cast ⋯).all.rotate
Instances For
def
LO.FirstOrder.Derivation.close
{L : Language}
{Δ : Sequent L}
(φ : Proposition L)
(hp : φ ∈ Δ := by simp)
(hn : ∼φ ∈ Δ := by simp)
:
⊢ᴸᴷ¹ Δ
Equations
- LO.FirstOrder.Derivation.close φ hp hn = (LO.FirstOrder.Derivation.eta φ).contra ⋯
Instances For
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
def
LO.FirstOrder.Derivation.rewrite
{L : Language}
{Γ : Sequent L}
(f : ℕ → SyntacticTerm L)
:
⊢ᴸᴷ¹ Γ → ⊢ᴸᴷ¹ List.map (fun (x : Semiproposition L 0) => (Rewriting.app (Rew.rewrite f)) x) Γ
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.rewrite f (LO.FirstOrder.Derivation.identity r v) = LO.FirstOrder.Derivation.identity r (⇑(LO.FirstOrder.Rew.rewrite f) ∘ v)
- LO.FirstOrder.Derivation.rewrite f (dp.cut dn) = (((LO.FirstOrder.Derivation.rewrite f dp).cast ⋯).cut ((LO.FirstOrder.Derivation.rewrite f dn).cast ⋯)).cast ⋯
- LO.FirstOrder.Derivation.rewrite f (d.contraction a) = (LO.FirstOrder.Derivation.rewrite f d).contraction ⋯
- LO.FirstOrder.Derivation.rewrite f LO.FirstOrder.Derivation.verum = LO.FirstOrder.Derivation.verum
- LO.FirstOrder.Derivation.rewrite f d.or = (LO.FirstOrder.Derivation.rewrite f d).or
- LO.FirstOrder.Derivation.rewrite f (dp.and dq) = (LO.FirstOrder.Derivation.rewrite f dp).and (LO.FirstOrder.Derivation.rewrite f dq)
- LO.FirstOrder.Derivation.rewrite f d.exs = ((LO.FirstOrder.Derivation.rewrite f d).cast ⋯).exs.cast ⋯
Instances For
def
LO.FirstOrder.Derivation.map
{L : Language}
{Δ : Sequent L}
(d : ⊢ᴸᴷ¹ Δ)
(f : ℕ → ℕ)
:
⊢ᴸᴷ¹ List.map (fun (x : Semiproposition L 0) => (Rewriting.app (Rew.rewriteMap f)) x) Δ
Equations
- d.map f = LO.FirstOrder.Derivation.rewrite (fun (x : ℕ) => LO.FirstOrder.Semiterm.fvar (f x)) d
Instances For
theorem
LO.FirstOrder.Derivation.shifts_image
{L₁ : Language}
{L₂ : Language}
(Φ : L₁.Hom L₂)
{Δ : List (Proposition L₁)}
:
Rewriting.shifts (List.map (⇑(Semiformula.lMap Φ)) Δ) = List.map (⇑(Semiformula.lMap Φ)) (Rewriting.shifts Δ)
def
LO.FirstOrder.Derivation.lMap
{L₁ : Language}
{L₂ : Language}
(Φ : L₁.Hom L₂)
{Γ : Sequent L₁}
:
⊢ᴸᴷ¹ Γ → ⊢ᴸᴷ¹ List.map (⇑(Semiformula.lMap Φ)) Γ
Equations
- LO.FirstOrder.Derivation.lMap Φ (LO.FirstOrder.Derivation.identity r v) = (LO.FirstOrder.Derivation.identity (Φ.rel r) fun (i : Fin k) => LO.FirstOrder.Semiterm.lMap Φ (v i)).cast ⋯
- LO.FirstOrder.Derivation.lMap Φ (dp.cut dn) = (((LO.FirstOrder.Derivation.lMap Φ dp).cast ⋯).cut ((LO.FirstOrder.Derivation.lMap Φ dn).cast ⋯)).cast ⋯
- LO.FirstOrder.Derivation.lMap Φ (d.contraction a) = (LO.FirstOrder.Derivation.lMap Φ d).contraction ⋯
- LO.FirstOrder.Derivation.lMap Φ LO.FirstOrder.Derivation.verum = ⋯.mpr LO.FirstOrder.Derivation.verum
- LO.FirstOrder.Derivation.lMap Φ d.or = (LO.FirstOrder.Derivation.lMap Φ d).or.cast ⋯
- LO.FirstOrder.Derivation.lMap Φ (dp.and dq) = (((LO.FirstOrder.Derivation.lMap Φ dp).cast ⋯).and ((LO.FirstOrder.Derivation.lMap Φ dq).cast ⋯)).cast ⋯
- LO.FirstOrder.Derivation.lMap Φ d.all = ((LO.FirstOrder.Derivation.lMap Φ d).cast ⋯).all.cast ⋯
- LO.FirstOrder.Derivation.lMap Φ d.exs = ((LO.FirstOrder.Derivation.lMap Φ d).cast ⋯).exs.cast ⋯
Instances For
def
LO.FirstOrder.Derivation.genelalizeByNewver
{L : Language}
{m : ℕ}
{Δ : List (Proposition L)}
{φ : Semiproposition L 1}
(hp : ¬Semiformula.FVar? φ m)
(hΔ : ∀ ψ ∈ Δ, ¬Semiformula.FVar? ψ m)
(d : ⊢ᴸᴷ¹ φ/[Semiterm.fvar m] :: Δ)
:
Equations
Instances For
def
LO.FirstOrder.Derivation.exOfInstances
{L : Language}
{Γ : List (Proposition L)}
(v : List (SyntacticTerm L))
(φ : Semiproposition L 1)
(h : ⊢ᴸᴷ¹ List.map (fun (x : Semiterm L ℕ 0) => φ/[x]) v ++ Γ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
LO.FirstOrder.Derivation.exOfInstances'
{L : Language}
{Γ : List (Proposition L)}
(v : List (SyntacticTerm L))
(φ : Semiproposition L 1)
(h : ⊢ᴸᴷ¹ (∃⁰ φ) :: List.map (fun (x : Semiterm L ℕ 0) => φ/[x]) v ++ Γ)
:
Equations
Instances For
def
LO.FirstOrder.Derivation.allNvar
{L : Language}
{Δ : Sequent L}
{φ : Semiproposition L (0 + 1)}
(h : ∀⁰ φ ∈ Δ)
:
Equations
Instances For
Classical proof system #
Equations
- LO.FirstOrder.«term𝐋𝐊¹» = Lean.ParserDescr.node `LO.FirstOrder.«term𝐋𝐊¹» 1024 (Lean.ParserDescr.symbol "𝐋𝐊¹")
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implicit_reducible]
instance
LO.FirstOrder.instEntailmentLKProposition
{L : Language}
:
Entailment (LK L) (Proposition L)
Equations
- LO.FirstOrder.instEntailmentLKProposition = { Prf := fun (x : LO.FirstOrder.LK L) => LO.FirstOrder.LK.Proof }
@[implicit_reducible]
Equations
- LO.FirstOrder.LK.Proof.instPrincipalEntailmentPropositionDerivationSymbol = { equiv := fun {φ : LO.FirstOrder.Proposition L} => Equiv.refl (𝐋𝐊¹ ⊢! φ) }
@[implicit_reducible]
theorem
LO.FirstOrder.LK.Proof.allClosure_fixitr
{L : Language}
{φ : Proposition L}
(dp : 𝐋𝐊¹ ⊢ φ)
(m : ℕ)
:
theorem
LO.FirstOrder.LK.Proof.lMap
{L₁ : Language}
{L₂ : Language}
(Φ : L₁.Hom L₂)
{φ : Proposition L₁}
:
𝐋𝐊¹ ⊢ φ → 𝐋𝐊¹ ⊢ (Semiformula.lMap Φ) φ
- derivation : OneSidedLK.Pullback Derivation Rewriting.emb (σ :: ∼self.axioms)
Instances For
@[implicit_reducible]
instance
LO.FirstOrder.Theory.Proof.instEntailmentSentence
{L : Language}
:
Entailment (Theory L) (Sentence L)
Equations
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
LO.FirstOrder.Theory.Proof.instContextualEntailmentSemiformulaEmptyOfNatNatPullbackPropositionDerivationEmbSemiproposition
{L : Language}
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
@[implicit_reducible]
theorem
LO.FirstOrder.Theory.Proof.inconsistent_iff
{L : Language}
{T : Theory L}
:
Entailment.Inconsistent T ↔ ∃ (Γ : List (Sentence L)), (∀ ψ ∈ Γ, ψ ∈ T) ∧ Nonempty (⊢ᴸᴷ¹ ∼Sequent.embed Γ)
@[simp]
theorem
LO.FirstOrder.Theory.Proof.of_LK_provable
{L : Language}
{T : Theory L}
{φ : Sentence L}
:
𝐋𝐊¹ ⊢ Rewriting.emb φ → T ⊢ φ
theorem
LO.FirstOrder.Theory.Proof.specialize
{L : Language}
{T : Theory L}
(φ : Semisentence L 1)
(t : ClosedTerm L)
:
@[implicit_reducible]