(*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 list_eq_nth_error X (xs ys : list X) :
(forall n, nth_error xs n = nth_error ys n) -> xs = ys.