Definition sup := completeness.Definition is_lower_bound (E:R->Prop) (m:R) :=
  forall x:R, E x -> x >= m.Definition lower_bound (E:R->Prop) :=
  exists m:R, is_lower_bound E m.Definition is_glb (E:R->Prop) (m:R) :=
  is_lower_bound E m /\ (forall b:R, is_lower_bound E b -> b <= m).Definition inf: forall E:R->Prop, lower_bound E -> (exists x:R, E x) ->
  { m:R | is_glb E m }.

(* Specifications: *)
Lemma lub_approx: forall (S:Ensemble R) (m:R) (eps:R), is_lub S m -> eps > 0 -> exists x:R, In S x /\ m - eps < x <= m.
Lemma glb_approx: forall (S:Ensemble R) (m:R) (eps:R), is_glb S m -> eps > 0 -> exists x:R, In S x /\ m <= x < m + eps.
Lemma lt_plus_epsilon_le: forall x y:R, (forall eps:R, eps > 0 -> x < y + eps) -> x <= y.
Lemma gt_minus_epsilon_ge: forall x y:R, (forall eps:R, eps > 0 -> x > y - eps) -> x >= y.