proposition: Lemma sumList_map : forall (A B : Set)(ls : list A)(f1 : A -> B)(f : B -> Rat), sumList (map f1 ls) f == sumList ls (fun a => f (f1 a)).
proof: Proof. induction ls; intuition; simpl in *. unfold sumList; simpl in *. intuition. repeat rewrite sumList_cons. eapply ratAdd_eqRat_compat; intuition. Qed.
imports: FCF.Rat List Permutation Arith FCF.EqDec FCF.StdNat Bool Permutation