(** ** Least upper bound and Greatest Lower Bound *)
Definition Rbar_is_lub (E : Rbar -> Prop) (l : Rbar) :=
Rbar_is_upper_bound E l /\
(forall b : Rbar, Rbar_is_upper_bound E b -> Rbar_le l b).
Definition Rbar_is_glb (E : Rbar -> Prop) (l : Rbar) :=
Rbar_is_lower_bound E l /\
(forall b : Rbar, Rbar_is_lower_bound E b -> Rbar_le b l).

(* Specifications: *)
Lemma Rbar_lub_glb (E : Rbar -> Prop) (l : Rbar) :
Rbar_is_lub (fun x => E (Rbar_opp x)) (Rbar_opp l)
<-> Rbar_is_glb E l.
Lemma Rbar_glb_lub (E : Rbar -> Prop) (l : Rbar) :
Rbar_is_glb (fun x => E (Rbar_opp x)) (Rbar_opp l)
<-> Rbar_is_lub E l.
Lemma is_lub_Rbar_correct (E : R -> Prop) (l : Rbar) :
is_lub_Rbar E l <-> Rbar_is_lub (fun x => is_finite x /\ E x) l.
Lemma is_glb_Rbar_correct (E : R -> Prop) (l : Rbar) :
is_glb_Rbar E l <-> Rbar_is_glb (fun x => is_finite x /\ E x) l.
Lemma Rbar_ex_lub (E : Rbar -> Prop) :
{l : Rbar | Rbar_is_lub E l}.
Lemma Rbar_ex_glb (E : Rbar -> Prop) :
{l : Rbar | Rbar_is_glb E l}.