proposition: Lemma succ_round_gt_id : forall (beta : radix) (fexp : Z -> Z), Valid_exp fexp -> forall rnd : R -> Z, Valid_rnd rnd -> forall x : R, ulp beta fexp x <> 0 -> x < succ beta fexp (Generic_fmt.round beta fexp rnd x).
proof: Proof. intros beta fexp Ivalid_exp rnd Ivalid_rnd x Hulp. destruct (generic_format_EM beta fexp x) as [Hx | Hx]. - rewrite round_generic by easy. unfold succ. destruct (Rle_bool_spec 0 x) as [H | H]. + generalize (ulp_ge_0 beta fexp x). lra. + generalize (pred_pos_lt_id beta fexp (- x)). lra. - revert Hx. destruct (succ_round_ge_id beta fexp rnd x) as [H | ->]; [easy |]. intros Hx. now generalize (generic_format_succ beta fexp (Generic_fmt.round beta fexp rnd x) (generic_format_round _ _ _ _)). Qed.
imports: Coq(Reals Psatz PrimInt63 Uint63 Sint63 PArray Floats) Flocq(Core PrimFloat BinarySingleNaN) Missing.Flocq Xreal Basic Sig Interval Float Float_full Specific_bigint Specific_ops Primitive_ops Lang_expr Lang_tac Interval_helper