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

Lemma suml_map_le_plus_length :
forall (A : Type)(f g : A -> nat)(l : list A),
(forall x, In x l -> f x <= g x + 1) -> suml (map f l) <= suml (map g l) + length l.