Global Instance enumerable_list (LX : enumT X) : enumT (list X).

(* Specifications: *)
Lemma enumerable__T_list X : enumerable__T X -> enumerable__T (list X).
Lemma enumerable_disj X (p q : X -> Prop) : enumerable p -> enumerable q -> enumerable (fun x => p x \/ q x).
Lemma enumerable_conj X (p q : X -> Prop) : discrete X -> enumerable p -> enumerable q -> enumerable (fun x => p x /\ q x).
Lemma projection X Y (p : X * Y -> Prop) : enumerable p -> enumerable (fun x => exists y, p (x,y)).
Lemma projection' X Y (p : X * Y -> Prop) : enumerable p -> enumerable (fun y => exists x, p (x,y)).