Proof with auto.
induction n.
intros.
rewrite (eq_nil a).
rewrite (eq_nil b).
apply perm_nil.
pattern a. apply S_rect. clear a. intros ha ta.
pattern b. apply S_rect. clear b. intros hb tb.
intros.
assert (List.In ha (Vector.cons hb tb)).
apply H0.
left...
destruct (In_inv_perm ha (Vector.cons hb tb) H1).
apply perm_trans with (Vector.cons ha x)...
apply perm_skip.
apply IHn.
inversion_clear H...
cut (List.incl ta (Vector.cons ha x)).
intros.
simpl in H3.
do 2 intro.
destruct (H3 _ H4)...
subst.
inversion_clear H.
elimtype False...
apply List.incl_tran with (to_list (Vector.cons hb tb)).
do 2 intro.
apply H0.
right...
apply Permutation_incl.
apply Permutation.Permutation_sym.
apply List_Permutation...
Qed.

(* Specifications: *)
Lemma In_nats_inv z y (x: natBelow (y + z)): List.In x (nats y z) -> y <= x < z + y.
Proof with auto.