(* 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 nb_val_eq_rec_r (k u: nat) (n: natBelow u) (h: k = u): nb_val (eq_rec_r natBelow n h) = nb_val n.