(*For compability:  A more cbn-friendly version of Vector.to_list *)
(* TODO: rework such that every lemma is in terms of Vector.to_list and we can use vector_to_list_correct to transfer? *)
Fixpoint vector_to_list (X : Type) (n : nat) (v : Vector.t X n) : list X :=
match v with
| Vector.nil _ => List.nil
| Vector.cons _ x n v' => x :: vector_to_list v'
end.
induction v.
- cbn. auto.
- cbn. f_equal. auto.
Qed.

Lemma vector_app_to_list X k k' (xs : Vector.t X k) (ys : Vector.t X k'):
vector_to_list (Vector.append xs ys) = vector_to_list xs ++ vector_to_list ys.