induction z in y, x |- *.
intros.
elimtype False...
simpl.
rewrite <- List_map.
intro.
destruct H.
subst.
rewrite nb_val_eq_rec_r.
simpl.
omega.
destruct (In_map_inv H). clear H.
destruct H0.
subst.
rewrite nb_val_eq_rec_r.
destruct (IHz (S y) x0 H0).
split.
apply le_Sn_le...
rewrite <- plus_n_Sm in H1...
Qed.

(* Specifications: *)
Lemma In_nb_nats_inv z y x: List.In x (nb_nats y z) -> y <= x < z + y.
Lemma NoDup_nats y x: List.NoDup (nats x y).
Proof with auto. (* todo: proof way too long *)
induction y in x |- *.