(** ** Enumerability of pairs of natural numbers *)
Class enumT X :=
{
L_T :> nat -> list X;
cum_T : cumulative L_T ;
el_T : forall x, exists m, x el L_T m
}.
Arguments L_T {_ _} _, _ {_} _.
Hint Immediate cum_T.

(* Specifications: *)
Lemma discrete_bool : discrete bool.
Lemma discrete_nat : discrete nat.
Lemma discrete_nat_nat : discrete (nat * nat).
Instance enum_bool : enumT bool.
Lemma count_bool :
enumerable__T bool.