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).

(* ln_beta y <= fexp1 (ln_beta x) - 1 : * ln_beta y <= fexp1 (ln_beta (x - y)) - 1 : * double_round_gt_mid applies. *)
Lemma double_round_minus_beta_ge_3_aux2 :
(3 <= beta)%Z ->
forall (fexp1 fexp2 : Z -> Z),
Valid_exp fexp1 -> Valid_exp fexp2 ->
forall (choice1 choice2 : Z -> bool),
double_round_plus_beta_ge_3_hyp fexp1 fexp2 ->
forall x y,
0 < y -> y < x ->
(ln_beta y <= fexp1 (ln_beta x) - 1)%Z ->
(ln_beta y <= fexp1 (ln_beta (x - y)) - 1)%Z ->
generic_format beta fexp1 x ->
generic_format beta fexp1 y ->
double_round_eq fexp1 fexp2 choice1 choice2 (x - y).