Fixpoint DDcut_limit_fix (upcut : DedekindDecCut) (r : Q) (n : nat) :
  Qlt 0 r
  -> (DDupcut upcut (DDlow upcut + (Z.of_nat n#1) * r))
  -> { q : Q | DDupcut upcut q /\ ~DDupcut upcut (q - r) }.

(* Specifications: *)
Lemma DDcut_limit : forall (upcut : DedekindDecCut) (r : Q), Qlt 0 r -> { q : Q | DDupcut upcut q /\ ~DDupcut upcut (q - r) }.
Lemma glb_dec_Q : forall {R : ConstructiveReals} (upcut : DedekindDecCut), { x : CRcarrier R | forall r:Q, (x < CR_of_Q R r -> DDupcut upcut r) /\ (CR_of_Q R r < x -> ~DDupcut upcut r) }.
Lemma is_upper_bound_glb : forall {R : ConstructiveReals} (E:CRcarrier R -> Prop), sig_not_dec_T -> sig_forall_dec_T -> (exists x : CRcarrier R, E x) -> (exists x : CRcarrier R, is_upper_bound E x) -> { x : CRcarrier R | forall r:Q, (x < CR_of_Q R r -> is_upper_bound E (CR_of_Q R r)) /\ (CR_of_Q R r < x -> ~is_upper_bound E (CR_of_Q R r)) }.
Lemma is_upper_bound_closed : forall {R : ConstructiveReals} (E:CRcarrier R -> Prop) (sig_forall_dec : sig_forall_dec_T) (sig_not_dec : sig_not_dec_T) (Einhab : exists x : CRcarrier R, E x) (Ebound : exists x : CRcarrier R, is_upper_bound E x), is_lub E (proj1_sig (is_upper_bound_glb E sig_not_dec sig_forall_dec Einhab Ebound)).
Lemma sig_lub : forall {R : ConstructiveReals} (E:CRcarrier R -> Prop), sig_forall_dec_T -> sig_not_dec_T -> (exists x : CRcarrier R, E x) -> (exists x : CRcarrier R, is_upper_bound E x) -> { u : CRcarrier R | is_lub E u }.