(* Relating Cint and Cnat. *)

(* Specifications: *)
Lemma Cint_Cnat : {subset Cnat <= Cint}.
Lemma Cnat_norm_Cint x : x \in Cint -> `|x| \in Cnat.
Lemma CnatEint x : (x \in Cnat) = (x \in Cint) && (0 <= x).
Lemma CintEge0 x : 0 <= x -> (x \in Cint) = (x \in Cnat).
Lemma norm_Cint_ge1 x : x \in Cint -> x != 0 -> 1 <= `|x|.
Lemma sqr_Cint_ge1 x : x \in Cint -> x != 0 -> 1 <= x ^+ 2.
Lemma Cint_ler_sqr x : x \in Cint -> x <= x ^+ 2.
(* Integer divisibility. *)
Lemma dvdCP x y : reflect (exists2 z, z \in Cint & y = z * x) (x %| y)%C.
Lemma dvdCP_nat x y : 0 <= x -> 0 <= y -> (x %| y)%C -> {n | y = n%:R * x}.
Lemma dvdC0 x : (x %| 0)%C.
Lemma dvdC_mulr x y z : y \in Cint -> (x %| z)%C -> (x %| z * y)%C.
Lemma dvdC_mul2l x y z : y != 0 -> (y * x %| y * z)%C = (x %| z)%C.
Canonical dvdC_keyed x := KeyedPred (dvdC_key x).