Definition rat_inf_limit(f : nat -> Rat -> Prop)(r : Rat) :=
  inf_limit eqRat ratDistance rat0 leRat f r.Definition rat_inf_limit_2(f1 f2 : nat -> Rat -> Prop) :=
  inf_limit_2 eqRat ratDistance rat0 leRat f1 f2.Definition rat_limits_eq :=
  limits_eq eq_Rat_dec ratDistance_comm ratHalf ratHalf_ne_0 ratIdentityIndiscernables eqRat_impl_leRat leRat_trans ratAdd ratAdd_leRat_compat ratTriangleInequality ratHalf_add le_ratHalf_0.

(* Specifications: *)
Theorem rat_inf_limit_2_trans : forall f1 f2 f3, rat_inf_limit_2 f1 f2 -> rat_inf_limit_2 f2 f3 -> left_total f2 -> rat_inf_limit_2 f1 f3.
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.
Lemma rat_inf_limit_div_2 : forall (f : nat -> Rat -> Prop)(v : Rat), rat_inf_limit f v -> rat_inf_limit (fun n => (f (div2 n))) v.
Lemma rat_inf_limit_sum : forall (f1 f2 : nat -> Rat -> Prop) v1 v2, left_total f1 -> left_total f2 -> rat_inf_limit f1 v1 -> rat_inf_limit f2 v2 -> rat_inf_limit (fun n => (ratAdd_rel (f1 n) (f2 n))) (v1 + v2).
Lemma rat_inf_limit_difference : forall (f1 f2 : nat -> Rat -> Prop) c1 c2, left_total f1 -> left_total f2 -> rat_inf_limit f1 c1 -> rat_inf_limit f2 c2 -> rat_inf_limit (fun n => (ratSubtract_rel (f1 n) (f2 n))) (ratSubtract c1 c2).
Lemma rat_inf_limit_product : forall (f1 f2 : nat -> Rat -> Prop) c1 c2, left_total f1 -> left_total f2 -> rat_inf_limit f1 c1 -> rat_inf_limit f2 c2 -> rat_inf_limit (fun n => (ratMult_rel (f1 n) (f2 n))) (c1 * c2).