Section ListOps.
Variable A : Type.
(*************************)
(** ** Reverse           *)
(*************************)
Fixpoint rev (l:list A) : list A :=
match l with
| [] => []
| x :: l' => rev l' ++ [x]
end.

Lemma rev_app_distr : forall x y:list A, rev (x ++ y) = rev y ++ rev x.