@@ -202,6 +202,17 @@ noncomputable def ccDec_aux' (I : Independence α) (w₀ w : List α) : List (Li
202202 then (a :: b :: v) :: vs
203203 else [a] :: (b :: v) :: vs
204204
205+ noncomputable def ccDec_aux_conn (I : Independence α) (w₀ w : List α) : Prop :=
206+ match w with
207+ | [] => False
208+ | a :: w =>
209+ match ccDec_aux' I w₀ w with
210+ | [] => False
211+ | v :: _ =>
212+ match v with
213+ | [] => False
214+ | b :: _ => dependencyTransClosureInL I w₀ a b
215+
205216lemma ccDec'_aux_nonempty' (w₀ w : List α) : (ccDec_aux' I w₀ w) ≠ [] := by
206217 induction w with
207218 | nil => simp [ccDec_aux']
@@ -218,6 +229,48 @@ lemma ccDec'_aux_nonempty' (w₀ w : List α) : (ccDec_aux' I w₀ w) ≠ [] :=
218229 by_cases hab : dependencyTransClosureInL I w₀ a b
219230 all_goals simp [hab]
220231
232+ lemma ccDec_aux'_len_C (u w : List α) (a : α) (h : ccDec_aux_conn I u (a :: w)) :
233+ (ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length := by
234+ simp [ccDec_aux_conn] at h
235+ let t := ccDec_aux' I u w
236+ have ht : ccDec_aux' I u w = t := rfl
237+ rcases t
238+ · simp [ht] at h
239+ · rename_i c_head c_tail
240+ simp [ht] at h
241+ cases c_head with
242+ | nil => simp at h
243+ | cons b c_head =>
244+ simp at h
245+ simp [ccDec_aux', ht, h]
246+
247+ lemma ccDec_aux'_len_D (u w : List α) (a : α) (h : ¬ ccDec_aux_conn I u (a :: w)) (hw : w ≠ []) :
248+ (ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length + 1 := by
249+ simp [ccDec_aux_conn] at h
250+ let t := ccDec_aux' I u w
251+ have ht : ccDec_aux' I u w = t := rfl
252+ rcases t
253+ · exfalso
254+ exact ccDec'_aux_nonempty' _ _ ht
255+ · rename_i c_head c_tail
256+ simp [ht] at h
257+ cases c_head with
258+ | nil =>
259+ cases w with
260+ | nil => simp at hw
261+ | cons b w =>
262+ simp [ccDec_aux'] at ht
263+ let t' := ccDec_aux' I u w
264+ have ht' : ccDec_aux' I u w = t' := rfl
265+ rcases t'
266+ · exfalso
267+ exact ccDec'_aux_nonempty' _ _ ht'
268+ · rename_i c'_head c'_tail
269+ simp [ht'] at ht
270+ | cons b c_head =>
271+ simp at h
272+ simp [ccDec_aux', ht, h]
273+
221274lemma ccDec'_aux_len (u w : List α) (a : α) :
222275 (ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length ∨
223276 (ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length + 1 := by
@@ -233,12 +286,31 @@ lemma ccDec'_aux_len (u w : List α) (a : α) :
233286 by_cases hab : dependencyTransClosureInL I u a b
234287 all_goals simp [hab]
235288
289+ lemma ccDec'_aux_offset (u w : List α) (a : α) :
290+ (∀ i, ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length ∨
291+ (ccDec_aux' I u (a :: w)).length = (ccDec_aux' I u w).length + 1 := by
292+ simp [ccDec_aux']
293+ cases ccDec_aux' I u w
294+ · simp
295+ · rename_i c_head c_tail
296+ simp
297+ cases c_head with
298+ | nil => simp
299+ | cons b c_head =>
300+ simp
301+ by_cases hab : dependencyTransClosureInL I u a b
302+ all_goals simp [hab]
303+
236304lemma ccDec'_aux_len_le (u w : List α) (a : α) :
237305 (ccDec_aux' I u w).length ≤ (ccDec_aux' I u (a :: w)).length := by
238306 cases ccDec'_aux_len u w a with
239307 | inl h => rw [h]
240308 | inr h => simp [h]
241309
310+ lemma ccDec'_aux_sub_idx (u w : List α) (a : α) (i : Fin (ccDec_aux' I u (a :: w)).length) (hiz : i.1 > 0 ) :
311+ ∃ j : Fin (ccDec_aux' I u w).length, (ccDec_aux' I u (a :: w))[i] = (ccDec_aux' I u w)[j] := by
312+ sorry
313+
242314lemma ccDec'_aux_nonempty (u w : List α) (i : ℕ) (hi : i < (ccDec_aux' I u w).length) (hz : w ≠ []) :
243315 (ccDec_aux' I u w)[i] ≠ [] := by
244316 induction w generalizing i with
@@ -263,37 +335,39 @@ lemma ccDec'_aux_nonempty (u w : List α) (i : ℕ) (hi : i < (ccDec_aux' I u w)
263335 simp
264336 by_cases hab : dependencyTransClosureInL I u a b
265337 all_goals simp [hab]
266- · -- cases a
267- have : (ccDec_aux' I u (a :: w))[i] = (ccDec_aux' I u w)[i]'sorry ∨ (ccDec_aux' I u (a :: w))[i] = (ccDec_aux' I u w)[i - 1 ]'sorry := by
268- simp [ccDec_aux']
269- /- cases ccDec_aux' I u w
270- · simp
271- · rename_i c_head c_tail
272- simp
273- cases c_head with
274- | nil => simp
275- | cons b c_head =>
276- simp
277- by_cases hab : dependencyTransClosureInL I u a b
278- all_goals simp [ hab ] -/
279- sorry
280- cases this with
281- | inl h =>
282- rw [h]
283- apply ih
284- by_contra hz
285- simp [ccDec_aux', hz] at hi
286- exact hiz hi
287- | inr h =>
288- rw [h]
289- have : i - 1 < (ccDec_aux' I u w).length := by sorry
290- apply ih (i - 1 ) this
291- by_contra hz
292- simp [ccDec_aux', hz] at hi
338+ · have hw : w ≠ [] := by
339+ by_contra hw
340+ simp [hw, ccDec_aux'] at hi
293341 exact hiz hi
342+ have ⟨⟨j, hj⟩, hjw⟩ := ccDec'_aux_sub_idx u w a ⟨i, hi⟩ (Nat.zero_lt_of_ne_zero hiz)
343+ simp at hjw
344+ rw [hjw]
345+ exact ih j hj hw
294346
295-
296-
347+ lemma ccDec'_subst (u w : List α) (p : α) (i : ℕ) (hi : i + 1 < (ccDec_aux' I u w).length) :
348+ List.Sublist ((ccDec_aux' I u w)[i] ++ (ccDec_aux' I u w)[i + 1 ]) w := by
349+ induction w generalizing i with
350+ | nil => simp [ccDec_aux'] at hi
351+ | cons a w ih =>
352+ by_cases hiz : i = 0
353+ · simp [hiz]
354+ sorry
355+ ·
356+ have ⟨⟨j, hj⟩, hjw⟩ := ccDec'_aux_sub_idx u w a ⟨i, by omega⟩ (Nat.zero_lt_of_ne_zero hiz)
357+ simp at hjw
358+ rw [hjw]
359+ exact ih j hj
360+ cases ccDec_aux' I u w
361+ · simp
362+ · rename_i c_head c_tail
363+ simp
364+ cases c_head with
365+ | nil => simp
366+ | cons b c_head =>
367+ simp
368+ by_cases hab : dependencyTransClosureInL I w a b
369+ all_goals simp [hab]
370+ all_goals apply List.Sublist.cons
297371
298372noncomputable def ccDec_aux (I : Independence α) (w₀ w : List α) (p : α) : List (List α × List α) :=
299373 match w with
0 commit comments