intros p q r H' H'0 H'1 H'2.
apply
Rlt_le_trans
with (Rabs (FtoR radix r) * / radix * (radix * / pPred (vNum b)))%R;
auto.
unfold FtoRradix in |- *; apply plusErrorBound1 with (precision := precision);
auto with arith.
replace (Rabs (FtoR radix r) * / radix * (radix * / pPred (vNum b)))%R with
(radix * / pPred (vNum b) * (Rabs r * / radix))%R;
[ idtac | fold FtoRradix; ring ].
apply Rmult_le_compat_l; auto.
replace 0%R with (radix * 0)%R; [ apply Rmult_le_compat_l | ring ].
cut (0 <= radix)%Z; auto with real zarith.
apply Rlt_le; apply Rinv_0_lt_compat; cut (0 < pPred (vNum b))%Z;
auto with real zarith.
unfold pPred in |- *; apply Zlt_succ_pred; simpl in |- *.
apply vNumbMoreThanOne with (radix := radix) (precision := precision);
auto with real arith.
apply Rmult_le_reg_l with (r := IZR radix); auto with real.
rewrite (Rmult_comm (Rabs r)); rewrite <- Rmult_assoc; rewrite Rinv_r;
auto with real zarith; rewrite Rmult_1_l.
apply plusUpperBound with (P := Closest b radix); auto.
apply ClosestRoundedModeP with (precision := precision); auto.
Qed.

(* Specifications: *)
Theorem plusClosestLowerBoundAux1 :
forall p q pq : float,
(Rabs q <= p)%R ->
Closest b radix (p + q) pq ->
Fbounded b p -> Fbounded b q -> pq <> (p + q)%R :>R -> (/ radix * p <= pq)%R.