(* maybe it would be nicer to have this one as the primitive, and natBelow_S_inv above as the derived one *)

Fixpoint nth X (n: nat) (v: Vector.t X n): natBelow n -> X :=
  match v with
  | Vector.nil => fun nb => natBelow0_rect nb _
  | Vector.cons h k t => fun nb => natBelow_S_bla nb h (nth t)
  end.

Lemma to_list_app A n (v: Vector.t A n) m (w: Vector.t A m): to_list (app v w) = List.app (to_list v) (to_list w).