intuition.
eapply leRat_impl_eqRat.
eapply (leRat_ratAdd_same_r (evalDist c a)).
eapply leRat_trans.
2:{
eapply eqRat_impl_leRat.
rewrite H0.
eapply ratAdd_0_l.
}
assert ( evalDist c b + evalDist c a ==
sumList (a :: b :: nil)%list (evalDist c)).
repeat rewrite sumList_cons.
rewrite ratAdd_comm.
eapply ratAdd_eqRat_compat; intuition.
rewrite ratAdd_0_r at 1.
eapply ratAdd_eqRat_compat; intuition.
unfold sumList; simpl; intuition.
rewrite H2.
eapply evalDist_le_1_gen; intuition.
econstructor.
simpl; intuition.
econstructor; simpl; intuition.
econstructor.
eapply rat0_le_all.
Qed.
Local Open Scope comp_scope.

(* Specifications: *)
Theorem EqDec_pair_l
: forall (A B : Set)(eqd : EqDec (A * B))(b : B),
EqDec A.