(* The constructive equality on R. *)
Definition Req_constr (x y : R) : Prop
:= (x < y -> False) /\ (y < x -> False).

(* Specifications: *)
Lemma Req_constr_refl : forall x:R, Req_constr x x.
Lemma Req_constr_leibniz : forall x y:R, Req_constr x y -> x = y.
Definition IQR (q : Q) := Rabst (inject_Q q).
Lemma IQR_zero_quot : Req_constr (IQR 0) R0.
(* Not RealField.RTheory, because it uses Leibniz equality. *)
Lemma Rring : ring_theory (IQR 0) (IQR 1) Rplus Rmult
(fun x y : R => (x + - y)%R) Ropp Req_constr.
Lemma RringExt : ring_eq_ext Rplus Rmult Ropp Req_constr.
Lemma Rleft_inverse :
forall r : R, (sum (r < IQR 0) (IQR 0 < r)) -> Req_constr (/ r * r) (IQR 1).
Lemma Rinv_pos : forall r : R, (sum (r < IQR 0) (IQR 0 < r)) -> IQR 0 < r -> IQR 0 < / r.
Lemma Rmult_pos : forall x y : R, IQR 0 < x -> IQR 0 < y -> IQR 0 < x * y.
Lemma Rplus_reg_l : forall r r1 r2, r + r1 < r + r2 -> r1 < r2.
Lemma Rzero_lt_one : IQR 0 < IQR 1.
Lemma plus_IQR : forall q r : Q,
IQR (q + r) = IQR q + IQR r.
Lemma mult_IQR : forall q r : Q,
IQR (q * r) = IQR q * IQR r.
Lemma IQR_lt : forall n m:Q, (n < m)%Q -> IQR n < IQR m.
Lemma lt_IQR : forall n m:Q, IQR n < IQR m -> (n < m)%Q.
Lemma IQR_plus_quot : forall q r : Q, Req_constr (IQR (q + r)) (IQR q + IQR r).
Lemma IQR_mult_quot : forall q r : Q, Req_constr (IQR (q * r)) (IQR q * IQR r).
Lemma Rabove_pos : forall x : R, {n : positive & x < IQR (Z.pos n # 1)}.
Lemma Rarchimedean : forall x y : R, x < y -> {q : Q & ((x < IQR q) * (IQR q < y))%type}.
Lemma RabsLUB : forall x y : R, (y < x -> False) /\ (y < - x -> False) <-> (y < Rabst (CReal_abs (Rrepr x)) -> False).
Lemma Rcomplete : forall xn : nat -> R,
(forall p : positive,
{n : nat |
forall i j : nat,
(n <= i)%nat -> (n <= j)%nat -> IQR (1 # p) < Rabst (CReal_abs (Rrepr (xn i + - xn j))) -> False}) ->
{l : R &
forall p : positive,
{n : nat |
forall i : nat, (n <= i)%nat -> IQR (1 # p) < Rabst (CReal_abs (Rrepr (xn i + - l))) -> False}}.