Section prodl.
Fixpoint prodl (l : list nat) : nat :=
match l with
| nil => 1
| n :: l' => n * prodl l'
end.
End prodl.
Definition clos_refl {A : Type} (R : A -> A -> Prop) (x y : A) : Prop :=
R x y \/ x = y.

Lemma Forall2_map (A:Type) (B:Type): forall l f g (R:B->B->Prop),
(forall (x:A), In x l -> R (f x) (g x)) -> Forall2 R (map f l) (map g l).