Definition Countable {X:Type} (S:Ensemble X) : Prop :=
CountableT {x:X | In S x}.

(* Specifications: *)
Lemma inj_countable: forall {X Y:Type} (f:X->Y),
CountableT Y -> injective f -> CountableT X.
Lemma surj_countable: forall {X Y:Type} (f:X->Y),
CountableT X -> surjective f -> CountableT Y.
Lemma countable_downward_closed: forall {X:Type} (S T:Ensemble X),
Countable T -> Included S T -> Countable S.
Lemma countable_img: forall {X Y:Type} (f:X->Y) (S:Ensemble X),
Countable S -> Countable (Im S f).
Lemma countable_type_ensemble: forall {X:Type} (S:Ensemble X),
CountableT X -> Countable S.
Lemma FiniteT_impl_CountableT: forall X:Type,
FiniteT X -> CountableT X.
Lemma Finite_impl_Countable: forall {X:Type} (S:Ensemble X),
Finite _ S -> Countable S.