intuition.
rewrite evalDist_seq_step.
eapply eqRat_trans.
eapply sumList_body_eq.
intros.
eapply ratMult_eqRat_compat.
eapply RndNat_prob.
eapply RndNat_support_lt.
trivial.
eapply eqRat_refl.
rewrite sumList_factor_constant_l.
eapply ratMult_eqRat_compat; intuition.
eapply sumList_permutation.
eapply NoDup_Permutation.
eapply getSupport_NoDup.
eapply allNatsLt_NoDup.
intuition.
eapply allNatsLt_lt_if.
eapply RndNat_support_lt.
trivial.
eapply in_getSupport_RndNat.
eapply allNatsLt_lt.
trivial.
Qed.

(* Specifications: *)
Lemma rndNat_sumList :
forall (A : Set)(f : nat -> Comp A) n (nzn : nz n) x,
evalDist (i <-$ RndNat n; f i) x ==
sumList (forNats n) (fun i => (1 / n) * (evalDist (f i) x)).