(* == 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_eq2 :
forall (n m : nat) (x : list nat),
ins n (Cons nat m x) =
si (list nat) (inf_egal n m) (Cons nat n (Cons nat m x))
(Cons nat m (ins n x)).