Notation F := (generic_format beta fexp).

(* Specifications: *)
Theorem ulp_opp : forall x, ulp (- x) = ulp x.
Theorem ulp_abs : forall x, ulp (Rabs x) = ulp x.
Theorem ulp_ge_0: forall x, (0 <= ulp x)%R.
Theorem ulp_le_id: forall x, (0 < x)%R -> F x -> (ulp x <= x)%R.
Theorem ulp_le_abs: forall x, (x <> 0)%R -> F x -> (ulp x <= Rabs x)%R.
Theorem round_UP_DN_ulp : forall x, ~ F x -> round beta fexp Zceil x = (round beta fexp Zfloor x + ulp x)%R.
Theorem ulp_bpow : forall e, ulp (bpow e) = bpow (fexp (e + 1)).
Lemma generic_format_ulp_0: F (ulp 0).
Lemma generic_format_bpow_ge_ulp_0: forall e, (ulp 0 <= bpow e)%R -> F (bpow e).
Lemma generic_format_ulp: Exp_not_FTZ fexp -> forall x, F (ulp x).
Lemma not_FTZ_generic_format_ulp: (forall x, F (ulp x)) -> Exp_not_FTZ fexp.
Lemma ulp_ge_ulp_0: Exp_not_FTZ fexp -> forall x, (ulp 0 <= ulp x)%R.
Lemma not_FTZ_ulp_ge_ulp_0: (forall x, (ulp 0 <= ulp x)%R) -> Exp_not_FTZ fexp.
Theorem ulp_le_pos : forall { Hm : Monotone_exp fexp }, forall x y: R, (0 <= x)%R -> (x <= y)%R -> (ulp x <= ulp y)%R.
Theorem ulp_le : forall { Hm : Monotone_exp fexp }, forall x y: R, (Rabs x <= Rabs y)%R -> (ulp x <= ulp y)%R.
Theorem ulp_opp : forall x, ulp (- x) = ulp x.
Theorem ulp_abs : forall x, ulp (Rabs x) = ulp x.
Theorem ulp_ge_0: forall x, (0 <= ulp x)%R.
Theorem ulp_le_id: forall x, (0 < x)%R -> F x -> (ulp x <= x)%R.
Theorem ulp_le_abs: forall x, (x <> 0)%R -> F x -> (ulp x <= Rabs x)%R.
Theorem round_UP_DN_ulp : forall x, ~ F x -> round beta fexp Zceil x = (round beta fexp Zfloor x + ulp x)%R.
Theorem ulp_bpow : forall e, ulp (bpow e) = bpow (fexp (e + 1)).
Lemma generic_format_ulp_0: F (ulp 0).
Lemma generic_format_bpow_ge_ulp_0: forall e, (ulp 0 <= bpow e)%R -> F (bpow e).
Lemma generic_format_ulp: Exp_not_FTZ fexp -> forall x, F (ulp x).
Lemma not_FTZ_generic_format_ulp: (forall x, F (ulp x)) -> Exp_not_FTZ fexp.
Lemma ulp_ge_ulp_0: Exp_not_FTZ fexp -> forall x, (ulp 0 <= ulp x)%R.
Lemma not_FTZ_ulp_ge_ulp_0: (forall x, (ulp 0 <= ulp x)%R) -> Exp_not_FTZ fexp.
Theorem ulp_le_pos : forall { Hm : Monotone_exp fexp }, forall x y: R, (0 <= x)%R -> (x <= y)%R -> (ulp x <= ulp y)%R.
Theorem ulp_le : forall { Hm : Monotone_exp fexp }, forall x y: R, (Rabs x <= Rabs y)%R -> (ulp x <= ulp y)%R.