(* We call this morphism slow to remind that it should only be used for proofs, not for computations. *)
Definition SlowMorph {R1 R2 : ConstructiveReals}
: CRcarrier R1 -> CRcarrier R2
:= fun x => let (y,_) := CR_complete R2 _ (CRmorph_rat_cv _ (Rcv_cauchy_mod _ x (CR_Q_limit_cv x)))
in y.

(* Specifications: *)
Lemma CauchyMorph_rat : forall {R1 R2 : ConstructiveReals} (q : Q),
SlowMorph (CR_of_Q R1 q) == CR_of_Q R2 q.
(* The increasing property of morphisms, when the left bound is rational. *)
Lemma SlowMorph_increasing_Qr
: forall {R1 R2 : ConstructiveReals} (x : CRcarrier R1) (q : Q),
CR_of_Q R1 q < x -> CR_of_Q R2 q < SlowMorph x.
(* The increasing property of morphisms, when the right bound is rational. *)
Lemma SlowMorph_increasing_Ql
: forall {R1 R2 : ConstructiveReals} (x : CRcarrier R1) (q : Q),
x < CR_of_Q R1 q -> SlowMorph x < CR_of_Q R2 q.
Lemma SlowMorph_increasing : forall {R1 R2 : ConstructiveReals} (x y : CRcarrier R1),
x < y -> @SlowMorph R1 R2 x < SlowMorph y.