induction ls; intuition.
unfold sumList; simpl in *.
eapply ratAdd_0_l.
repeat rewrite sumList_cons.
destruct (P a);
rewrite ratMult_0_r;
rewrite <- ratAdd_0_l;
rewrite ratMult_1_r;
rewrite IHls.
rewrite ratAdd_assoc.
intuition.
rewrite (ratAdd_comm (sumList ls (fun a0 : A => f a0 * (if P a0 then 1 else 0)))).
rewrite <- ratAdd_assoc.
rewrite <- ratAdd_comm.
intuition.
Qed.

(* Specifications: *)
Lemma sumList_le : forall (A : Set)(ls : list A)(f1 f2 : A -> Rat),
(forall a, In a ls -> f1 a <= f2 a) ->
sumList ls f1 <= sumList ls f2.