intuition.
unfold rndListElem in *.
case_eq (length ls); intuition.
destruct ls; simpl in *; trivial; discriminate.
rewrite H0 in H.
repeat simp_in_support.
apply RndNat_support_lt in H1.
edestruct (nth_option_some ls); eauto.
rewrite H0.
eauto.
congruence.
subst.
simpl.
intuition.
Qed.

(* Specifications: *)
Theorem rndListElem_uniform :
forall (A : Set)(eqd : EqDec A)(ls : list A)(a1 a2 : option A),
NoDup ls ->
In a1 (getSupport (rndListElem _ ls)) ->
In a2 (getSupport (rndListElem _ ls)) ->
evalDist (rndListElem _ ls) a1 ==
evalDist (rndListElem _ ls) a2.