Definition DRealRepr (x : DReal) : CReal :=
{|
seq := CReal_of_DReal_seq x;
scale := CReal_of_DReal_scale x;
cauchy := CReal_of_DReal_cauchy x;
bound := CReal_of_DReal_bound x
|}.
(** ** Order for DReal *)
Definition Rle (x y : DReal)
:= forall q:Q, proj1_sig x q = true -> proj1_sig y q = true.

(* Specifications: *)
Lemma Rle_antisym : forall x y : DReal,
Rle x y
-> Rle y x
-> x = y.
Lemma DRealOpen : forall (x : DReal) (q : Q),
proj1_sig x q = true
-> { r : Q | Qlt q r /\ proj1_sig x r = true }.
Lemma DRealReprQ : forall (x : DReal) (q : Q),
proj1_sig x q = true
-> CRealLt (inject_Q q) (DRealRepr x).
Lemma DRealReprQup : forall (x : DReal) (q : Q),
proj1_sig x q = false
-> CRealLe (DRealRepr x) (inject_Q q).
Lemma DRealQuot1 : forall x y:DReal, CRealEq (DRealRepr x) (DRealRepr y) -> x = y.
Lemma DRealAbstrFalse : forall (x : CReal) (q : Q) (n : nat),
proj1_sig (DRealAbstr x) q = false
-> (seq x (- Z.of_nat n) <= q + 2 ^ (- Z.of_nat n))%Q.