Skip to content

Commit eda8e3a

Browse files
authored
add(Modal): GL + □^[n]⊥ provable equivalent to GL (#513)
1 parent 4552a84 commit eda8e3a

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

Foundation/Modal/Logic/GLPlusBoxBot/Basic.lean

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Foundation.Modal.Logic.Extension
22
import Foundation.Modal.Maximal.Unprovability
33
import Mathlib.Data.ENat.Basic
4-
4+
import Foundation.Modal.Kripke.Logic.GL.Completeness
55

66
namespace LO.Modal.Axioms
77

@@ -15,6 +15,9 @@ protected abbrev BoxBot (n : ℕ∞) : F :=
1515
@[simp]
1616
lemma BoxBot.eq_omega : (Axioms.BoxBot ⊤ : F) = ⊤ := rfl
1717

18+
@[simp]
19+
lemma BoxBot.subst {s : Substitution α} : (Axioms.BoxBot n)⟦s⟧ = (Axioms.BoxBot n) := by cases n <;> simp;
20+
1821
end LO.Modal.Axioms
1922

2023

@@ -34,23 +37,28 @@ instance : Modal.GL ⪯ Modal.GLPlusBoxBot n := by
3437
dsimp [Modal.GLPlusBoxBot];
3538
infer_instance;
3639

37-
lemma Logic.GLPlusBoxBot.boxbot : (Modal.Axioms.BoxBot n) ∈ Modal.GLPlusBoxBot n := by
38-
apply Logic.sumQuasiNormal.mem₂;
40+
@[simp]
41+
lemma Logic.GLPlusBoxBot.boxbot : Modal.GLPlusBoxBot n ⊢! (Modal.Axioms.BoxBot n) := by
42+
apply Logic.sumQuasiNormal.mem₂!;
3943
tauto;
4044

41-
@[simp]
42-
lemma GLPlusBoxBot.eq_omega : (Modal.GLPlusBoxBot ⊤ : Logic ℕ) = Modal.GL := by
43-
ext φ;
44-
suffices Modal.GLPlusBoxBot ⊤ ⊢! φ ↔ Modal.GL ⊢! φ by simpa;
45+
lemma iff_provable_GLBB_provable_GL {n : ℕ∞} {φ} : Modal.GLPlusBoxBot n ⊢! φ ↔ Modal.GL ⊢! (Modal.Axioms.BoxBot n) ➝ φ := by
4546
constructor;
4647
. intro h;
4748
induction h using sumQuasiNormal.rec! with
48-
| mem₁ h => assumption;
49+
| mem₁ h => cl_prover [h]
4950
| mem₂ h => simp_all;
50-
| mdp ihφψ ihφ => exact ihφψihφ;
51-
| subst => apply Logic.subst!; assumption;
51+
| mdp ihφψ ihφ => cl_prover [ihφψ, ihφ];
52+
| subst ihφ => simpa using Logic.subst! _ ihφ;
5253
. intro h;
53-
apply sumQuasiNormal.mem₁!;
54-
assumption;
54+
replace h : Modal.GLPlusBoxBot n ⊢! (Modal.Axioms.BoxBot n) ➝ φ := sumQuasiNormal.mem₁! h;
55+
exact h ⨀ Logic.GLPlusBoxBot.boxbot;
56+
57+
@[simp]
58+
lemma eq_GLBB_omega_GL : (Modal.GLPlusBoxBot ⊤ : Logic ℕ) = Modal.GL := by
59+
ext φ;
60+
suffices Modal.GLPlusBoxBot ⊤ ⊢! φ ↔ Modal.GL ⊢! φ by simpa;
61+
apply Iff.trans iff_provable_GLBB_provable_GL;
62+
constructor <;> . intro h; cl_prover [h];
5563

5664
end LO.Modal

0 commit comments

Comments
 (0)