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 iso1_iso2 a (y : {x : t unit & Vector.t a (size x)}) : (iso1 (iso2 y)) = y.