(** ** 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.

Lemma discrete_nat_nat : discrete (nat * nat).
Instance enum_bool : enumT bool.