(* Strict inequality on CReal is in sort Type, for example used in the computation of division. *)
Definition CReal_mult_lt_0_compat : forall x y : CReal,
0 < x -> 0 < y -> 0 < x * y
:= fun x y Hx Hy => exist _ (proj1_sig Hx + proj1_sig Hy - 1)%Z
(CReal_mult_lt_0_compat_correct
x y Hx Hy).

(* Specifications: *)
Lemma CReal_mult_plus_distr_l : forall r1 r2 r3 : CReal,
r1 * (r2 + r3) == (r1 * r2) + (r1 * r3).
Lemma CReal_mult_plus_distr_r : forall r1 r2 r3 : CReal,
(r2 + r3) * r1 == (r2 * r1) + (r3 * r1).
Lemma CReal_opp_mult_distr_r
: forall r1 r2 : CReal, - (r1 * r2) == r1 * (- r2).
Lemma CReal_mult_proper_l : forall x y z : CReal,
y == z -> x * y == x * z.
Lemma CReal_mult_proper_r : forall x y z : CReal,
y == z -> y * x == z * x.
Lemma CReal_mult_assoc : forall x y z : CReal,
(x * y) * z == x * (y * z).
Lemma CReal_mult_1_l : forall r: CReal,
1 * r == r.
Lemma CReal_isRingExt : ring_eq_ext CReal_plus CReal_mult CReal_opp CRealEq.
Lemma CReal_isRing : ring_theory (inject_Q 0) (inject_Q 1)
CReal_plus CReal_mult
CReal_minus CReal_opp
CRealEq.