Add Parametric Morphism : CReal_mult
with signature CRealEq ==> CRealEq ==> CRealEq
as CReal_mult_morph.
#[global]
Instance CReal_mult_morph_T
: CMorphisms.Proper
(CMorphisms.respectful CRealEq (CMorphisms.respectful CRealEq CRealEq)) CReal_mult.
Add Parametric Morphism : CReal_opp
with signature CRealEq ==> CRealEq
as CReal_opp_morph.
#[global]
Instance CReal_opp_morph_T
: CMorphisms.Proper
(CMorphisms.respectful CRealEq CRealEq) CReal_opp.
Add Parametric Morphism : CReal_minus
with signature CRealEq ==> CRealEq ==> CRealEq
as CReal_minus_morph.
#[global]
Instance CReal_minus_morph_T
: CMorphisms.Proper
(CMorphisms.respectful CRealEq (CMorphisms.respectful CRealEq CRealEq)) CReal_minus.
Add Ring CRealRing : CReal_isRing.

(* Specifications: *)
(**********)
Lemma CReal_mult_1_r : forall r, r * 1 == r.
Lemma CReal_opp_mult_distr_l
: forall r1 r2 : CReal, - (r1 * r2) == (- r1) * r2.
Lemma CReal_mult_lt_compat_l : forall x y z : CReal,
0 < x -> y < z -> x*y < x*z.
Lemma CReal_mult_lt_compat_r : forall x y z : CReal,
0 < x -> y < z -> y*x < z*x.
Lemma CReal_mult_eq_reg_l : forall (r r1 r2 : CReal),
r # 0
-> r * r1 == r * r2
-> r1 == r2.
Lemma CReal_abs_appart_zero : forall (x : CReal) (n : Z),
(2*2^n < Qabs (seq x n))%Q
-> 0 # x.