fact: Fixpoint replace_Index3 {m} (As : Vector.t A m) (il : ilist3 As) (n : Fin.t m) (new_b : B (Vector.nth As n)) {struct n} : ilist3 (B:=B) As := match n in Fin.t m return forall (As : Vector.t A m), ilist3 As -> B (Vector.nth As n) -> ilist3 As with | Fin.F1 k => fun As => Vector.caseS (fun n As => ilist3 As -> B (Vector.nth As (@Fin.F1 n)) -> ilist3 As) (fun h n t il new_b => icons3 new_b (ilist3_tl il) ) As | Fin.FS k n' => fun As => Vector_caseS' Fin.t (fun n As n' => ilist3 As -> B (Vector.nth As (@Fin.FS n n')) -> ilist3 As) (fun h n t m il new_b => icons3 (ilist3_hd il) (@replace_Index3 _ _ (ilist3_tl il) _ new_b)) As n' end As il new_b.
imports: Coq.Lists.List Coq.Strings.String Coq.Arith.Arith Fiat.Common.ilist Fiat.Common