(****************************************************************)
(* rev: renverse une liste *)

Fixpoint rev (l : list A) : list A :=
  
 (************************)
 match l return (list A) with
 | nil => nil
 | b :: l' => rev l' ++ b :: nil
 end.

Lemma rev_eq2 : forall (b : A) (l' : list A), rev (b :: l') = rev l' ++ b :: nil.