Definition iso1 a (x: t a) : {x : t unit & Vector.t a (size x)} :=
 let s := coalg traverse unit x in
 existT (fun x : t unit => Vector.t a (size x)) (peek (k:=s) (Vector.const tt _)) 
 (eq_rect _ (Vector.t a) (pos s) _ (eq_sym (dim_preservation _ _ _))).Definition iso2 a (y : {x : t unit & Vector.t a (size x)}) : t a :=
 let (t,s) := y in
 peek (k:=coalg traverse a t) (eq_rect _ (Vector.t a) s _ (eq_sym (free_b_dim _ _ _ _))).

Lemma iso_coalg a b (x : t a) : (let (s,v) := iso1 x in kleeneStore (fun b => iso2 (existT _ s b)) v) = traverse a b x.