intros.
destruct (vec.Permutation_mapping (vec.perm_sym (vec.insertion_sort_permutes (@Ele T) (@Ele_le_dec T) ol))).
destruct H.
exists (vec.to_list x).
split.
rewrite vec.List_map...
apply vec.eq_list.
symmetry...
unfold IndexSeq.
intros.
unfold IndexIn.
rewrite vec.length in H2.
simpl in H2.
destruct (lt_exists_plus H2). clear H2.
clear H0.
revert H.
revert x.
rewrite H3. clear H3. intros.
cut (In (mkNatBelow i x0) (vec.to_list x))...
intros.
apply (in_map nb_val _ _ H0).
Qed.

(* Specifications: *)
Lemma IndexSeq_filterLt e n : forall b l, length l = n ->
IndexSeq b l -> IndexSeq b (filter (fun f => unsum_bool (cmp_cmp (Ecmp UE f e) Lt)) l).