Global Instance Finite_prod {X Y} `{Finite X, Finite Y} : Finite (X * Y).
Definition indicate (b : bool) : Q :=
if b then 1 else 0.
Definition indicate_nat (b : bool) : nat :=
if b then 1 else O.

Lemma card_rev_uniform {X} `{Finite X} (d : dist X) :
(forall x, eval_dist d (Classes.eqb x) == 1 / Q_of_nat (card X)) ->
uniform d.