(* Sorting by insertion *)
Fixpoint isort (l : list A) : list A :=
  match l with
  | nil => nil
  | b :: l1 => insert b (isort l1)
  end.

(* Specifications: *)
Theorem isort_ordered : forall l : list A, ordered order (isort l).
Theorem isort_permutation : forall l : list A, permutation l (isort l).