Proof with auto.
intros.
unfold IndexSeq.
intros.
unfold IndexIn.
apply Permutation.Permutation_in with (vec.to_list (vec.nb_nats b n)).
apply Permutation.Permutation_sym.
cset (vec.List_Permutation H).
rewrite <- vec.List_map in H2...
rewrite vec.length in H1.
apply vec.In_nb_nats'...
Qed.
Definition IndexSeq_NoDup b l: IndexSeq b l -> NoDup l.
Proof with auto.
rewrite <- (vec.list_round_trip l).
cset (vec.from_list l).
intro.
apply (NoDup_map_inv' (@nb_val (length ol))).
rewrite vec.List_map.
assert (Permutation.Permutation (vec.map nb_val H) (vec.to_list (vec.nb_nats b (length l)))).
apply vec.List_Permutation, vec_IndexSeq_nats_perm...
rewrite H1.
unfold vec.nb_nats.
rewrite <- vec.List_map.
apply NoDup_map.
intros.
apply natBelow_unique...
apply vec.NoDup_nats.
Qed.

(* Specifications: *)
Lemma IndexSeq_inv l: forall b, IndexSeq b l -> forall t, In t l -> b <= t < b + length l.
Proof with auto with arith.