@@ -69,6 +69,8 @@ lemma notExtrinsicForces_neg : x₁ ⊮ᵉ ∼φ ↔ ∃ x₂, x₁ ≼ x₂ ∧
6969
7070lemma notExtrinsticForces_box : x₁ ⊮ᵉ □φ ↔ ∃ y₁, x₁ ⊏ y₁ ∧ y₁ ⊮ᵉ φ := by grind;
7171
72+ @ [simp, grind .] lemma extrinsicForces_top : x₁ ⊩ᵉ ⊤ := by grind;
73+
7274@[grind]
7375def IntrinsicForces {M : KripkeModel κ} (x₁ : M.World) : BDFormula → Prop
7476 | .atom a => M.val x₁ a
@@ -80,6 +82,8 @@ def IntrinsicForces {M : KripkeModel κ} (x₁ : M.World) : BDFormula → Prop
8082 | .dia φ => ∀ x₂, x₁ ≼ x₂ → ∃ y₂, x₂ ⊏ y₂ ∧ M.IntrinsicForces y₂ φ
8183infixl :80 " ⊩ⁱ " => IntrinsicForces
8284
85+ @ [simp, grind .] lemma intrinsticForces_top : x₁ ⊩ⁱ ⊤ := by grind;
86+
8387lemma formula_persistent_intrinsicForces : x₁ ⊩ⁱ φ → x₁ ≼ x₂ → x₂ ⊩ⁱ φ := by
8488 intro h Ix₁x₂;
8589 induction φ generalizing x₂ with
@@ -328,6 +332,66 @@ lemma iff_mem_logicIntrinsic_mem_logicDiaFreeExtrinsic_of_diaFree (hφ : φ.diaF
328332 | _ => grind;
329333 exact this φ (by assumption) x |>.mpr $ h M' x;
330334
335+ lemma logicIntrinsic_boxRM_closed : (φ 🡒 ψ) ∈ logicIntrinsic.{u} → (□φ 🡒 □ψ) ∈ logicIntrinsic.{u} := by
336+ dsimp only [logicIntrinsic, Set.mem_setOf_eq, KripkeModel.IntrinsicValid];
337+ intro h _ _ M x₁ x₂ Ix₁x₂ hφ x₃ Ix₂x₃ y₃ Mx₃y₃;
338+ apply h M x₂ y₃ ?_ $ hφ x₃ Ix₂x₃ y₃ Mx₃y₃;
339+ sorry ;
340+
341+ lemma logicExtrinsic_boxRM_closed : (φ 🡒 ψ) ∈ logicExtrinsic.{u} → (□φ 🡒 □ψ) ∈ logicExtrinsic.{u} := by
342+ dsimp only [logicExtrinsic, Set.mem_setOf_eq, KripkeModel.ExtrinsicValid];
343+ intro h _ _ M _ _ x₁ x₂ Ix₁x₂ hφ y₂ Mx₂y₂;
344+ apply h M y₂ y₂ (refl _) $ hφ y₂ Mx₂y₂;
345+
346+ lemma logicDiaFreeExtrinsic_boxRM_closed : (φ 🡒 ψ) ∈ logicDiaFreeExtrinsic.{u} → (□φ 🡒 □ψ) ∈ logicDiaFreeExtrinsic.{u} := by
347+ dsimp only [logicDiaFreeExtrinsic, Set.mem_setOf_eq, KripkeModel.ExtrinsicValid];
348+ rintro ⟨_, h⟩;
349+ constructor;
350+ . assumption;
351+ . intro _ _ M _ x₁ x₂ Ix₁x₂ hφ y₂ Mx₂y₂;
352+ apply h M y₂ y₂ (refl _) $ hφ y₂ Mx₂y₂;
353+
354+
355+ lemma logicExtrinsic_diaRM_closed : (φ 🡒 ψ) ∈ logicExtrinsic.{u} → (◇φ 🡒 ◇ψ) ∈ logicExtrinsic.{u} := by
356+ dsimp only [logicExtrinsic, Set.mem_setOf_eq, KripkeModel.ExtrinsicValid];
357+ rintro h _ _ M _ _ x₁ x₂ Ix₁x₂ ⟨y₂, Mx₂y₂, hy₂ψ⟩;
358+ use y₂;
359+ constructor;
360+ . assumption;
361+ . exact h M y₂ _ (refl _) hy₂ψ;
362+
363+ lemma logicIntrinsic_diaRM_closed : (φ 🡒 ψ) ∈ logicIntrinsic.{u} → (◇φ 🡒 ◇ψ) ∈ logicIntrinsic.{u} := by
364+ dsimp only [logicIntrinsic, Set.mem_setOf_eq, KripkeModel.IntrinsicValid];
365+ intro h _ _ M x₁ x₂ Ix₁x₂ hφ x₃ Ix₂x₃;
366+ obtain ⟨y₃, Mx₃y₃, hy₃φ⟩ := hφ x₃ Ix₂x₃;
367+ use y₃;
368+ constructor;
369+ . assumption;
370+ . apply h M x₂ y₃ (by sorry ) hy₃φ;
371+
372+ lemma boxTop_mem_logicExtrinsic : □⊤ ∈ logicExtrinsic := by
373+ rintro κ _ M _ _ x₁ y₁ Mx₁y₁;
374+ apply M.extrinsicForces_top;
375+
376+ lemma boxTop_mem_logicIntrinsic : □⊤ ∈ logicIntrinsic := by
377+ rintro κ _ M x₁ y₁ Mx₁y₁ y₂ Mx₁y₂;
378+ apply M.intrinsticForces_top;
379+
380+ lemma boxTop_mem_logicDiaFreeExtrinsic : □⊤ ∈ logicDiaFreeExtrinsic := by
381+ constructor;
382+ . grind;
383+ . rintro κ _ M _ _ x₁ y₁ Mx₁y₁;
384+ apply M.extrinsicForces_top;
385+
386+ lemma negDiaBot_mem_logicExtrinsic : ∼◇⊥ ∈ logicExtrinsic := by
387+ rintro κ _ M _ _ x₁ x₂ Ix₁x₂ ⟨y₂, Mx₂y₂, hy₂⟩;
388+ contradiction;
389+
390+ lemma negDiaBot_mem_logicIntrinsic : ∼◇⊥ ∈ logicIntrinsic := by
391+ rintro κ _ M x₁ x₂ Ix₁x₂ h;
392+ obtain ⟨y₂, Mx₁y₂, hy₂⟩ := h x₂ (refl _);
393+ contradiction;
394+
331395end NCML.IML
332396
333397end
0 commit comments