induction v in n, m |- *.
simpl.
intros.
left.
rewrite nb_val_eq_rec_r...
simpl.
intros.
repeat rewrite nb_val_eq_rec_r.
simpl.
cset (IHv n m).
simpl in H.
rewrite nb_val_eq_rec_r in H.
destruct H.
right.
left.
simpl.
simpl in H.
apply eq_S...
rewrite map_map in H.
rewrite <- List_map in H.
destruct (In_map_inv H). clear H.
destruct H0.
unfold compose in H.
rewrite nb_val_eq_rec_r in H.
simpl.
right.
right.
rewrite map_map.
rewrite map_map.
unfold compose.
assert (ext_eq (fun x1: natBelow (S (S (m + (v + n)))) => nb_val (eq_rec_r natBelow (eq_rec_r natBelow x1 (eq_S (m + S (v + n)) (S (m + (v + n))) (trans_plus_n_Sm m (v + n)))) (trans_plus_n_Sm m (S (v + n))))) nb_val).
intro.
repeat rewrite nb_val_eq_rec_r...
rewrite (map_ext H1).
replace (S (v + m)) with (nb_val (Snb x)).
rewrite <- List_map.
apply List.in_map.
apply (In_nats_S (v + n) (S m))...
clear H1 H0.
destruct x.
simpl in *.
apply eq_S...
Qed.

(* Specifications: *)
Lemma In_nb_nats' x m n: m <= x -> x < m + n -> List.In x (nb_nats m n).
Proof with auto.