intros p q pq H' H'0 H'1.
case (Zle_or_lt (Fexp p) (Fexp q)); intros H'2.
apply errorBoundedPlusLe; auto.
replace (p + q)%R with (q + p)%R; [ idtac | ring ].
replace (Zmin (Fexp p) (Fexp q)) with (Zmin (Fexp q) (Fexp p));
[ idtac | apply Zmin_sym ].
apply errorBoundedPlusLe; auto.
auto with zarith.
apply (ClosestCompatible b radix (p + q)%R (q + p)%R pq); auto.
ring.
case H'1; auto.
Qed.

Theorem errorBoundedPlus :
forall p q pq : float,
(Fbounded b p) ->
(Fbounded b q) ->
(Closest b radix (p + q) pq) ->
exists error : float,
error = (p + q - pq)%R :>R /\
(Fbounded b error) /\ (Fexp error) = (Zmin (Fexp p) (Fexp q)).