intros; apply Rmin_Rgt_r; split.
- exact Rlt_0_1.
- exact (mul_factor_gt eps l l' H).
Qed.
(*******************************)
(** *   Metric space           *)
(*******************************)
(*********)
Record Metric_Space : Type :=
{Base : Type;
dist : Base -> Base -> R;
dist_pos : forall x y:Base, dist x y >= 0;
dist_sym : forall x y:Base, dist x y = dist y x;
dist_refl : forall x y:Base, dist x y = 0 <-> x = y;
dist_tri : forall x y z:Base, dist x y <= dist x z + dist z y}.
(*******************************)
(** ** Limit in Metric space   *)
(*******************************)
(*********)
Definition limit_in (X X':Metric_Space) (f:Base X -> Base X')
(D:Base X -> Prop) (x0:Base X) (l:Base X') :=
forall eps:R,
eps > 0 ->
exists alp : R,
alp > 0 /\
(forall x:Base X, D x /\ (dist X) x x0 < alp -> (dist X') (f x) l < eps).
(*******************************)
(** **  R is a metric space    *)
(*******************************)
(*********)
Definition R_met : Metric_Space :=
Build_Metric_Space R Rdist Rdist_pos Rdist_sym Rdist_refl Rdist_tri.
Declare Equivalent Keys dist Rdist.
(*******************************)
(** *      Limit 1 arg         *)
(*******************************)
(*********)
Definition Dgf (Df Dg:R -> Prop) (f:R -> R) (x:R) := Df x /\ Dg (f x).
(*********)
Definition limit1_in (f:R -> R) (D:R -> Prop) (l x0:R) : Prop :=
limit_in R_met R_met f D x0 l.

(* Specifications: *)
(*********)
Lemma tech_limit :
forall (f:R -> R) (D:R -> Prop) (l x0:R),
D x0 -> limit1_in f D l x0 -> l = f x0.
(*********)
Lemma tech_limit_contr :
forall (f:R -> R) (D:R -> Prop) (l x0:R),
D x0 -> l <> f x0 -> ~ limit1_in f D l x0.
(*********)
Lemma lim_x : forall (D:R -> Prop) (x0:R), limit1_in (fun x:R => x) D x0 x0.
(*********)
Lemma limit_plus :
forall (f g:R -> R) (D:R -> Prop) (l l' x0:R),
limit1_in f D l x0 ->
limit1_in g D l' x0 -> limit1_in (fun x:R => f x + g x) D (l + l') x0.
(*********)
Lemma limit_Ropp :
forall (f:R -> R) (D:R -> Prop) (l x0:R),
limit1_in f D l x0 -> limit1_in (fun x:R => - f x) D (- l) x0.
(*********)
Lemma limit_minus :
forall (f g:R -> R) (D:R -> Prop) (l l' x0:R),
limit1_in f D l x0 ->
limit1_in g D l' x0 -> limit1_in (fun x:R => f x - g x) D (l - l') x0.
(*********)
Lemma limit_free :
forall (f:R -> R) (D:R -> Prop) (x x0:R),
limit1_in (fun h:R => f x) D (f x) x0.
(*********)
Lemma limit_mul :
forall (f g:R -> R) (D:R -> Prop) (l l' x0:R),
limit1_in f D l x0 ->
limit1_in g D l' x0 -> limit1_in (fun x:R => f x * g x) D (l * l') x0.