intros x p H H1.
apply
Rle_trans
with (Rabs (FtoRradix p) * (/ 2%nat * (radix * / Zpos (vNum b))))%R;
[ apply ClosestErrorBoundNormal_aux; auto | right ].
replace (powerRZ radix (Zsucc (- precision))) with
(radix * / Zpos (vNum b))%R; auto with real.
rewrite pGivesBound; rewrite Zpower_nat_Z_powerRZ.
rewrite Rinv_powerRZ; auto with real zarith.
rewrite powerRZ_Zs; auto with real zarith.
Qed.

(* Specifications: *)
Theorem ClosestPropHigham25 :
forall (x : R) (p : float),
Closest b radix x p ->
exists delta : R,
(exists nu : R,
(x / (1 + delta) + nu)%R = FtoRradix p /\
(Rabs delta <= / 2%nat * powerRZ radix (Zsucc (- precision)))%R /\
(Rabs nu <= / 2%nat * powerRZ radix (- dExp b))%R /\
(delta * nu)%R = 0%R /\
(Fnormal radix b (Fnormalize radix b precision p) -> nu = 0%R) /\
(Fsubnormal radix b (Fnormalize radix b precision p) -> delta = 0%R)).