#[global]
Instance CR_of_Q_morph_T
  : forall {R : ConstructiveReals}, CMorphisms.Proper
      (CMorphisms.respectful Qeq (CReq R)) (CR_of_Q R).

(* Specifications: *)
Lemma CR_of_Q_opp : forall {R : ConstructiveReals} (q : Q), CR_of_Q R (-q) == - CR_of_Q R q.
Lemma CR_of_Q_pos : forall {R : ConstructiveReals} (q:Q), Qlt 0 q -> 0 < CR_of_Q R q.
Lemma CR_of_Q_inv : forall {R : ConstructiveReals} (q : Q) (qPos : Qlt 0 q), CR_of_Q R (/q) == (/ CR_of_Q R q) (inr (CR_of_Q_pos q qPos)).
Lemma CRmult_le_0_compat : forall {R : ConstructiveReals} (a b : CRcarrier R), 0 <= a -> 0 <= b -> 0 <= a * b.
Lemma CRmult_le_compat_l : forall {R : ConstructiveReals} (r r1 r2:CRcarrier R), 0 <= r -> r1 <= r2 -> r * r1 <= r * r2.
Lemma CRmult_le_compat_r : forall {R : ConstructiveReals} (r r1 r2:CRcarrier R), 0 <= r -> r1 <= r2 -> r1 * r <= r2 * r.
Lemma CRmult_pos_pos : forall {R : ConstructiveReals} (x y : CRcarrier R), 0 < x * y -> 0 <= x -> 0 <= y -> 0 < x.
Lemma CRmult_pos_appart_zero : forall {R : ConstructiveReals} (x y : CRcarrier R), 0 < x * y -> 0 ≶ x.
Lemma CRmult_le_reg_l : forall {R : ConstructiveReals} (x y z : CRcarrier R), 0 < x -> x * y <= x * z -> y <= z.
Lemma CRmult_le_reg_r : forall {R : ConstructiveReals} (x y z : CRcarrier R), 0 < x -> y * x <= z * x -> y <= z.