First-order $\mathbf{LJ}$ #
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
- FFL.FirstOrder.LJ.Head.rewrite f Ξ = Option.map (fun (x : FFL.FirstOrder.Semipropositionᵢ L 0) => (FFL.FirstOrder.Rewriting.app (FFL.FirstOrder.Rew.rewrite f)) x) Ξ
Instances For
- identity
{L : Language}
{k : ℕ}
(R : L.Rel k)
(v : Fin k → Semiterm L ℕ 0)
: ⦃Semiformulaᵢ.rel R v⦄ ⊢ᴸᴶ¹ some (Semiformulaᵢ.rel R v)
Identity rule
- cut
{L : Language}
{φ : Propositionᵢ L}
{Γ Δ : Sequent L}
{Ξ : Head L}
: Γ ⊢ᴸᴶ¹ some φ → Δ + ⦃φ⦄ ⊢ᴸᴶ¹ Ξ → Γ + Δ ⊢ᴸᴶ¹ Ξ
Cut rule
- contraction
{L : Language}
{Γ : Multiset (Propositionᵢ L)}
{φ : Propositionᵢ L}
{Ξ : Head L}
: Γ + (⦃φ⦄ + ⦃φ⦄) ⊢ᴸᴶ¹ Ξ → Γ + ⦃φ⦄ ⊢ᴸᴶ¹ Ξ
Left contraction
- weakening
{L : Language}
{Γ : Sequent L}
{Ξ : Head L}
{φ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ Ξ → Γ + ⦃φ⦄ ⊢ᴸᴶ¹ Ξ
Left weakening
- weakeningRight
{L : Language}
{Γ : Sequent L}
{φ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ none → Γ ⊢ᴸᴶ¹ some φ
Right weakening
- verum
{L : Language}
: 0 ⊢ᴸᴶ¹ some ⊤
Positive introduction of verum
- falsum
{L : Language}
: ⦃⊥⦄ ⊢ᴸᴶ¹ none
Negative introduction of falsum
- positiveImply
{L : Language}
{Γ : Sequent L}
{φ ψ : Propositionᵢ L}
: Γ + ⦃φ⦄ ⊢ᴸᴶ¹ some ψ → Γ ⊢ᴸᴶ¹ some (φ 🡒 ψ)
Positive introduction of implication
- negativeImply
{L : Language}
{Γ Δ : Sequent L}
{Ξ : Head L}
{φ ψ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ some φ → Δ + ⦃ψ⦄ ⊢ᴸᴶ¹ Ξ → Γ + Δ + ⦃φ 🡒 ψ⦄ ⊢ᴸᴶ¹ Ξ
Negative introduction of implication
- positiveAnd
{L : Language}
{Γ : Sequent L}
{φ ψ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ some φ → Γ ⊢ᴸᴶ¹ some ψ → Γ ⊢ᴸᴶ¹ some (φ ⋏ ψ)
Positive introduction of conjunction
- negativeAnd
{L : Language}
{Γ : Sequent L}
{Ξ : Head L}
{φ ψ : Propositionᵢ L}
: Γ + (⦃φ⦄ + ⦃ψ⦄) ⊢ᴸᴶ¹ Ξ → Γ + ⦃φ ⋏ ψ⦄ ⊢ᴸᴶ¹ Ξ
Negative introduction of conjunction
- positiveOrLeft
{L : Language}
{Γ : Sequent L}
{φ ψ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ some φ → Γ ⊢ᴸᴶ¹ some (φ ⋎ ψ)
Positive introduction of disjunction (left)
- positiveOrRight
{L : Language}
{Γ : Sequent L}
{φ ψ : Propositionᵢ L}
: Γ ⊢ᴸᴶ¹ some ψ → Γ ⊢ᴸᴶ¹ some (φ ⋎ ψ)
Positive introduction of disjunction (right)
- negativeOr
{L : Language}
{Γ : Multiset (Propositionᵢ L)}
{φ : Propositionᵢ L}
{Ξ : Head L}
{ψ : Propositionᵢ L}
: Γ + ⦃φ⦄ ⊢ᴸᴶ¹ Ξ → Γ + ⦃ψ⦄ ⊢ᴸᴶ¹ Ξ → Γ + ⦃φ ⋎ ψ⦄ ⊢ᴸᴶ¹ Ξ
Negative introduction of disjunction
- positiveForall
{L : Language}
{Γ : Multiset (Semipropositionᵢ L 0)}
{φ : Semipropositionᵢ L 1}
: Rewriting.shifts Γ ⊢ᴸᴶ¹ some (Rewriting.free φ) → Γ ⊢ᴸᴶ¹ some (∀¹ φ)
Positive introduction of universal quantifier
- negativeForall
{L : Language}
{Γ : Sequent L}
{Ξ : Head L}
{φ : Semipropositionᵢ L 1}
{t : Term L ℕ}
: Γ + ⦃φ/[t]⦄ ⊢ᴸᴶ¹ Ξ → Γ + ⦃∀¹ φ⦄ ⊢ᴸᴶ¹ Ξ
Negative introduction of universal quantifier
- positiveExists
{L : Language}
{Γ : Sequent L}
{φ : Semipropositionᵢ L 1}
{t : Term L ℕ}
: Γ ⊢ᴸᴶ¹ some (φ/[t]) → Γ ⊢ᴸᴶ¹ some (∃¹ φ)
Positive introduction of existential quantifier
- negativeExists
{L : Language}
{Γ : Multiset (Semipropositionᵢ L 0)}
{Ξ : Head L}
{φ : Semipropositionᵢ L 1}
: Rewriting.shifts Γ + ⦃Rewriting.free φ⦄ ⊢ᴸᴶ¹ Ξ.shift → Γ + ⦃∃¹ φ⦄ ⊢ᴸᴶ¹ Ξ
Negative introduction of existential quantifier
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.
Equations
- One or more equations did not get rendered due to their size.
- (FFL.FirstOrder.LJ.Derivation.identity R v).traversal = Multiset.Traversal.atom (FFL.FirstOrder.Semiformulaᵢ.rel R v)
- (d.cut e).traversal = d.traversal.add e.traversal.remove
- d.contraction.traversal = (Multiset.Traversal.cast ⋯ d.traversal).remove
- d.weakening.traversal = Multiset.Traversal.succ φ d.traversal
- d.weakeningRight.traversal = d.traversal
- FFL.FirstOrder.LJ.Derivation.verum.traversal = Multiset.Traversal.zero
- FFL.FirstOrder.LJ.Derivation.falsum.traversal = Multiset.Traversal.atom ⊥
- d.positiveImply.traversal = d.traversal.remove
- (d.negativeImply e).traversal = Multiset.Traversal.succ (φ 🡒 ψ) (d.traversal.add e.traversal.remove)
- (d.positiveAnd a).traversal = d.traversal
- d.negativeAnd.traversal = Multiset.Traversal.succ (φ ⋏ ψ) (Multiset.Traversal.cast ⋯ d.traversal).remove.remove
- d.positiveOrLeft.traversal = d.traversal
- d.positiveOrRight.traversal = d.traversal
- (d.negativeOr a).traversal = Multiset.Traversal.succ (φ ⋎ ψ) d.traversal.remove
- d.negativeForall.traversal = Multiset.Traversal.succ (∀¹ φ) d.traversal.remove
- d.positiveExists.traversal = d.traversal
Instances For
Equations
- d.contra t h = FFL.Structural.ofSubset d.traversal t d h
Instances For
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LJ.Derivation.eta (FFL.FirstOrder.Semiformulaᵢ.rel R v) = FFL.FirstOrder.LJ.Derivation.identity R v
- FFL.FirstOrder.LJ.Derivation.eta FFL.FirstOrder.Semiformulaᵢ.falsum = FFL.FirstOrder.LJ.Derivation.falsum.weakeningRight
- FFL.FirstOrder.LJ.Derivation.eta (FFL.FirstOrder.Semiformulaᵢ.all φ) = (((FFL.FirstOrder.LJ.Derivation.eta (FFL.FirstOrder.Rewriting.free φ)).cast ⋯ ⋯).negativeForall.cast ⋯ ⋯).positiveForall
- FFL.FirstOrder.LJ.Derivation.eta (FFL.FirstOrder.Semiformulaᵢ.exs φ) = (((FFL.FirstOrder.LJ.Derivation.eta (FFL.FirstOrder.Rewriting.free φ)).cast ⋯ ⋯).positiveExists.cast ⋯ ⋯).negativeExists
Instances For
Equations
Instances For
Equations
Instances For
Equations
- d.negativeNeg = (d.negativeImply (FFL.FirstOrder.LJ.Derivation.falsum.cast ⋯ ⋯)).cast ⋯ ⋯
Instances For
Equations
- di.modusPonens dφ = (FFL.Structural.contractMany di.traversal ((di.cut ((dφ.negativeImply ((FFL.FirstOrder.LJ.Derivation.eta ψ).cast ⋯ ⋯)).cast ⋯ ⋯)).cast ⋯ ⋯)).cast ⋯ ⋯
Instances For
Equations
- dn.negElim dφ = dn.modusPonens dφ
Instances For
Equations
- d.andLeft = d.cutOne (((FFL.FirstOrder.LJ.Derivation.eta φ).weakening.cast ⋯ ⋯).negativeAnd.cast ⋯ ⋯)
Instances For
Equations
- d.andRight = d.cutOne (((FFL.FirstOrder.LJ.Derivation.eta ψ).weakening.cast ⋯ ⋯).negativeAnd.cast ⋯ ⋯)
Instances For
Equations
- d.specialize t = d.cutOne (((FFL.FirstOrder.LJ.Derivation.eta (φ/[t])).cast ⋯ ⋯).negativeForall.cast ⋯ ⋯)
Instances For
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LJ.Derivation.rewrite f (FFL.FirstOrder.LJ.Derivation.identity R v) = FFL.FirstOrder.LJ.Derivation.identity R (⇑(FFL.FirstOrder.Rew.rewrite f) ∘ v)
- FFL.FirstOrder.LJ.Derivation.rewrite f (d.cut e) = (((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).cut ((FFL.FirstOrder.LJ.Derivation.rewrite f e).cast ⋯ ⋯)).cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f d.contraction = ((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).contraction.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f d.weakening = (FFL.FirstOrder.LJ.Derivation.rewrite f d).weakening.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f d.weakeningRight = (FFL.FirstOrder.LJ.Derivation.rewrite f d).weakeningRight.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f FFL.FirstOrder.LJ.Derivation.verum = FFL.FirstOrder.LJ.Derivation.verum
- FFL.FirstOrder.LJ.Derivation.rewrite f FFL.FirstOrder.LJ.Derivation.falsum = FFL.FirstOrder.LJ.Derivation.falsum
- FFL.FirstOrder.LJ.Derivation.rewrite f d.positiveImply = ((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).positiveImply.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f (d.positiveAnd a) = (FFL.FirstOrder.LJ.Derivation.rewrite f d).positiveAnd (FFL.FirstOrder.LJ.Derivation.rewrite f a)
- FFL.FirstOrder.LJ.Derivation.rewrite f d.negativeAnd = ((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).negativeAnd.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f d.positiveOrLeft = (FFL.FirstOrder.LJ.Derivation.rewrite f d).positiveOrLeft
- FFL.FirstOrder.LJ.Derivation.rewrite f d.positiveOrRight = (FFL.FirstOrder.LJ.Derivation.rewrite f d).positiveOrRight
- FFL.FirstOrder.LJ.Derivation.rewrite f d.negativeForall = ((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).negativeForall.cast ⋯ ⋯
- FFL.FirstOrder.LJ.Derivation.rewrite f d.positiveExists = ((FFL.FirstOrder.LJ.Derivation.rewrite f d).cast ⋯ ⋯).positiveExists.cast ⋯ ⋯
Instances For
Height of an LJ derivation, with initial rules at height zero (standard definition).
Equations
- (FFL.FirstOrder.LJ.Derivation.identity R v).height = 0
- (d.cut e).height = max d.height e.height + 1
- d.contraction.height = d.height + 1
- d.weakening.height = d.height + 1
- d.weakeningRight.height = d.height + 1
- FFL.FirstOrder.LJ.Derivation.verum.height = 0
- FFL.FirstOrder.LJ.Derivation.falsum.height = 0
- d.positiveImply.height = d.height + 1
- (d.negativeImply e).height = max d.height e.height + 1
- (d.positiveAnd a).height = max d.height a.height + 1
- d.negativeAnd.height = d.height + 1
- d.positiveOrLeft.height = d.height + 1
- d.positiveOrRight.height = d.height + 1
- (d.negativeOr a).height = max d.height a.height + 1
- d.positiveForall.height = d.height + 1
- d.negativeForall.height = d.height + 1
- d.positiveExists.height = d.height + 1
- d.negativeExists.height = d.height + 1
Instances For
Equations
- d.map f = FFL.FirstOrder.LJ.Derivation.rewrite (fun (x : ℕ) => FFL.FirstOrder.Semiterm.fvar (f x)) d
Instances For
Equations
Instances For
Contraposition for singleton derivations (standard intuitionistic reasoning).
Equations
- d.contrapose = (d.negativeNeg.weakeningRight.cast ⋯ ⋯).positiveNeg
Instances For
Double negation preserves derivability, by twice applying contraposition (folklore).
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
- FFL.FirstOrder.LJ.Derivation.dneOfNegative x_2 = ((FFL.FirstOrder.LJ.Derivation.eta ⊥).cast ⋯ ⋯).positiveNeg.negativeNeg.weakeningRight.cast ⋯ ⋯
Instances For
Equations
Instances For
Equations
Instances For
Instances For
Instances For
Equations
- d.neg = (d.2.contrapose, d.1.contrapose)
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
Equations
Instances For
Equations
Instances For
Equations
- FFL.FirstOrder.«term𝐋𝐉¹» = Lean.ParserDescr.node `FFL.FirstOrder.«term𝐋𝐉¹» 1024 (Lean.ParserDescr.symbol "𝐋𝐉¹")
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- FFL.FirstOrder.instEntailmentLJPropositionᵢ = { Prf := fun (x : FFL.FirstOrder.LJ L) => FFL.FirstOrder.LJ.Proof }
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
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.