(*****************************************************************************)
(** * Classical Dedekind reals                                               *)
(*****************************************************************************)
(** ** Definition *)
Definition DReal : Set
:= { f : Q -> bool | isLowerCut f }.
(** ** Induction principle *)
Fixpoint DRealQlim_rec (f : Q -> bool) (low : isLowerCut f) (n p : nat) { struct p }
: f (proj1_sig (lowerCutBelow f low) + (Z.of_nat p # Pos.of_nat (S n)))%Q = false
-> { q : Q | f q = true /\ f (q + (1 # Pos.of_nat (S n)))%Q = false }.
(** ** Conversion to and from constructive Cauchy real CReal *)
(** *** Conversion from CReal to DReal *)

Lemma DRealAbstr_aux :
forall x H,
isLowerCut (fun q : Q =>
if sig_forall_dec (fun n : nat => seq x (- Z.of_nat n) <= q + 2 ^ (- Z.of_nat n)) (H q)
then true else false).