(************************************************************************)
(*         *      The Rocq Prover / The Rocq Development Team           *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)
(* Abstraction of classical Dedekind reals behind an opaque module, for backward compatibility.  This file also contains the proof that classical reals are a quotient of constructive Cauchy reals. *)
Require Export ZArith_base.
(* Declare primitive number notations for Scope R_scope *)
Declare Scope hex_R_scope.
Declare Scope R_scope.
(* Declare Scope R_scope with Key R *)
Delimit Scope hex_R_scope with xR.
Delimit Scope R_scope with R.
Local Open Scope R_scope.
(* Those symbols must be kept opaque, for backward compatibility. *)
Module Type RbaseSymbolsSig.
Parameter R : Set.
Bind Scope R_scope with R.

(* Specifications: *)
Axiom Rabst : CReal -> R.
Axiom Rrepr : R -> CReal.
Axiom Rquot1 : forall x y:R, CRealEq (Rrepr x) (Rrepr y) -> x = y.
Axiom Rquot2 : forall x:CReal, CRealEq (Rrepr (Rabst x)) x.
Parameter R0 : R.