Require Export FiniteTypes.
Require Export Relation_Definitions.
Set Asymmetric Patterns.
Inductive CountableT (X:Type) : Prop :=
| intro_nat_injection: forall f:X->nat, injective f -> CountableT X.

Lemma countable_product: forall X Y:Type,
CountableT X -> CountableT Y -> CountableT (X*Y).