Proof with auto with typeclass_instances.
intros x Zr.
unfold canonic_exp.
apply monotone_exp.
now apply ln_beta_round_ge.
Qed.
End monotone_exp.
Section Znearest.
(** Roundings to nearest: when in the middle, use the choice function *)
Variable choice : Z -> bool.
Definition Znearest x :=
match Rcompare (x - Z2R (Zfloor x)) (/2) with
| Lt => Zfloor x
| Eq => if choice (Zfloor x) then Zceil x else Zfloor x
| Gt => Zceil x
end.

Theorem Znearest_le_ceil :
forall x,
(Znearest x <= Zceil x)%Z.