induction ls; intuition.
inversion H; subst; clear H.
apply ratMult_0 in H0.
destruct H0.
econstructor; trivial.
exfalso.
eapply rat_num_nz; [idtac | eapply H].
eapply posnat_pos.
inversion H; clear H; subst.
symmetry in H5.
apply ratMult_inverse in H5.
rewrite ratMult_distrib_r in H5.
symmetry in H5.
econstructor; eauto.
eapply IHls.
eapply sumList_rel_body_eq.
eapply H2.
intuition.
rewrite ratMult_assoc.
rewrite <- ratMult_1_r at 1.
eapply ratMult_eqRat_compat; intuition.
rewrite <- ratMult_num_den.
symmetry.
eapply num_dem_same_rat1.
unfold posnatMult, natToPosnat, posnatToNat.
destruct p1.
destruct p2.
apply mult_comm.
trivial.
Qed.

(* Specifications: *)
Lemma sumList_rel_permutation : forall (A : Type)(rel : A -> Rat -> Prop)(ls1 ls2 : list A),
Permutation ls1 ls2 ->
forall r,
sumList_rel rel ls1 r ->
sumList_rel rel ls2 r.