Section fixLs.
Variables (L_X : enumT X).
Variables (L_Y : enumT Y).
Fixpoint T_prod (n : nat) : list (X * Y) :=
match n
with
| 0 => [ (x,y) | (x,y) ∈ (L_T X 0 × L_T Y 0) ]
| S n => T_prod n ++ [ (x,y) | (x,y) ∈ (L_T X n  × L_T Y n) ]
end.
End fixLs.
Global Instance prod_enumerable (LX : enumT X) (LY : enumT Y) : enumT (X * Y).

Lemma C_longenough n : length (L_T (nat * nat) n) > n.