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

(* Specifications: *)
Lemma discrete_bool : discrete bool.
Lemma discrete_nat : discrete nat.
Lemma discrete_nat_nat : discrete (nat * nat).