instance of inference rule
- antecedents : List (LO.Modal.Formula α)
- antecedents_nonempty : self.antecedents ≠ []
Empty antecedent rule can be simply regarded as axiom rule. However, union of all these rules including to
Hilbert.rules
would be too complex for implementation and induction, so more than one antecedent is required. - consequence : LO.Modal.Formula α
theorem
LO.Modal.InferenceRule.antecedents_nonempty
{α : Type u_2}
(self : LO.Modal.InferenceRule α)
:
self.antecedents ≠ []
Empty antecedent rule can be simply regarded as axiom rule.
However, union of all these rules including to Hilbert.rules
would be too complex for implementation and induction,
so more than one antecedent is required.
@[reducible, inline]
Equations
@[reducible, inline]
Equations
- ⟮Nec⟯ = {x : LO.Modal.InferenceRule α | ∃ (p : LO.Modal.Formula α), { antecedents := [p], antecedents_nonempty := ⋯, consequence := □p } = x}
Equations
- LO.Modal.«term⟮Nec⟯» = Lean.ParserDescr.node `LO.Modal.term⟮Nec⟯ 1024 (Lean.ParserDescr.symbol "⟮Nec⟯")
@[reducible, inline]
Equations
- ⟮Loeb⟯ = {x : LO.Modal.InferenceRule α | ∃ (p : LO.Modal.Formula α), { antecedents := [□p ➝ p], antecedents_nonempty := ⋯, consequence := p } = x}
Equations
- LO.Modal.«term⟮Loeb⟯» = Lean.ParserDescr.node `LO.Modal.term⟮Loeb⟯ 1024 (Lean.ParserDescr.symbol "⟮Loeb⟯")
@[reducible, inline]
Equations
- ⟮Henkin⟯ = {x : LO.Modal.InferenceRule α | ∃ (p : LO.Modal.Formula α), { antecedents := [□p ⭤ p], antecedents_nonempty := ⋯, consequence := p } = x}
Equations
- LO.Modal.«term⟮Henkin⟯» = Lean.ParserDescr.node `LO.Modal.term⟮Henkin⟯ 1024 (Lean.ParserDescr.symbol "⟮Henkin⟯")
- axioms : LO.Modal.Theory α
- rules : LO.Modal.InferenceRules α
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.
- maxm: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → {p : LO.Modal.Formula α} → p ∈ Ax(Λ) → LO.Modal.Deduction Λ p
- rule: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → {rl : LO.Modal.InferenceRule α} → rl ∈ Rl(Λ) → ({p : LO.Modal.Formula α} → p ∈ rl.antecedents → LO.Modal.Deduction Λ p) → LO.Modal.Deduction Λ rl.consequence
- mdp: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → {p q : LO.Modal.Formula α} → LO.Modal.Deduction Λ (p ➝ q) → LO.Modal.Deduction Λ p → LO.Modal.Deduction Λ q
- imply₁: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → (p q : LO.Modal.Formula α) → LO.Modal.Deduction Λ (LO.Axioms.Imply₁ p q)
- imply₂: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → (p q r : LO.Modal.Formula α) → LO.Modal.Deduction Λ (LO.Axioms.Imply₂ p q r)
- ec: {α : Type u_1} → {Λ : LO.Modal.Hilbert α} → (p q : LO.Modal.Formula α) → LO.Modal.Deduction Λ (LO.Axioms.ElimContra p q)
Equations
- LO.Modal.Deduction.instSystemFormulaHilbert = { Prf := LO.Modal.Deduction }
Equations
- LO.Modal.Deduction.instLukasiewiczHilbertFormula = LO.System.Lukasiewicz.mk
Equations
- LO.Modal.Deduction.instClassicalHilbertFormula = LO.System.Classical.mk
instance
LO.Modal.Deduction.instHasDiaDualityHilbertFormula
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
:
Equations
- LO.Modal.Deduction.instHasDiaDualityHilbertFormula = inferInstance
theorem
LO.Modal.Deduction.maxm!
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
{p : LO.Modal.Formula α}
(h : p ∈ Ax(Λ))
:
Λ ⊢! p
theorem
LO.Modal.Hilbert.HasNecessitation.has_necessitation
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[self : Λ.HasNecessitation]
:
instance
LO.Modal.Hilbert.instNecessitationFormulaOfHasNecessitation :
{α : Type u_2} → {Λ : LO.Modal.Hilbert α} → [inst : Λ.HasNecessitation] → LO.System.Necessitation Λ
Equations
- One or more equations did not get rendered due to their size.
Instances
theorem
LO.Modal.Hilbert.HasLoebRule.has_loeb
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[self : Λ.HasLoebRule]
:
instance
LO.Modal.Hilbert.instLoebRuleFormulaOfHasLoebRule :
{α : Type u_2} → {Λ : LO.Modal.Hilbert α} → [inst : Λ.HasLoebRule] → LO.System.LoebRule Λ
Equations
- One or more equations did not get rendered due to their size.
Instances
theorem
LO.Modal.Hilbert.HasHenkinRule.has_henkin
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[self : Λ.HasHenkinRule]
:
instance
LO.Modal.Hilbert.instHenkinRuleFormulaOfHasHenkinRule :
{α : Type u_2} → {Λ : LO.Modal.Hilbert α} → [inst : Λ.HasHenkinRule] → LO.System.HenkinRule Λ
Equations
- One or more equations did not get rendered due to their size.
Instances
theorem
LO.Modal.Hilbert.HasNecOnly.has_necessitation_only
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[self : Λ.HasNecOnly]
:
instance
LO.Modal.Hilbert.instHasNecessitationOfHasNecOnly :
{α : Type u_2} → {Λ : LO.Modal.Hilbert α} → [h : Λ.HasNecOnly] → Λ.HasNecessitation
Equations
- LO.Modal.Hilbert.instHasNecessitationOfHasNecOnly = { has_necessitation := ⋯ }
theorem
LO.Modal.Hilbert.HasAxiomK.has_axiomK
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[self : Λ.HasAxiomK]
:
instance
LO.Modal.Hilbert.instHasAxiomKFormulaOfHasAxiomK :
{α : Type u_2} → {Λ : LO.Modal.Hilbert α} → [inst : Λ.HasAxiomK] → LO.System.HasAxiomK Λ
Equations
- LO.Modal.Hilbert.instHasAxiomKFormulaOfHasAxiomK = { K := fun (x x_1 : LO.Modal.Formula α) => LO.Modal.Deduction.maxm ⋯ }
class
LO.Modal.Hilbert.IsNormal
{α : Type u_1}
(Λ : LO.Modal.Hilbert α)
extends
LO.Modal.Hilbert.HasNecOnly
,
LO.Modal.Hilbert.HasAxiomK
:
noncomputable def
LO.Modal.Deduction.inducition!
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
{motive : (p : LO.Modal.Formula α) → Λ ⊢! p → Sort u_2}
(hRules : (r : LO.Modal.InferenceRule α) →
(hr : r ∈ Rl(Λ)) →
(hant : ∀ {p : LO.Modal.Formula α}, p ∈ r.antecedents → Λ ⊢! p) →
({p : LO.Modal.Formula α} → (hp : p ∈ r.antecedents) → motive p ⋯) → motive r.consequence ⋯)
(hMaxm : {p : LO.Modal.Formula α} → (h : p ∈ Ax(Λ)) → motive p ⋯)
(hMdp : {p q : LO.Modal.Formula α} → {hpq : Λ ⊢! p ➝ q} → {hp : Λ ⊢! p} → motive (p ➝ q) hpq → motive p hp → motive q ⋯)
(hImply₁ : {p q : LO.Modal.Formula α} → motive (p ➝ q ➝ p) ⋯)
(hImply₂ : {p q r : LO.Modal.Formula α} → motive ((p ➝ q ➝ r) ➝ (p ➝ q) ➝ p ➝ r) ⋯)
(hElimContra : {p q : LO.Modal.Formula α} → motive (LO.Axioms.ElimContra p q) ⋯)
{p : LO.Modal.Formula α}
(d : Λ ⊢! p)
:
motive p d
Equations
- One or more equations did not get rendered due to their size.
noncomputable def
LO.Modal.Deduction.inducition_with_necOnly!
{α : Type u_1}
{Λ : LO.Modal.Hilbert α}
[Λ.HasNecOnly]
{motive : (p : LO.Modal.Formula α) → Λ ⊢! p → Prop}
(hMaxm : ∀ {p : LO.Modal.Formula α} (h : p ∈ Ax(Λ)), motive p ⋯)
(hMdp : ∀ {p q : LO.Modal.Formula α} {hpq : Λ ⊢! p ➝ q} {hp : Λ ⊢! p}, motive (p ➝ q) hpq → motive p hp → motive q ⋯)
(hNec : ∀ {p : LO.Modal.Formula α} {hp : Λ ⊢! p}, motive p hp → motive (□p) ⋯)
(hImply₁ : ∀ {p q : LO.Modal.Formula α}, motive (p ➝ q ➝ p) ⋯)
(hImply₂ : ∀ {p q r : LO.Modal.Formula α}, motive ((p ➝ q ➝ r) ➝ (p ➝ q) ➝ p ➝ r) ⋯)
(hElimContra : ∀ {p q : LO.Modal.Formula α}, motive (LO.Axioms.ElimContra p q) ⋯)
{p : LO.Modal.Formula α}
(d : Λ ⊢! p)
:
motive p d
Useful induction for normal modal logic.
Equations
- ⋯ = ⋯
@[reducible, inline]
Equations
- Λ.theorems = LO.System.theory Λ
@[reducible, inline]
Instances For
- LO.Modal.IsGeach.instIsGeachKNilGeachTaple
- LO.Modal.Kripke.K_complete
- LO.Modal.Kripke.K_consistent
- LO.Modal.Kripke.K_finite_complete
- LO.Modal.Kripke.K_sound
- LO.Modal.Kripke.instFiniteFramePropertyKAllFrameClass
- LO.Modal.Kripke.instSoundHilbertFormulaDepKAltToFiniteFrameClassAllFrameClass
- LO.Modal.instIsNormalK
Equations
- LO.Modal.«term𝐊» = Lean.ParserDescr.node `LO.Modal.term𝐊 1024 (Lean.ParserDescr.symbol "𝐊")
Equations
- LO.Modal.instIsNormalK = LO.Modal.Hilbert.IsNormal.mk
@[reducible, inline]
Equations
- LO.Modal.instIsNormalNormal = LO.Modal.Hilbert.IsNormal.mk
Equations
- LO.Modal.«term𝝂_» = Lean.ParserDescr.node `LO.Modal.term𝝂_ 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "𝝂") (Lean.ParserDescr.cat `term 1024))
theorem
LO.Modal.Normal.maxm!
{α : Type u_1}
{Ax : LO.Modal.Theory α}
{p : LO.Modal.Formula α}
(h : p ∈ Ax)
:
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝐓» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐓 1024 (Lean.ParserDescr.symbol "𝐊𝐓")
Equations
- LO.Modal.«term𝐊𝐁» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐁 1024 (Lean.ParserDescr.symbol "𝐊𝐁")
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝐃» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐃 1024 (Lean.ParserDescr.symbol "𝐊𝐃")
Equations
- LO.Modal.instKDHilbertFormulaKD = LO.System.KD.mk
@[reducible, inline]
Instances For
Equations
- LO.Modal.«term𝐊𝐃(⊥)» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐃(⊥) 1024 (Lean.ParserDescr.symbol "𝐊𝐃(⊥)")
Equations
- LO.Modal.instHasAxiomD₂HilbertFormulaKD₂ = { D₂ := LO.Modal.Deduction.maxm ⋯ }
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝐓𝐁» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐓𝐁 1024 (Lean.ParserDescr.symbol "𝐊𝐓𝐁")
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝟒» = Lean.ParserDescr.node `LO.Modal.term𝐊𝟒 1024 (Lean.ParserDescr.symbol "𝐊𝟒")
Equations
- LO.Modal.instK4HilbertFormulaK4 = LO.System.K4.mk
Equations
- LO.Modal.«term𝐊𝟓» = Lean.ParserDescr.node `LO.Modal.term𝐊𝟓 1024 (Lean.ParserDescr.symbol "𝐊𝟓")
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝐓𝟒𝐁» = Lean.ParserDescr.node `LO.Modal.term𝐊𝐓𝟒𝐁 1024 (Lean.ParserDescr.symbol "𝐊𝐓𝟒𝐁")
@[reducible, inline]
Instances For
- LO.Modal.IsGeach.instIsGeachS4ConsGeachTapleMkOfNatNatNil
- LO.Modal.Kripke.S4_complete
- LO.Modal.Kripke.S4_finite_complete
- LO.Modal.Kripke.S4_sound
- LO.Modal.Kripke.instFiniteFramePropertyS4PreorderFrameClass
- LO.Modal.instBoxdotPropertyS4K4
- LO.Modal.instModalCompanionIntuitionisticS4
- LO.Modal.instS4HilbertFormulaS4
Equations
- LO.Modal.«term𝐒𝟒» = Lean.ParserDescr.node `LO.Modal.term𝐒𝟒 1024 (Lean.ParserDescr.symbol "𝐒𝟒")
Equations
- LO.Modal.instS4HilbertFormulaS4 = LO.System.S4.mk
@[reducible, inline]
Equations
- LO.Modal.«term𝐒𝟒.𝟐» = Lean.ParserDescr.node `LO.Modal.term𝐒𝟒.𝟐 1024 (Lean.ParserDescr.symbol "𝐒𝟒.𝟐")
@[reducible, inline]
Equations
- LO.Modal.«term𝐒𝟒.𝟑» = Lean.ParserDescr.node `LO.Modal.term𝐒𝟒.𝟑 1024 (Lean.ParserDescr.symbol "𝐒𝟒.𝟑")
Equations
- LO.Modal.«term𝐒𝟒𝐆𝐫𝐳» = Lean.ParserDescr.node `LO.Modal.term𝐒𝟒𝐆𝐫𝐳 1024 (Lean.ParserDescr.symbol "𝐒𝟒𝐆𝐫𝐳")
@[reducible, inline]
Equations
- LO.Modal.«term𝐒𝟓» = Lean.ParserDescr.node `LO.Modal.term𝐒𝟓 1024 (Lean.ParserDescr.symbol "𝐒𝟓")
Equations
- LO.Modal.instIsNormalS5 = LO.Modal.Hilbert.IsNormal.mk
@[reducible, inline]
Equations
- LO.Modal.«term𝐓𝐫𝐢𝐯» = Lean.ParserDescr.node `LO.Modal.term𝐓𝐫𝐢𝐯 1024 (Lean.ParserDescr.symbol "𝐓𝐫𝐢𝐯")
Equations
- LO.Modal.instTrivHilbertFormulaTriv = LO.System.Triv.mk
@[reducible, inline]
Equations
- LO.Modal.«term𝐕𝐞𝐫» = Lean.ParserDescr.node `LO.Modal.term𝐕𝐞𝐫 1024 (Lean.ParserDescr.symbol "𝐕𝐞𝐫")
Equations
- LO.Modal.instVerHilbertFormulaVer = LO.System.Ver.mk
@[reducible, inline]
Instances For
- LO.Modal.Kripke.GL_complete
- LO.Modal.Kripke.GL_finite_sound
- LO.Modal.Kripke.instConsistentFormulaHilbertGL
- LO.Modal.Kripke.instFiniteFramePropertyGLTransitiveIrreflexiveFrameClass
- LO.Modal.Kripke.instSoundHilbertFormulaDepGLAltTransitiveConverseWellFoundedFrameClass
- LO.Modal.instBoxdotPropertyGrzGL
- LO.Modal.instGLConsistencyViaUnprovableAxiomT
- LO.Modal.instGLHilbertFormulaGL
- LO.Modal.instModalDisjunctiveFormulaHilbertGL
- LO.Modal.instUnnecessitationHilbertFormulaGL
Equations
- LO.Modal.«term𝐆𝐋» = Lean.ParserDescr.node `LO.Modal.term𝐆𝐋 1024 (Lean.ParserDescr.symbol "𝐆𝐋")
Equations
- LO.Modal.instGLHilbertFormulaGL = LO.System.GL.mk
@[reducible, inline]
Instances For
- LO.Modal.Kripke.Grz_complete
- LO.Modal.Kripke.instConsistentFormulaHilbertGrz
- LO.Modal.Kripke.instFiniteFramePropertyGrzReflexiveTransitiveAntisymmetricFrameClass
- LO.Modal.Kripke.instSoundHilbertFormulaDepGrzAltReflexiveTransitiveWeaklyConverseWellFoundedFrameClass
- LO.Modal.Kripke.instSoundHilbertFormulaDepGrzAltToFiniteFrameClassReflexiveTransitiveAntisymmetricFrameClass
- LO.Modal.instBoxdotPropertyGrzGL
- LO.Modal.instGrzHilbertFormulaGrz
Equations
- LO.Modal.«term𝐆𝐫𝐳» = Lean.ParserDescr.node `LO.Modal.term𝐆𝐫𝐳 1024 (Lean.ParserDescr.symbol "𝐆𝐫𝐳")
Equations
- LO.Modal.instGrzHilbertFormulaGrz = LO.System.Grz.mk
@[reducible, inline]
Instances For
Equations
- LO.Modal.«term𝐊𝟒𝐇» = Lean.ParserDescr.node `LO.Modal.term𝐊𝟒𝐇 1024 (Lean.ParserDescr.symbol "𝐊𝟒𝐇")
Equations
- LO.Modal.instK4HHilbertFormulaK4H = LO.System.K4H.mk
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝟒(𝐋)» = Lean.ParserDescr.node `LO.Modal.term𝐊𝟒(𝐋) 1024 (Lean.ParserDescr.symbol "𝐊𝟒(𝐋)")
Equations
- LO.Modal.instHasAxiomKK4Loeb = { has_axiomK := ⋯ }
Equations
- LO.Modal.instHasNecessitationK4Loeb = { has_necessitation := ⋯ }
Equations
- LO.Modal.instHasLoebRuleK4Loeb = { has_loeb := ⋯ }
Equations
- LO.Modal.instK4LoebHilbertFormulaK4Loeb = LO.System.K4Loeb.mk
@[reducible, inline]
Equations
- LO.Modal.«term𝐊𝟒(𝐇)» = Lean.ParserDescr.node `LO.Modal.term𝐊𝟒(𝐇) 1024 (Lean.ParserDescr.symbol "𝐊𝟒(𝐇)")
Equations
- LO.Modal.instHasAxiomKK4Henkin = { has_axiomK := ⋯ }
Equations
- LO.Modal.instHasNecessitationK4Henkin = { has_necessitation := ⋯ }
Equations
- LO.Modal.instHasHenkinRuleK4Henkin = { has_henkin := ⋯ }
Equations
- LO.Modal.instK4HenkinHilbertFormulaK4Henkin = LO.System.K4Henkin.mk
@[reducible, inline]
Solovey's Provability Logic of True Arithmetic. Remark necessitation is not permitted.
Equations
- LO.Modal.«term𝐆𝐋𝐒» = Lean.ParserDescr.node `LO.Modal.term𝐆𝐋𝐒 1024 (Lean.ParserDescr.symbol "𝐆𝐋𝐒")
Equations
- LO.Modal.instHasAxiomKHilbertFormulaGLS = { K := fun (x x_1 : LO.Modal.Formula α) => LO.Modal.Deduction.maxm ⋯ }
Equations
- LO.Modal.instHasAxiomLHilbertFormulaGLS = { L := fun (x : LO.Modal.Formula α) => LO.Modal.Deduction.maxm ⋯ }
Equations
- LO.Modal.instHasAxiomTHilbertFormulaGLS = { T := fun (x : LO.Modal.Formula α) => LO.Modal.Deduction.maxm ⋯ }
@[reducible, inline]
Logic of Pure Necessitation
Equations
- LO.Modal.«term𝐍» = Lean.ParserDescr.node `LO.Modal.term𝐍 1024 (Lean.ParserDescr.symbol "𝐍")
Equations
- LO.Modal.instHasNecOnlyN = { has_necessitation_only := ⋯ }
theorem
LO.Modal.normal_weakerThan_of_maxm
{α : Type u_1}
[DecidableEq α]
{Λ₁ : LO.Modal.Hilbert α}
{Λ₂ : LO.Modal.Hilbert α}
[Λ₁.IsNormal]
[Λ₂.IsNormal]
(hMaxm : ∀ {p : LO.Modal.Formula α}, p ∈ Ax(Λ₁) → Λ₂ ⊢! p)
:
Λ₁ ≤ₛ Λ₂
theorem
LO.Modal.normal_weakerThan_of_subset
{α : Type u_1}
[DecidableEq α]
{Λ₁ : LO.Modal.Hilbert α}
{Λ₂ : LO.Modal.Hilbert α}
[Λ₁.IsNormal]
[Λ₂.IsNormal]
(hSubset : autoParam (Ax(Λ₁) ⊆ Ax(Λ₂)) _auto✝)
:
Λ₁ ≤ₛ Λ₂