From Coq Require Export Relation_Definitions QArith ZArith.
ProofIrrelevance ClassicalChoice.
DependentTypeChoice.
From ZornsLemma Require Export FiniteTypes IndexedFamilies.
Local Close Scope Q_scope.
Set Asymmetric Patterns.
Inductive CountableT (X : Type) : Prop :=
| intro_nat_injection (f : X -> nat) : injective f -> CountableT X.

Lemma CountableT_is_FiniteT_or_countably_infinite (X : Type) :
CountableT X -> {FiniteT X} + {exists f : X -> nat, bijective f}.