Proof with auto with typeclass_instances.
intros x.
split.
apply generic_format_round...
split.
pattern x at 2 ; rewrite <- scaled_mantissa_mult_bpow.
unfold round, F2R. simpl.
apply Rmult_le_compat_r.
apply bpow_ge_0.
apply Zfloor_lb.
intros g Hg Hgx.
apply round_ge_generic...
Qed.

(* Specifications: *)
Theorem generic_format_satisfies_any :
satisfies_any generic_format.
Theorem round_UP_pt :
forall x,
Rnd_UP_pt generic_format x (round Zceil x).
Theorem round_ZR_pt :
forall x,
Rnd_ZR_pt generic_format x (round Ztrunc x).
Theorem round_DN_small_pos :
forall x ex,
(bpow (ex - 1) <= x < bpow ex)%R ->
(ex <= fexp ex)%Z ->
round Zfloor x = 0%R.
Theorem round_DN_UP_lt :
forall x, ~ generic_format x ->
(round Zfloor x < x < round Zceil x)%R.
Theorem generic_format_satisfies_any :
satisfies_any generic_format.
Theorem round_UP_pt :
forall x,
Rnd_UP_pt generic_format x (round Zceil x).
Theorem round_ZR_pt :
forall x,
Rnd_ZR_pt generic_format x (round Ztrunc x).
Theorem round_DN_small_pos :
forall x ex,
(bpow (ex - 1) <= x < bpow ex)%R ->
(ex <= fexp ex)%Z ->
round Zfloor x = 0%R.
Theorem round_DN_UP_lt :
forall x, ~ generic_format x ->
(round Zfloor x < x < round Zceil x)%R.