Section Traversable.
Variable t : Type -> Type.
Variable traverse : KleeneCoalg (fun x => x) t.
Definition size a (x:t a) : nat := dim (traverse a a x).

Lemma dim_preservation a a' b b' (x: t a) v :
dim (traverse b b' (peek (k:=traverse a b x) v)) = dim (traverse a a' x).