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 NoDup_incl_Permutation (A: Set) n (a b: Vector.t A n): List.NoDup a -> List.incl a b -> Permutation a b.