Documentation

Logic.Modal.Hilbert

structure LO.Modal.InferenceRule (α : Type u_2) :
Type u_2

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]
abbrev LO.Modal.InferenceRules (α : Type u_2) :
Type u_2
Equations
@[reducible, inline]
Equations
@[reducible, inline]
Equations
@[reducible, inline]
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.
inductive LO.Modal.Deduction {α : Type u_1} (Λ : LO.Modal.Hilbert α) :
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
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.
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.
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
noncomputable def LO.Modal.Deduction.inducition! {α : Type u_1} {Λ : LO.Modal.Hilbert α} {motive : (p : LO.Modal.Formula α) → Λ ⊢! pSort 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) hpqmotive p hpmotive 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 α) → Λ ⊢! pProp} (hMaxm : ∀ {p : LO.Modal.Formula α} (h : p Ax(Λ)), motive p ) (hMdp : ∀ {p q : LO.Modal.Formula α} {hpq : Λ ⊢! p q} {hp : Λ ⊢! p}, motive (p q) hpqmotive p hpmotive q ) (hNec : ∀ {p : LO.Modal.Formula α} {hp : Λ ⊢! p}, motive p hpmotive (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
instance LO.Modal.instIsNormalK {α : Type u_1} :
𝐊.IsNormal
Equations
  • LO.Modal.instIsNormalK = LO.Modal.Hilbert.IsNormal.mk
@[reducible, inline]
abbrev LO.Modal.Normal {α : Type u_1} (Ax : LO.Modal.Theory α) :
Equations
Instances For
instance LO.Modal.instIsNormalNormal {α : Type u_1} {Ax : LO.Modal.Theory α} :
(𝝂Ax).IsNormal
Equations
  • LO.Modal.instIsNormalNormal = LO.Modal.Hilbert.IsNormal.mk
theorem LO.Modal.Normal.maxm! {α : Type u_1} {Ax : LO.Modal.Theory α} {p : LO.Modal.Formula α} (h : p Ax) :
@[reducible, inline]
abbrev LO.Modal.KB {α : Type u_1} :
Equations
Equations
  • LO.Modal.instKDHilbertFormulaKD = LO.System.KD.mk
Equations
Equations
  • LO.Modal.instK4HilbertFormulaK4 = LO.System.K4.mk
@[reducible, inline]
abbrev LO.Modal.K5 {α : Type u_1} :
Equations
Equations
  • LO.Modal.instS4HilbertFormulaS4 = LO.System.S4.mk
@[reducible, inline]
abbrev LO.Modal.S4Grz {α : Type u_1} :
Equations
instance LO.Modal.instIsNormalS5 {α : Type u_1} :
𝐒𝟓.IsNormal
Equations
  • LO.Modal.instIsNormalS5 = LO.Modal.Hilbert.IsNormal.mk
Equations
  • LO.Modal.instTrivHilbertFormulaTriv = LO.System.Triv.mk
Equations
  • LO.Modal.instVerHilbertFormulaVer = LO.System.Ver.mk
Equations
  • LO.Modal.instGLHilbertFormulaGL = LO.System.GL.mk
Equations
  • LO.Modal.instGrzHilbertFormulaGrz = LO.System.Grz.mk
@[reducible, inline]
abbrev LO.Modal.K4H {α : Type u_1} :
Equations
Instances For
Equations
  • LO.Modal.instK4HHilbertFormulaK4H = LO.System.K4H.mk
instance LO.Modal.instHasAxiomKK4Loeb {α : Type u_1} :
𝐊𝟒(𝐋).HasAxiomK
Equations
  • LO.Modal.instHasAxiomKK4Loeb = { has_axiomK := }
instance LO.Modal.instHasNecessitationK4Loeb {α : Type u_1} :
𝐊𝟒(𝐋).HasNecessitation
Equations
  • LO.Modal.instHasNecessitationK4Loeb = { has_necessitation := }
instance LO.Modal.instHasLoebRuleK4Loeb {α : Type u_1} :
𝐊𝟒(𝐋).HasLoebRule
Equations
  • LO.Modal.instHasLoebRuleK4Loeb = { has_loeb := }
Equations
  • LO.Modal.instK4LoebHilbertFormulaK4Loeb = LO.System.K4Loeb.mk
instance LO.Modal.instHasAxiomKK4Henkin {α : Type u_1} :
𝐊𝟒(𝐇).HasAxiomK
Equations
  • LO.Modal.instHasAxiomKK4Henkin = { has_axiomK := }
instance LO.Modal.instHasNecessitationK4Henkin {α : Type u_1} :
𝐊𝟒(𝐇).HasNecessitation
Equations
  • LO.Modal.instHasNecessitationK4Henkin = { has_necessitation := }
instance LO.Modal.instHasHenkinRuleK4Henkin {α : Type u_1} :
𝐊𝟒(𝐇).HasHenkinRule
Equations
  • LO.Modal.instHasHenkinRuleK4Henkin = { has_henkin := }
Equations
  • LO.Modal.instK4HenkinHilbertFormulaK4Henkin = LO.System.K4Henkin.mk
@[reducible, inline]
abbrev LO.Modal.GLS {α : Type u_1} :

Solovey's Provability Logic of True Arithmetic. Remark necessitation is not permitted.

Equations
Instances For
Equations
Equations
Equations
instance LO.Modal.instHasNecOnlyN {α : Type u_1} :
𝐍.HasNecOnly
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✝) :
Λ₁ ≤ₛ Λ₂