(* == Tri par insertion *)

Fixpoint ins (n : nat) (l : list nat) {struct l} : 
 list nat :=
  match l with
  | Nil => Cons nat n (Nil nat)
  | Cons m x =>
      si (list nat) (inf_egal n m) (Cons nat n (Cons nat m x))
        (Cons nat m (ins n x))
  end.

Lemma ins_eq1 : forall n : nat, ins n (Nil nat) = Cons nat n (Nil nat).