Skip to content

Commit d81ddd0

Browse files
Prove dflatten_splitSum
Co-authored-by: Aristotle (Harmonic) <aristotle-harmonic@harmonic.fun>
1 parent fad5cbf commit d81ddd0

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

ArkLib/Data/Fin/Sigma.lean

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,6 @@ theorem dflatten_two_eq_append {n : Fin 2 → ℕ} {motive : (k : Fin (vsum n))
210210
-- | zero => exact Fin.elim0 k
211211
-- | succ m ih => sorry
212212

213-
@[simp]
214-
theorem dflatten_splitSum {m : ℕ} {n : Fin m → ℕ} {motive : (k : Fin (vsum n)) → Sort*}
215-
(v : (k : Fin (vsum n)) → motive k) (k : Fin (vsum n)) :
216-
dflatten (motive := motive) (fun i j => v (embedSum i j)) k = v k := by
217-
induction m with
218-
| zero => exact Fin.elim0 k
219-
| succ m ih =>
220-
sorry
221-
222213
@[simp]
223214
theorem dflatten_embedSum {m : ℕ} {n : Fin m → ℕ} {motive : (k : Fin (vsum n)) → Sort*}
224215
(v : (i : Fin m) → (j : Fin (n i)) → motive (embedSum i j)) (i : Fin m) (j : Fin (n i)) :
@@ -233,6 +224,13 @@ theorem dflatten_embedSum {m : ℕ} {n : Fin m → ℕ} {motive : (k : Fin (vsum
233224
erw [dappend_right]
234225
exact ih (motive := fun i => motive (natAdd (n 0) i)) (fun i => v i.succ) i j
235226

227+
@[simp]
228+
theorem dflatten_splitSum {m : ℕ} {n : Fin m → ℕ} {motive : (k : Fin (vsum n)) → Sort*}
229+
(v : (k : Fin (vsum n)) → motive k) (k : Fin (vsum n)) :
230+
dflatten (motive := motive) (fun i j => v (embedSum i j)) k = v k := by
231+
rw [← embedSum_splitSum k]
232+
exact dflatten_embedSum (fun i j => v (embedSum i j)) (splitSum k).1 (splitSum k).2
233+
236234
/-- Homogeneous flatten: flattens a nested homogeneous vector
237235
`(i : Fin m) → (j : Fin (n i)) → α` into a single homogeneous vector `Fin (vsum n) → α`
238236
by specializing `dflatten` to the constant-type motive `fun _ => α`. -/

0 commit comments

Comments
 (0)