End Double_round_mult_FTZ.
End Double_round_mult.
Section Double_round_plus.

(* Specifications: *)
Lemma ln_beta_plus_disj :
forall x y,
0 < y -> y <= x ->
((ln_beta (x + y) = ln_beta x :> Z)
\/ (ln_beta (x + y) = (ln_beta x + 1)%Z :> Z)).
Lemma ln_beta_plus_separated :
forall fexp : Z -> Z,
forall x y,
0 < x -> 0 <= y ->
generic_format beta fexp x ->
(ln_beta y <= fexp (ln_beta x))%Z ->
(ln_beta (x + y) = ln_beta x :> Z).
Lemma ln_beta_minus_disj :
forall x y,
0 < x -> 0 < y ->
(ln_beta y <= ln_beta x - 2)%Z ->
((ln_beta (x - y) = ln_beta x :> Z)
\/ (ln_beta (x - y) = (ln_beta x - 1)%Z :> Z)).
Lemma ln_beta_minus_separated :
forall fexp : Z -> Z, Valid_exp fexp ->
forall x y,
0 < x -> 0 < y -> y < x ->
bpow (ln_beta x - 1) < x ->
generic_format beta fexp x -> (ln_beta y <= fexp (ln_beta x))%Z ->
(ln_beta (x - y) = ln_beta x :> Z).
Lemma ln_beta_plus_disj :
forall x y,
0 < y -> y <= x ->
((ln_beta (x + y) = ln_beta x :> Z)
\/ (ln_beta (x + y) = (ln_beta x + 1)%Z :> Z)).
Lemma ln_beta_plus_separated :
forall fexp : Z -> Z,
forall x y,
0 < x -> 0 <= y ->
generic_format beta fexp x ->
(ln_beta y <= fexp (ln_beta x))%Z ->
(ln_beta (x + y) = ln_beta x :> Z).
Lemma ln_beta_minus_disj :
forall x y,
0 < x -> 0 < y ->
(ln_beta y <= ln_beta x - 2)%Z ->
((ln_beta (x - y) = ln_beta x :> Z)
\/ (ln_beta (x - y) = (ln_beta x - 1)%Z :> Z)).
Lemma ln_beta_minus_separated :
forall fexp : Z -> Z, Valid_exp fexp ->
forall x y,
0 < x -> 0 < y -> y < x ->
bpow (ln_beta x - 1) < x ->
generic_format beta fexp x -> (ln_beta y <= fexp (ln_beta x))%Z ->
(ln_beta (x - y) = ln_beta x :> Z).