fact: Fixpoint replace3_Index3 {m : nat} {As : Vector.t A m} {Bs : ilist3 As} (i3l : i3list C Bs) (n : Fin.t m) (new_c : C (ith3 Bs n)) : i3list C Bs := match n in Fin.t m return forall (As : Vector.t A m) (Bs : ilist3 As), i3list C Bs -> C (ith3 Bs n) -> i3list C Bs with | Fin.F1 k => fun As Bs i3l new_c => Vector.caseS (fun n As => forall (Bs : ilist3 As), i3list C Bs -> C (ith3 Bs (@Fin.F1 n)) -> i3list C Bs) (fun a' n' As' (Bs' : ilist3 (a' :: As')) i3l' new_c => i3cons new_c (prim_snd i3l') ) As Bs i3l new_c | Fin.FS k n'' => fun As Bs i3l new_c => Vector.caseS (fun n' As => forall (i : Fin.t n') (Bs'' : ilist3 As), i3list C Bs'' -> C (ith3 Bs'' (@Fin.FS n' i)) -> i3list C Bs'') (fun a' n' As' n'' (Bs' : ilist3 (a' :: As')) i3l' new_c => i3cons (prim_fst i3l') (replace3_Index3 (prim_snd i3l') n'' new_c)) As n'' Bs i3l new_c end As Bs i3l new_c.
imports: Coq.Lists.List Coq.Strings.String Coq.Arith.Arith Fiat.Common.ilist Fiat.Common.ilist3