@@ -63,25 +63,25 @@ lemma traceFlatten_append {u : Trace I} (L : List (Trace I)) : traceFlatten (u :
6363 simp
6464
6565
66- def dependencyIn' (s : List α) (a b : {a : α // a ∈ s}) := (inducedDependence I).rel a b
66+ def dependencyIn (s : List α) (a b : {a : α // a ∈ s}) := (inducedDependence I).rel a b
6767
68- def dependencyTransClosureIn' (s : List α) (a b : {a : α // a ∈ s}) := Relation.TransGen (@dependencyIn' α I s) a b
68+ def dependencyTransClosureIn (s : List α) (a b : {a : α // a ∈ s}) := Relation.TransGen (@dependencyIn α I s) a b
6969
70- def isConnected' (s : List α) := ∀ a b : {a : α // a ∈ s}, @dependencyTransClosureIn' α I s a b
70+ def isConnected (s : List α) := ∀ a b : {a : α // a ∈ s}, @dependencyTransClosureIn α I s a b
7171
7272
73- def dependencyIn (t : Trace I) (a b : {a : α // a ∈ t}) := (inducedDependence I).rel a b
73+ def dependencyInT (t : Trace I) (a b : {a : α // a ∈ t}) := (inducedDependence I).rel a b
7474
75- def dependencyTransClosureIn (t : Trace I) (a b : {a : α // a ∈ t}) := Relation.TransGen (dependencyIn t) a b
75+ def dependencyTransClosureInT (t : Trace I) (a b : {a : α // a ∈ t}) := Relation.TransGen (dependencyInT t) a b
7676
77- def isConnected (t : Trace I) := ∀ a b : {a : α // a ∈ t}, dependencyTransClosureIn t a b
77+ def isConnectedT (t : Trace I) := ∀ a b : {a : α // a ∈ t}, dependencyTransClosureInT t a b
7878
7979
80- lemma dependencyIn_toTrace (s : List α) : @dependencyIn' α I s = @dependencyIn α I ⟦s⟧ := rfl
80+ lemma dependencyIn_toTrace (s : List α) : @dependencyIn α I s = @dependencyInT α I ⟦s⟧ := rfl
8181
82- lemma dependencyTransClosureIn_toTrace (s : List α) : @dependencyTransClosureIn' α I s = @dependencyTransClosureIn α I ⟦s⟧ := rfl
82+ lemma dependencyTransClosureIn_toTrace (s : List α) : @dependencyTransClosureIn α I s = @dependencyTransClosureInT α I ⟦s⟧ := rfl
8383
84- lemma isConnected_toTrace (s : List α) : @isConnected' α I s = @isConnected α I ⟦s⟧ := rfl
84+ lemma isConnected_toTrace (s : List α) : @isConnected α I s = @isConnectedT α I ⟦s⟧ := rfl
8585
8686
8787def isIterativeFactor (X : Language α) (t : List α) :=
@@ -92,9 +92,9 @@ def toTrace (X : Language α) : Set (Trace I) := (fun s => ⟦s⟧) '' X
9292
9393def kstar (T : Set (Trace I)) := {r | ∃ ts : List (Trace I), (∀ t' ∈ ts, t' ∈ T) ∧ r = traceFlatten ts}
9494
95- def independent' (u v : Trace I) := ∀ a b, a ∈ u → b ∈ v → I.rel a b
95+ def IndependentT (u v : Trace I) := ∀ a b, a ∈ u → b ∈ v → I.rel a b
9696
97- def connectedComponents (X : Set (Trace I)) : Set (Trace I) := {u | isConnected u ∧ u ≠ ⟦[]⟧ ∧ ∃ v, u * v ∈ X ∧ independent' u v}
97+ def connectedComponents (X : Set (Trace I)) : Set (Trace I) := {u | isConnectedT u ∧ u ≠ ⟦[]⟧ ∧ ∃ v, u * v ∈ X ∧ IndependentT u v}
9898
9999
100100-- open Computability
@@ -105,17 +105,13 @@ lemma kstar_toTrace_commutes (L : Language α) : @toTrace α I (KStar.kstar L) =
105105 intro t
106106 apply Iff.intro
107107 all_goals simp [kstar]
108- · intro ws hws hw
108+ · intro ws hL ht
109109 induction ws generalizing t with
110110 | nil =>
111- intro hL ht
112111 use []
113- simp at hw
114- rw [hw] at ht
115- simp [ht, traceFlatten]
112+ simp [<- ht, traceFlatten]
116113 | cons u ws ih =>
117114 simp at ih
118- intro hL ht
119115 replace ih := ih (fun y hy => hL y (List.mem_cons_of_mem u hy))
120116 choose ts hts using ih
121117 use ⟦u⟧ :: ts
@@ -124,7 +120,7 @@ lemma kstar_toTrace_commutes (L : Language α) : @toTrace α I (KStar.kstar L) =
124120 cases hs with
125121 | head => use u; simp [hL]
126122 | tail s hs => exact hts.left s hs
127- · simp [<- ht, hw ]
123+ · simp [<- ht]
128124 -- rw [<- mul_def]
129125 rw [traceFlatten_append, <- hts.right]
130126 rfl
@@ -133,30 +129,28 @@ lemma kstar_toTrace_commutes (L : Language α) : @toTrace α I (KStar.kstar L) =
133129 | nil =>
134130 use []
135131 simp [ht, traceFlatten]
136- use []
137- simp
138132 | cons s ts ih =>
139133 simp at ih
140134 replace ih := ih (fun y hy => hts y (List.mem_cons_of_mem s hy))
141- choose w hws hw using ih
135+ choose ws hL hws using ih
142136 rcases s with ⟨u⟩
143137 rw [show Quot.mk (⇑(TraceSetoid I)) u = ⟦u⟧ from rfl] at ht hts
144138 replace hts := hts ⟦u⟧
145139 simp at hts
146140 choose u' hu' using hts
147- use u' ++ w
141+ use u' :: ws
148142 apply And.intro
149- · rcases hws with ⟨ws, hws⟩
150- use u' :: ws
151- simp [hws.left, hu']
152- exact hws.right
143+ · intro y hy
144+ cases hy with
145+ | head => exact hu'.left
146+ | tail y hy => exact hL y hy
153147 · simp [ht]
154- rw [traceFlatten_append, <- hw , <- hu'.right]
148+ rw [traceFlatten_append, <- hws , <- hu'.right]
155149 rfl
156150
157- lemma append_indep_is_disconnected_chars (u v : Trace I) (huv : independent' u v)
151+ lemma append_indep_is_disconnected_chars (u v : Trace I) (huv : IndependentT u v)
158152 (a b : { a // a ∈ u * v }) (ha : a.1 ∈ u) (hb : b.1 ∈ v) :
159- ¬ (dependencyTransClosureIn (u * v)) a b := by
153+ ¬ (dependencyTransClosureInT (u * v)) a b := by
160154 intro h
161155 induction h with
162156 | single h =>
@@ -170,20 +164,20 @@ lemma append_indep_is_disconnected_chars (u v : Trace I) (huv : independent' u v
170164 have hb_uv := mem_append.mp b.2
171165 simp [ih] at hb_uv
172166 exact hb_uv
173- simp [dependencyIn , inducedDependence] at h_tail
174- unfold independent' at huv
167+ simp [dependencyInT , inducedDependence] at h_tail
168+ unfold IndependentT at huv
175169 exact h_tail (huv b c hbu hb)
176170
177- lemma append_indep_is_disconnected (u v : Trace I) (h : independent' u v) (hu : u ≠ ⟦[]⟧) (hv : v ≠ ⟦[]⟧) :
178- ¬isConnected (u * v) := by
171+ lemma append_indep_is_disconnected (u v : Trace I) (h : IndependentT u v) (hu : u ≠ ⟦[]⟧) (hv : v ≠ ⟦[]⟧) :
172+ ¬isConnectedT (u * v) := by
179173 by_contra h_con
180174 have ⟨a, ha⟩ := empty_is_eps u hu
181175 have ⟨b, hb⟩ := empty_is_eps v hv
182176 have h_ab_con := h_con ⟨a, mem_append.mpr (Or.inl ha)⟩ ⟨b, mem_append.mpr (Or.inr hb)⟩
183177 have h_ab_dis := append_indep_is_disconnected_chars u v h ⟨a, mem_append.mpr (Or.inl ha)⟩ ⟨b, mem_append.mpr (Or.inr hb)⟩ ha hb
184178 exact h_ab_dis h_ab_con
185179
186- lemma connectedComponents_of_connected (T : Set (Trace I)) (h : ∀ t ∈ T, isConnected t) :
180+ lemma connectedComponents_of_connected (T : Set (Trace I)) (h : ∀ t ∈ T, isConnectedT t) :
187181 connectedComponents T = T \ {⟦[]⟧} := by
188182 apply Set.ext
189183 intro t
@@ -200,7 +194,7 @@ lemma connectedComponents_of_connected (T : Set (Trace I)) (h : ∀ t ∈ T, isC
200194 use (h t ht), htz, ⟦[]⟧
201195 rw [right_id]
202196 use ht
203- unfold independent'
197+ unfold IndependentT
204198 simp [show ⟦[]⟧ = mk' [] from rfl, eps_is_empty]
205199
206200lemma empty_iff {w : List α} : (⟦w⟧ : Trace I) = ⟦[]⟧ ↔ w = [] := by
@@ -209,7 +203,7 @@ lemma empty_iff {w : List α} : (⟦w⟧ : Trace I) = ⟦[]⟧ ↔ w = [] := by
209203 | cons a u =>
210204 apply Iff.intro
211205 · intro h
212- have h_au := length_eq_of_equiv (Quotient.exact h)
206+ have h_au := length_eq_of_eqv (Quotient.exact h)
213207 simp at h_au
214208 · simp
215209
@@ -223,7 +217,8 @@ def isEmpty : Trace I → Bool := Quotient.lift List.isEmpty (by
223217 | cons b v => rfl
224218)
225219
226- lemma isEmpty_iff {t : Trace I} : t.isEmpty = true ↔ t = ⟦[]⟧ := by
220+ --lemma isEmpty_iff {t : Trace I} : t.isEmpty = true ↔ t = ⟦[]⟧ := by
221+ lemma isEmpty_iff {t : Trace I} : isEmpty t = true ↔ t = ⟦[]⟧ := by
227222 apply Iff.intro
228223 · intro h
229224 rcases t with ⟨s⟩
@@ -234,10 +229,10 @@ lemma isEmpty_iff {t : Trace I} : t.isEmpty = true ↔ t = ⟦[]⟧ := by
234229 rfl
235230
236231lemma traceFlatten_filter_not_isEmpty :
237- ∀ {L : List (Trace I)}, traceFlatten (List.filter (!·. isEmpty) L) = traceFlatten L
232+ ∀ {L : List (Trace I)}, traceFlatten (List.filter (!isEmpty · ) L) = traceFlatten L
238233 | [] => rfl
239234 | t :: L => by
240- by_cases ht : t. isEmpty
235+ by_cases ht : isEmpty t
241236 · apply isEmpty_iff.mp at ht
242237 simp [ht]
243238 simp [show isEmpty ⟦[]⟧ = true from rfl]
@@ -271,11 +266,11 @@ lemma kstar_eq_minusEps_trace (T : Set (Trace I)) : kstar (T \ {⟦[]⟧}) = kst
271266 simp [ht]
272267 exact fun y hy => Set.diff_subset (hls y hy)
273268 · intro ⟨ls, hls, ht⟩
274- use ls.filter (!·. isEmpty)
269+ use ls.filter (!isEmpty · )
275270 simp
276271 apply And.intro
277272 · intro y hy hyz
278- exact ⟨hls y hy, Trace. isEmpty_iff.ne.mp (ne_true_of_eq_false hyz)⟩
273+ exact ⟨hls y hy, isEmpty_iff.ne.mp (ne_true_of_eq_false hyz)⟩
279274 · simp [traceFlatten_filter_not_isEmpty, ht]
280275
281276end TraceTheory
0 commit comments