Notation cexp := (canonic_exp beta fexp).

(* Specifications: *)
Lemma ex_shift : forall x e, format x -> (e <= cexp x)%Z -> exists m, (x = Z2R m * bpow e)%R.
Lemma ln_beta_minus1 : forall z, z <> 0%R -> (ln_beta beta z - 1)%Z = ln_beta beta (z / Z2R beta).
Theorem round_plus_mult_ulp : forall x y, format x -> format y -> (x <> 0)%R -> exists m, (round beta fexp rnd (x+y) = Z2R m * ulp beta fexp (x/Z2R beta))%R.
Theorem round_plus_ge_ulp : forall x y, format x -> format y -> round beta fexp rnd (x+y) = 0%R \/ (ulp beta fexp (x/Z2R beta) <= Rabs (round beta fexp rnd (x+y)))%R.
Theorem round_plus_ge_ulp_FLT : forall x y e, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (bpow e <= Rabs x)%R -> round beta (FLT_exp emin prec) rnd (x+y) = 0%R \/ (bpow (e - prec) <= Rabs (round beta (FLT_exp emin prec) rnd (x+y)))%R.
Theorem round_plus_ge_ulp_FLX : forall x y e, generic_format beta (FLX_exp prec) x -> generic_format beta (FLX_exp prec) y -> (bpow e <= Rabs x)%R -> round beta (FLX_exp prec) rnd (x+y) = 0%R \/ (bpow (e - prec) <= Rabs (round beta (FLX_exp prec) rnd (x+y)))%R.