(****************************************************************)
(* 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_app : forall l n : list A, rev (l ++ n) = rev n ++ rev l.