Fact Re_is_additive : additive Re.
Canonical Im_additive := Additive Im_is_additive.

(* Specifications: *)
Lemma Creal_ImP z : reflect ('Im z = 0) (z \is real).
Lemma Creal_ReP z : reflect ('Re z = z) (z \in real).
Lemma ReMl : {in real, forall x, {morph Re : z / x * z}}.
Lemma ReMr : {in real, forall x, {morph Re : z / z * x}}.
Lemma ImMr : {in real, forall x, {morph Im : z / z * x}}.
Lemma Re_conj z : 'Re z^* = 'Re z.
Lemma Im_rect : {in real &, forall x y, 'Im (x + 'i * y) = y}.
Lemma conjC_rect : {in real &, forall x y, (x + 'i * y)^* = x - 'i * y}.
Lemma addC_rect x1 y1 x2 y2 :
(x1 + 'i * y1) + (x2 + 'i * y2) = x1 + x2 + 'i * (y1 + y2).
Lemma normC2_rect :
{in real &, forall x y, `|x + 'i * y| ^+ 2 = x ^+ 2 + y ^+ 2}.
Lemma normC2_Re_Im z : `|z| ^+ 2 = 'Re z ^+ 2 + 'Im z ^+ 2.
Lemma lerif_normC_Re_Creal z : `|'Re z| <= `|z| ?= iff (z \is real).
Lemma lerif_Re_Creal z : 'Re z <= `|z| ?= iff (0 <= z).
(* Equality from polar coordinates, for the upper plane. *)
Lemma eqC_semipolar x y :
`|x| = `|y| -> 'Re x = 'Re y -> 0 <= 'Im x * 'Im y -> x = y.