Proof with auto with typeclass_instances.
intros x y e Fx Fy He.
assert (Zx: x <> 0%R).
contradict He.
apply Rlt_not_le; rewrite He, Rabs_R0.
apply bpow_gt_0.
case round_plus_ge_ulp with beta (FLT_exp emin prec) rnd x y...
intros H; right.
apply Rle_trans with (2:=H).
rewrite ulp_neq_0.
unfold canonic_exp.
rewrite <- ln_beta_minus1 by easy.
unfold FLT_exp; apply bpow_le.
apply Zle_trans with (2:=Z.le_max_l _ _).
destruct (ln_beta beta x) as (n,Hn); simpl.
assert (e < n)%Z; try omega.
apply lt_bpow with beta.
apply Rle_lt_trans with (1:=He).
now apply Hn.
apply Rmult_integral_contrapositive_currified; try assumption.
apply Rinv_neq_0_compat.
apply Rgt_not_eq.
apply radix_pos.
Qed.

Theorem round_plus_ge_ulp_FLX : forall x y e,
generic_format beta (FLX_exp prec) x -> generic_format beta (FLX_exp prec) y ->
(bpow e <= Rabs x)%R ->
round beta (FLX_exp prec) rnd (x+y) = 0%R \/
(bpow (e - prec) <= Rabs (round beta (FLX_exp prec) rnd (x+y)))%R.