@@ -166,8 +166,8 @@ infixl:80 " ⊧ⁱ " => IntrinsicValid
166166end KripkeFrame
167167
168168
169- def logicExtrinsic := { φ : BDFormula | ∀ κ : Type *, [Nonempty κ] → ∀ M : KripkeModel κ, [M.MRelLifting] → [M.MixConfluent] → M ⊧ᵉ φ }
170- def logicIntrinsic := { φ : BDFormula | ∀ κ : Type *, [Nonempty κ] → ∀ M : KripkeModel κ, M ⊧ⁱ φ }
169+ abbrev logicExtrinsic := { φ : BDFormula | ∀ { κ : Type *} , [Nonempty κ] → ∀ M : KripkeModel κ, [M.MRelLifting] → [M.MixConfluent] → M ⊧ᵉ φ }
170+ abbrev logicIntrinsic := { φ : BDFormula | ∀ { κ : Type *} , [Nonempty κ] → ∀ M : KripkeModel κ, M ⊧ⁱ φ }
171171
172172lemma wwwww {M : KripkeModel κ} [M.MRelLifting] [M.MixConfluent] {x₁ : M.World} {φ} : x₁ ⊩ᵉ φ ↔ x₁ ⊩ⁱ φ := by
173173 induction φ generalizing x₁ with
@@ -225,7 +225,7 @@ theorem logicIntrinsic_ssubset_logicExtrinsic : logicIntrinsic.{0} ⊂ logicExtr
225225 . exact axiomCDia_notMem_logicIntrinsic;
226226
227227
228- def logicDiaFreeExtrinsic := { φ : BDFormula | φ.diaFree ∧ (∀ κ : Type *, [Nonempty κ] → ∀ M : KripkeModel κ, [M.MRelLifting] → M ⊧ᵉ φ) }
228+ abbrev logicDiaFreeExtrinsic := { φ : BDFormula | φ.diaFree ∧ (∀ { κ : Type *} , [Nonempty κ] → ∀ M : KripkeModel κ, [M.MRelLifting] → M ⊧ᵉ φ) }
229229
230230open KripkeModel
231231
@@ -277,6 +277,57 @@ theorem logicDiaFreeExtrinsic_ssubset_logicExtrinsic : logicDiaFreeExtrinsic.{0}
277277 . exact dnBoxBot_mem_logicExtrinsic;
278278 . exact dnBoxBot_notMem_logicDiaFreeExtrinsic;
279279
280+ lemma diaFree_equiv {M : KripkeModel κ} [M.MRelLifting] {φ} (hφ : φ.diaFree) {x₁ : M.World} : x₁ ⊩ᵉ φ ↔ x₁ ⊩ⁱ φ := by
281+ induction φ generalizing x₁ with
282+ | box φ ihφ =>
283+ constructor;
284+ . intro h y₁ Ix₁y₁ y₂ My₁y₂;
285+ exact ihφ (by grind) |>.mp $ KripkeModel.diaFree_formula_persistent_exrinsicForces (by grind) h Ix₁y₁ y₂ My₁y₂;
286+ . intro h y₁ Mx₁y₁;
287+ exact ihφ (by grind) |>.mpr $ h x₁ (refl x₁) y₁ Mx₁y₁;
288+ | _ => grind;
289+
290+ lemma iff_mem_logicIntrinsic_mem_logicDiaFreeExtrinsic_of_diaFree (hφ : φ.diaFree) : (φ ∈ logicIntrinsic.{u}) ↔ φ ∈ logicDiaFreeExtrinsic.{u} := by
291+ simp only [Set.mem_setOf_eq]
292+ constructor;
293+ . intro h;
294+ constructor;
295+ . assumption;
296+ . intro κ _ M _ x;
297+ exact diaFree_equiv (by grind) |>.mpr $ h M x;
298+ . rintro ⟨_, h⟩ κ _ M x;
299+ let M' : KripkeModel κ := {
300+ iRel := M.iRel,
301+ mRel x y := M.mRel x y ∨ (∃ x', M.iRel x x' ∧ M.mRel x' y),
302+ val := M.val,
303+ val_persistent := M.val_persistent,
304+ };
305+ have : M'.MRelLifting := ⟨by
306+ rintro x₁ x₂ y₂ Ix₁x₂ Mx₂y₂;
307+ use y₂;
308+ constructor;
309+ . apply refl;
310+ . rcases Mx₂y₂ with (h | ⟨x₃, Ix₂x₃, Mx₃y₂⟩);
311+ . right; use x₂;
312+ . right;
313+ use x₃;
314+ constructor;
315+ . apply _root_.trans Ix₁x₂ Ix₂x₃;
316+ . assumption;
317+ ⟩
318+ have : ∀ ψ, ψ.diaFree → ∀ w, (M.IntrinsicForces w ψ ↔ M'.ExtrinsicForces w ψ) := by
319+ intro ψ hψ w;
320+ induction ψ generalizing w with
321+ | box ψ ih =>
322+ replace ih := ih (by grind);
323+ constructor;
324+ . rintro h v (Mwv | ⟨v', Iwv', Mv'v⟩);
325+ . exact ih _ |>.mp $ h w (refl _) v Mwv;
326+ . exact ih _ |>.mp $ h _ Iwv' v Mv'v;
327+ . grind;
328+ | _ => grind;
329+ exact this φ (by assumption) x |>.mpr $ h M' x;
330+
280331end NCML.IML
281332
282333end
0 commit comments