intros l; elim l; simpl in |- *; auto.
Qed.

(* Specifications: *)
(* The result is a permutation of the original list *)
Theorem isort_permutation : forall l : list A, permutation l (isort l).
Proof using.
Theorem map_app : forall l1 l2, map f (l1 ++ l2) = map f l1 ++ map f l2.
Proof using.
Theorem first_n_skip_n_app :
forall (n : nat) (l : list A), first_n l n ++ skip_n l n = l.