Add Parametric Relation {R : ConstructiveReals} : (CRcarrier R) (CReq R)
reflexivity proved by (CReq_refl)
symmetry proved by (CReq_sym)
transitivity proved by (CReq_trans)
as CReq_rel.
#[global]
Instance CReq_relT : forall {R : ConstructiveReals},
CRelationClasses.Equivalence (CReq R).
#[global]
Instance CRlt_morph
: forall {R : ConstructiveReals}, CMorphisms.Proper
(CMorphisms.respectful (CReq R) (CMorphisms.respectful (CReq R) CRelationClasses.iffT)) (CRlt R).
Add Parametric Morphism {R : ConstructiveReals} : (CRle R)
with signature CReq R ==> CReq R ==> iff
as CRle_morph.

(* Specifications: *)
Lemma CRplus_0_l : forall {R : ConstructiveReals} (x : CRcarrier R),
0 + x == x.
Lemma CRplus_0_r : forall {R : ConstructiveReals} (x : CRcarrier R),
x + 0 == x.
Lemma CRplus_opp_l : forall {R : ConstructiveReals} (x : CRcarrier R),
- x + x == 0.
Lemma CRplus_opp_r : forall {R : ConstructiveReals} (x : CRcarrier R),
x + - x == 0.
Lemma CRopp_0 : forall {R : ConstructiveReals},
CRopp R 0 == 0.
Lemma CRplus_lt_compat_r : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 < r2 -> r1 + r < r2 + r.
Lemma CRplus_lt_reg_r : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 + r < r2 + r -> r1 < r2.
Lemma CRplus_le_compat_l : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 <= r2 -> r + r1 <= r + r2.
Lemma CRplus_le_compat_r : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 <= r2 -> r1 + r <= r2 + r.
Lemma CRplus_le_compat : forall {R : ConstructiveReals} (r1 r2 r3 r4 : CRcarrier R),
r1 <= r2 -> r3 <= r4 -> r1 + r3 <= r2 + r4.
Lemma CRle_minus : forall {R : ConstructiveReals} (x y : CRcarrier R),
x <= y -> 0 <= y - x.
Lemma CRplus_le_reg_l : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r + r1 <= r + r2 -> r1 <= r2.
Lemma CRplus_le_reg_r : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 + r <= r2 + r -> r1 <= r2.
Lemma CRplus_lt_le_compat :
forall {R : ConstructiveReals} (r1 r2 r3 r4 : CRcarrier R),
r1 < r2
-> r3 <= r4
-> r1 + r3 < r2 + r4.
Lemma CRplus_le_lt_compat :
forall {R : ConstructiveReals} (r1 r2 r3 r4 : CRcarrier R),
r1 <= r2
-> r3 < r4
-> r1 + r3 < r2 + r4.
Lemma CRplus_eq_reg_l : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r + r1 == r + r2 -> r1 == r2.
Lemma CRplus_eq_reg_r : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r1 + r == r2 + r -> r1 == r2.
Lemma CRplus_assoc : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r + r1 + r2 == r + (r1 + r2).
Lemma CRplus_comm : forall {R : ConstructiveReals} (r1 r2 : CRcarrier R),
r1 + r2 == r2 + r1.