@@ -40,9 +40,9 @@ instance isFinite [F.IsFinite] : (F.extendRoot n).IsFinite := by
4040
4141instance fintype [Fintype F] : Fintype (F.extendRoot n) := instFintypeSum (Fin n) F
4242
43- protected abbrev root (F n) : (extendRoot F n).Root := ⟨.inl ⟨n - 1 , by simp⟩, by grind⟩
43+ protected abbrev defaultRoot (F n) : (extendRoot F n).Root := ⟨.inl ⟨n - 1 , by simp⟩, by grind⟩
4444
45- instance : (F.extendRoot n).IsRooted := ⟨extendRoot.root F n⟩
45+ instance : (F.extendRoot n).IsRooted := ⟨extendRoot.defaultRoot F n⟩
4646
4747protected abbrev chain (F n) : List (extendRoot F n) := List.finRange n |>.reverse.map (extend ·)
4848
@@ -68,40 +68,6 @@ protected abbrev pMorphism : F →ₚ F.extendRoot n where
6868 forth := by grind;
6969 back {x y} h := by grind;
7070
71- lemma not_root_of_from_root (r : F.Root) (x : F.extendRoot n) (h : (extendRoot.root F n) ≺ x) :
72- (∃ i : Fin n, x = extend i) ∨ x = r ∨ r ≺ x := by
73- match x with
74- | .inl i =>
75- left;
76- use i;
77- | .inr x =>
78- by_cases e : x = r;
79- . tauto;
80- . right;
81- right;
82- apply extendRoot.pMorphism.forth;
83- grind;
84-
85- lemma not_root_of_from_root' (r : F.Root) (x : F.extendRoot n) (h : (extendRoot.root F n) ≺ x) :
86- (∃ i : Fin n, x = extend i) ∨ x = r ∨ ∃ x₀ : F, x = x₀ ∧ r ≺ x₀ := by
87- rcases not_root_of_from_root r x h with (h | h | h)
88- · tauto;
89- · tauto;
90- · right; right;
91- rcases extendRoot.pMorphism.back h with ⟨x₀, rfl, hx₀⟩;
92- exact ⟨x₀, rfl, hx₀⟩
93-
94- lemma not_root_of_from_root₁ (r : F.Root) [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : (extendRoot.root F 1 ) ≺ x) :
95- x = r ∨ embed r ≺ x := by
96- rcases not_root_of_from_root r x h with (⟨i, hi, rfl⟩ | hr | hr) <;> simp_all [extendRoot.root]
97-
98- lemma not_root_of_from_root'₁ (r : F.Root) [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : (extendRoot.root F 1 ) ≺ x) :
99- x = r ∨ ∃ x₀ : F, x = x₀ ∧ r ≺ x₀ := by
100- rcases not_root_of_from_root' r x h with (⟨i, hi, rfl⟩ | hr | hr) <;> simp_all [extendRoot.root]
101-
102- lemma eq_inr_of_root_rel (r : F.Root) [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : (extendRoot.root F 1 ) ≺ x) :
103- ∃ x₀ : F, x = x₀ := by
104- rcases not_root_of_from_root'₁ r x h with (rfl | ⟨x₀, rfl, hx₀⟩) <;> grind;
10571
10672@[simp]
10773lemma embed_rel_embed_iff_rel {i j : F} : embed (n := n) i ≺ embed j ↔ i ≺ j :=
@@ -111,8 +77,55 @@ lemma embed_rel_embed_iff_rel {i j : F} : embed (n := n) i ≺ embed j ↔ i ≺
11177lemma embed_rel_iterate_embed_iff_rel {i j : F} : embed (n := n) i ≺^[k] embed j ↔ i ≺^[k] j :=
11278 extendRoot.pMorphism.toFun_rel_iterate_toFun_iff_of_inj Sum.inr_injective
11379
80+
81+ @ [simp, grind .]
82+ lemma eq_defaultRoot_root [F.IsIrreflexive] [F.IsTransitive] : (F.extendRoot n).root = (extendRoot.defaultRoot F n) := by
83+ apply root_uniqueness_of_irrefl_trans;
84+
85+ @ [simp, grind .]
86+ lemma rel_defaultRoot_original_root [F.IsRooted] [F.IsTransitive] [F.IsIrreflexive] : (F.extendRoot n).root.1 ≺ F.root.1 := by
87+ grind [eq_defaultRoot_root];
88+
89+ @ [grind →]
90+ lemma not_eq_defaultRoot_of_rel_defaultRoot (x : F.extendRoot n) (h : (extendRoot.defaultRoot F n) ≺ x) : x ≠ (extendRoot.defaultRoot F n) := by grind;
91+
92+ @ [grind →]
93+ lemma not_eq_extendRoot_root_of_rel_original_root [F.IsIrreflexive] [F.IsTransitive] (x : F.extendRoot n) (h : (extendRoot F n).root ≺ x) : x ≠ (extendRoot F n).root := by grind;
94+
95+
96+ lemma eq_extend_or_eq_original (x : F.extendRoot n)
97+ : (∃ i : Fin n, x = extend i) ∨ (∃ x₀ : F, x = x₀) := by
98+ match x with
99+ | .inl i => left; use i;
100+ | .inr x => grind;
101+
102+
103+ section
104+
105+ lemma eq_original_of_rel_defaultRoot₁ [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : (extendRoot.defaultRoot F 1 ) ≺ x)
106+ : ∃ x₀ : F, x = x₀ := by
107+ rcases eq_extend_or_eq_original x with (⟨i, hi, rfl⟩ | _) <;> simp_all;
108+
109+ lemma eq_root_or_rel_original_root_of_neq_defaultRoot₁ [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : x ≠ (extendRoot.defaultRoot F 1 ))
110+ : ∃ x₀ : F, x = x₀ := by
111+ apply eq_original_of_rel_defaultRoot₁;
112+ grind;
113+
114+ lemma eq_root_or_rel_original_root_of_rel_extendRoot_root₁ [F.IsIrreflexive] (x : F.extendRoot 1 ) (h : (extendRoot F 1 ).root ≺ x)
115+ : ∃ x₀ : F, x = x₀ := by
116+ apply eq_original_of_rel_defaultRoot₁;
117+ grind;
118+
119+ lemma eq_root_or_rel_original_root_of_neq_extendRoot_root₁ [F.IsIrreflexive] [F.IsTransitive] (x : F.extendRoot 1 ) (h : x ≠ (extendRoot F 1 ).root)
120+ : ∃ x₀ : F, x = x₀ := by
121+ apply eq_root_or_rel_original_root_of_neq_defaultRoot₁;
122+ grind [eq_defaultRoot_root];
123+
124+ end
125+
114126end Frame.extendRoot
115127
128+
116129abbrev Model.extendRoot (M : Kripke.Model) (r : M.Root) (n : ℕ+) : Kripke.Model where
117130 toFrame := M.toFrame.extendRoot n
118131 Val a x :=
@@ -124,31 +137,9 @@ namespace Model.extendRoot
124137
125138variable {M : Model} {r : M.Root} {x y : M.World} {n : ℕ+} {i : Fin n} {φ}
126139
127- -- abbrev extend (i : Fin n) : M.extendRoot r n := .inl i
128-
129140@[coe] abbrev extend (i : Fin n) : M.extendRoot r n := .inl i
130141@[coe] abbrev embed (x : M) : M.extendRoot r n := .inr x
131142
132- -- instance : Coe (M.World) ((M.extendRoot r n).World) := ⟨embed⟩
133-
134- -- protected abbrev root (M) := Frame.extendRoot.root (M.toFrame) (n := n)
135-
136- /-
137- instance isFinite [ M.IsFinite ] : (M.extendRoot r n).IsFinite := Frame.extendRoot.isFinite
138-
139- instance fintype [Fintype M] : Fintype (M.extendRoot r n) := Frame.extendRoot.fintype
140-
141- instance isTransitive [ M.IsTransitive ] : (M.extendRoot n).IsTransitive := Frame.extendRoot.isTransitive
142-
143- instance isAsymmetric [ M.IsAsymmetric ] : (M.extendRoot n).IsAsymmetric := Frame.extendRoot.isAsymmetric
144-
145- instance isRooted [M.IsRootedBy r] : (M.extendRoot n).IsRootedBy extendRoot.root := Frame.extendRoot.instIsRooted
146-
147- instance isTree [M.IsTree r] : (M.extendRoot n).IsTree extendRoot.root := Frame.extendRoot.isTree
148-
149- instance isFiniteTree [M.IsFiniteTree r] : (M.extendRoot n).IsFiniteTree extendRoot.root := Frame.extendRoot.isFiniteTree
150- -/
151-
152143def pMorphism : M →ₚ M.extendRoot r n := PseudoEpimorphism.ofAtomic Frame.extendRoot.pMorphism $ by grind;
153144
154145lemma modal_equivalence_original_world : (embed x : M.extendRoot r n) ↭ x :=
0 commit comments