Section suml.
Fixpoint suml (l : list nat) : nat :=
match l with
| nil => 0
| n :: l' => n + suml l'
end.

Lemma suml_map_mult_le_suml_mult_maxl (A : Type) f g (l : list A) :
suml (map (fun x => f x * g x) l) <= suml (map f l) * maxl (map g l).