Section Double_round_plus.
Definition round_round_plus_hyp fexp1 fexp2 :=
(forall ex ey, (fexp1 (ex + 1) - 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 - 1 <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z)
/\ (forall ex ey, (ex - 1 <= ey)%Z -> (fexp2 ex <= fexp1 ey)%Z).

(* mag y <= fexp1 (mag x) - 2 : round_round_lt_mid applies. *)
Lemma round_round_plus_aux1 :
forall (fexp1 fexp2 : Z -> Z),
Valid_exp fexp1 -> Valid_exp fexp2 ->
forall (choice1 choice2 : Z -> bool),
round_round_plus_hyp fexp1 fexp2 ->
forall x y,
0 < x -> 0 < y ->
(mag y <= fexp1 (mag x) - 2)%Z ->
generic_format beta fexp1 x ->
round_round_eq fexp1 fexp2 choice1 choice2 (x + y).