Add Parametric Morphism {R : ConstructiveReals} : (CRplus R)
with signature CReq R ==> CReq R ==> CReq R
as CRplus_morph.
Add Parametric Morphism {R : ConstructiveReals} : (CRopp R)
with signature CReq R ==> CReq R
as CRopp_morph.
Add Parametric Morphism {R : ConstructiveReals} : (CRmult R)
with signature CReq R ==> CReq R ==> CReq R
as CRmult_morph.
#[global]
Instance CRplus_morph_T
: forall {R : ConstructiveReals}, CMorphisms.Proper
(CMorphisms.respectful (CReq R) (CMorphisms.respectful (CReq R) (CReq R))) (CRplus R).
#[global]
Instance CRmult_morph_T
: forall {R : ConstructiveReals}, CMorphisms.Proper
(CMorphisms.respectful (CReq R) (CMorphisms.respectful (CReq R) (CReq R))) (CRmult R).
#[global]
Instance CRopp_morph_T
: forall {R : ConstructiveReals}, CMorphisms.Proper
(CMorphisms.respectful (CReq R) (CReq R)) (CRopp R).
Add Parametric Morphism {R : ConstructiveReals} : (CRminus R)
with signature (CReq R) ==> (CReq R) ==> (CReq R)
as CRminus_morph.
#[global]
Instance CRminus_morph_T
: forall {R : ConstructiveReals}, CMorphisms.Proper
(CMorphisms.respectful (CReq R) (CMorphisms.respectful (CReq R) (CReq R))) (CRminus R).

Lemma CRmult_assoc : forall {R : ConstructiveReals} (r r1 r2 : CRcarrier R),
r * r1 * r2 == r * (r1 * r2).