proposition: Lemma Z_countable: CountableT Z.
proof: Proof. destruct countable_nat_product as [f], positive_countable as [g]. exists (fun n:Z => match n with | Z0 => f (0, 0) | Zpos p => f (1, g p) | Zneg p => f (2, g p) end). intros [|p1|p1] [|p2|p2] H1; apply H in H1; discriminate H1 + trivial; injection H1 as H1; f_equal; auto. Qed.
imports: FiniteTypes Relation_Definitions ZArith QArith IndexedFamilies InfiniteTypes CSB DecidableDec FunctionalExtensionality ProofIrrelevance DependentTypeChoice ClassicalChoice Arith ArithRing