End Double_round_plus_beta_ge_3_FLT.
Section Double_round_plus_beta_ge_3_FTZ.
Variable emin prec : Z.
Variable emin' prec' : Z.
Context { prec_gt_0_ : Prec_gt_0 prec }.
Context { prec_gt_0_' : Prec_gt_0 prec' }.

(* Specifications: *)
Lemma FTZ_double_round_plus_beta_ge_3_hyp :
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
double_round_plus_beta_ge_3_hyp (FTZ_exp emin prec) (FTZ_exp emin' prec').
Theorem double_round_plus_beta_ge_3_FTZ :
(3 <= beta)%Z ->
forall choice1 choice2,
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
forall x y,
FTZ_format beta emin prec x -> FTZ_format beta emin prec y ->
double_round_eq (FTZ_exp emin prec) (FTZ_exp emin' prec')
choice1 choice2 (x + y).
Theorem double_round_minus_beta_ge_3_FTZ :
(3 <= beta)%Z ->
forall choice1 choice2,
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
forall x y,
FTZ_format beta emin prec x -> FTZ_format beta emin prec y ->
double_round_eq (FTZ_exp emin prec) (FTZ_exp emin' prec')
choice1 choice2 (x - y).
Lemma FTZ_double_round_plus_beta_ge_3_hyp :
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
double_round_plus_beta_ge_3_hyp (FTZ_exp emin prec) (FTZ_exp emin' prec').
Theorem double_round_plus_beta_ge_3_FTZ :
(3 <= beta)%Z ->
forall choice1 choice2,
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
forall x y,
FTZ_format beta emin prec x -> FTZ_format beta emin prec y ->
double_round_eq (FTZ_exp emin prec) (FTZ_exp emin' prec')
choice1 choice2 (x + y).
Theorem double_round_minus_beta_ge_3_FTZ :
(3 <= beta)%Z ->
forall choice1 choice2,
(emin' + prec' <= emin + 1)%Z -> (2 * prec <= prec')%Z ->
forall x y,
FTZ_format beta emin prec x -> FTZ_format beta emin prec y ->
double_round_eq (FTZ_exp emin prec) (FTZ_exp emin' prec')
choice1 choice2 (x - y).