unfold rat_inf_limit_2, inf_limit_2; intuition.
edestruct (H (ratHalf epsilon)).
eapply ratHalf_ne_0; intuition.
edestruct (H0 (ratHalf epsilon)); eauto.
eapply ratHalf_ne_0.
intuition.
exists (max x x0).
intuition.
destruct (H1 n').
eapply leRat_trans.
eapply ratDistance_le_trans.
eapply H3.
eapply Max.max_lub_l.
eapply H5.
trivial.
eapply H8.
eapply H4.
eapply Max.max_lub_r.
eapply H5.
eauto.
trivial.
eapply eqRat_impl_leRat.
eapply ratHalf_add.
Qed.

(* Specifications: *)
Lemma rat_inf_limit_squeeze : forall (f1 f2 f: nat -> Rat -> Prop) c (v : Rat),
rat_inf_limit f1 v ->
rat_inf_limit f2 v ->
(forall n a a1, n >= c -> f n a -> f1 n a1 -> a1 <= a) ->
(forall n a a2, n >= c -> f n a -> f2 n a2 -> a <= a2) ->
left_total f1 ->
left_total f2 ->
rat_inf_limit f v.