proposition: Lemma constructive_indefinite_ground_description_Z: forall P : Z -> Prop, (forall z : Z, {P z} + {~ P z}) -> (exists z : Z, P z) -> {z : Z | P z}.
proof: Proof. apply (constructive_indefinite_ground_description Z Z_inj_nat Z_inj_nat_rev Z_inj_nat_id). Qed.
imports: ZArith ConstructiveEpsilon