induction l.
simpl.
intros.
apply vec.sorted_one.
intros.
pose proof (vec.sorted_tail H).
apply IHl in H0.
simpl.
case_eq (le x a); intro.
simpl.
apply vec.sorted_more...
simpl.
apply vec.sorted_cons'...
pose proof (le_yippee H1).
intros.
rewrite vec.list_round_trip in H3.
unfold R.
destruct (Permutation_in _ (insert_perm x l) H3).
subst...
simpl in H.
apply (vec.sorted_cons_inv' preorder_R H).
rewrite vec.list_round_trip...
Qed.
Definition isort: list T -> list T := fold_right insert nil.

(* Specifications: *)
Lemma isort_permutes l: Permutation (isort l) l.
Proof with auto.