@@ -81,16 +81,16 @@ if `xl` makes `na` go through an accepting state of `na`, then so can `yl`. -/
8181lemma buchiCongruence_transfer
8282 {a : Quotient na.BuchiCongruence.eq} {xl yl : List Symbol} {s t : State}
8383 (hc : xl ∈ na.BuchiCongruence.eqvCls a) (hc' : yl ∈ na.BuchiCongruence.eqvCls a)
84- (hp : xl ∈ na.pairLang s t) : ∃ sl, na.IsExecution s yl t sl ∧
84+ (hp : xl ∈ na.pairLang s t) : ∃ sl, na.Execution s yl t sl ∧
8585 ( xl ∈ na.pairViaLang na.accept s t → ∃ r ∈ na.accept, r ∈ sl ) := by
8686 have h_eq : na.BuchiCongruence.eq xl yl := by
8787 apply Quotient.exact
8888 grind
8989 have := h_eq s t
9090 have h_yl : yl ∈ na.pairLang s t := by grind
91- have := LTS.mTr_extract_isExecution h_yl
92- grind [LTS.mem_pairViaLang, LTS.IsExecution , → LTS.IsExecution .comp,
93- → LTS.mTr_extract_isExecution ]
91+ have := LTS.execution_of_mTr h_yl
92+ grind [LTS.mem_pairViaLang, LTS.Execution , → LTS.Execution .comp,
93+ → LTS.execution_of_mTr ]
9494
9595/-- `na.buchiFamily` is a family of ω-languages indexed by a pair of equivalence classes
9696of `na.BuchiCongruence` which will turn out to saturate the ω-language accepted by `na`
@@ -110,7 +110,8 @@ theorem mem_buchiFamily [Inhabited Symbol]
110110-- because that proof was too big and kept exceeding the default `maxHeartbeats`.
111111private lemma frequently_via_accept [Inhabited Symbol]
112112 {xl : List Symbol} {xls : ωSequence (List Symbol)} {ss : ωSequence State}
113- (h_acc : ∃ᶠ (k : ℕ) in atTop, ss k ∈ na.accept) (h_exec : na.ωTr ss (xl ++ω xls.flatten))
113+ (h_acc : ∃ᶠ (k : ℕ) in atTop, ss k ∈ na.accept)
114+ (h_exec : na.OmegaExecution ss (xl ++ω xls.flatten))
114115 (h_xls_p : ∀ (k : ℕ), (xls k).length > 0 )
115116 (f : ℕ → ℕ) (h_f : f = fun k => xl.length + xls.cumLen k)
116117 (ts : ωSequence State) (h_ts : ts = ωSequence.mk (fun k ↦ ss (f k))) :
@@ -121,7 +122,8 @@ private lemma frequently_via_accept [Inhabited Symbol]
121122 apply LTS.mem_pairViaLang.mpr
122123 use ss (f n + k), by grind, (xls n).take k, (xls n).drop k
123124 have := extract_flatten h_xls_p n
124- have exec {m n} (h : m ≤ n) := LTS.isExecution_mTr na.toLTS <| LTS.ωTr_isExecution h_exec h
125+ have exec {m n} (h : m ≤ n) :=
126+ LTS.mTr_of_execution na.toLTS <| LTS.OmegaExecution.extract_execution h_exec h
125127 split_ands
126128 · have h : f n ≤ f n + k := by lia
127129 specialize exec h
@@ -141,24 +143,25 @@ theorem buchiFamily_saturation [Inhabited Symbol] : Saturates na.buchiFamily (la
141143 let ts := ωSequence.mk (fun k ↦ ss (f k))
142144 have h_xls_p (k : ℕ) : (xls k).length > 0 := by grind [Language.mem_sub_one]
143145 have h_xls_e (k : ℕ) : xls k ∈ na.pairLang (ts k) (ts (k + 1 )) := by
144- grind [LTS.ωTr_mTr h_exec (?_ : f k ≤ f (k + 1 )), LTS.mem_pairLang, extract_append_right_right ,
145- add_tsub_cancel_left]
146+ grind [LTS.OmegaExecution.extract_mTr h_exec (?_ : f k ≤ f (k + 1 )), LTS.mem_pairLang,
147+ extract_append_right_right, add_tsub_cancel_left]
146148 have h_yls (k : ℕ) := buchiCongruence_transfer ((h_xls_c k).left) ((h_yls_c k).left) (h_xls_e k)
147149 choose sls h_yls_e h_yls_a using h_yls
148150 have h_yls_p (k : ℕ) : (yls k).length > 0 := by grind [Language.mem_sub_one]
149- obtain ⟨ss1, h_ss1_run, h_ss1_seg⟩ := LTS.IsExecution.flatten h_yls_e h_yls_p
151+ obtain ⟨ss1, h_ss1_run, h_ss1_seg⟩ := LTS.OmegaExecution.flatten_execution h_yls_e h_yls_p
150152 suffices ∃ᶠ (k : ℕ) in atTop, ss1 k ∈ na.accept by
151153 have h_xl_e : xl ∈ na.pairLang (ss 0 ) (ts 0 ) := by
152- grind [LTS.ωTr_mTr h_exec (?_ : 0 ≤ xl.length), extract_append_zero_right, LTS.mem_pairLang]
154+ grind [LTS.OmegaExecution.extract_mTr h_exec (?_ : 0 ≤ xl.length),
155+ extract_append_zero_right, LTS.mem_pairLang]
153156 have h_yl_e : yl ∈ na.pairLang (ss 0 ) (ts 0 ) := by
154- grind [buchiCongruence_transfer h_xl_c h_yl_c h_xl_e, LTS.mem_pairLang, LTS.isExecution_mTr ]
157+ grind [buchiCongruence_transfer h_xl_c h_yl_c h_xl_e, LTS.mem_pairLang, LTS.mTr_of_execution ]
155158 have h_ss1_ts : ss1 0 = ts 0 := by
156159 have h : 0 < yls.cumLen 1 - yls.cumLen 0 := by grind
157160 have : 0 < (sls 0 ).length := by grind
158161 have : ss1 0 = (sls 0 )[0 ] := by grind [get_extract (xs := ss1) h]
159162 have : (sls 0 )[0 ] = ts 0 := h_yls_e 0 |>.choose_spec |>.1
160163 grind
161- obtain ⟨ss2, _, _, _, _⟩ := LTS.ωTr .append h_yl_e h_ss1_run h_ss1_ts
164+ obtain ⟨ss2, _, _, _, _⟩ := LTS.OmegaExecution .append h_yl_e h_ss1_run h_ss1_ts
162165 use ss2
163166 have := @drop_frequently_iff_frequently _ ss2 na.accept yl.length
164167 grind [Run.mk]
0 commit comments