Section SumList.
Variable A : Set.
Definition sumList(ls : list A)(f : A -> Rat) := fold_left (fun a b => a + (f b)) ls 0.
(* Facts about sumList *)

Theorem sumList_ne_0 : forall (ls : list A)(f : A -> Rat),
~ (sumList ls f) == 0 ->
exists b : _,
In b ls /\
~ ((f b) == 0).