End Double_round_plus_FTZ.
Section Double_round_plus_beta_ge_3.
Definition double_round_plus_beta_ge_3_hyp fexp1 fexp2 :=
(forall ex ey, (fexp1 (ex + 1) <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z)
/\ (forall ex ey, (fexp1 (ex - 1) + 1 <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z)
/\ (forall ex ey, (fexp1 ex <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z)
/\ (forall ex ey, (ex - 1 <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z).

(* fexp1 (ln_beta x) <= ln_beta y : * addition is exact in the largest precision (fexp2). *)
Lemma double_round_plus_beta_ge_3_aux0 :
forall (fexp1 fexp2 : Z -> Z), Valid_exp fexp1 ->
double_round_plus_beta_ge_3_hyp fexp1 fexp2 ->
forall x y,
(0 < y)%R -> (y <= x)%R ->
(fexp1 (ln_beta x) <= ln_beta y)%Z ->
generic_format beta fexp1 x -> generic_format beta fexp1 y ->
generic_format beta fexp2 (x + y).