Fixpoint nats (x n: nat) {struct n}: Vector.t (natBelow (x + n)) n :=
  match n as n0 return Vector.t (natBelow (x + n0)) n0 with
  | 0 => Vector.nil
  | S n0 => map (fun d => eq_rec_r natBelow d (trans_plus_n_Sm x n0))
    (Vector.cons (mkNatBelow x n0) (nats (S x) n0))
  end.Definition nb_nats (x n: nat): Vector.t nat n := map nb_val (nats x n).

Lemma tail_map (A B: Set) (f: A -> B) n (l: Vector.t A (S n)): tail (map f l) = map f (tail l).