Section fixL.
Variables (LX : enumT X).
Fixpoint T_list (n : nat) : list (list X) :=
match n
with
| 0 => [ [] ]
| S n => T_list n ++ [ x :: L | (x,L) ∈ (L_T X n × T_list n) ]
end.
End fixL.
Global Instance enumerable_list (LX : enumT X) : enumT (list X).
End enumerable_list.

Lemma enumerable_disj X (p q : X -> Prop) :
enumerable p -> enumerable q -> enumerable (fun x => p x \/ q x).