(** Zfloor and Zceil *)
Definition Zfloor (x : R) := (up x - 1)%Z.

(* Specifications: *)
Theorem Zfloor_lb : forall x : R, (Z2R (Zfloor x) <= x)%R.
Theorem Zfloor_ub : forall x : R, (x < Z2R (Zfloor x) + 1)%R.
Theorem Zfloor_lub : forall n x, (Z2R n <= x)%R -> (n <= Zfloor x)%Z.
Theorem Zfloor_imp : forall n x, (Z2R n <= x < Z2R (n + 1))%R -> Zfloor x = n.
Theorem Zfloor_Z2R : forall n, Zfloor (Z2R n) = n.
Theorem Zfloor_le : forall x y, (x <= y)%R -> (Zfloor x <= Zfloor y)%Z.
Theorem Zfloor_lb : forall x : R, (Z2R (Zfloor x) <= x)%R.
Theorem Zfloor_ub : forall x : R, (x < Z2R (Zfloor x) + 1)%R.
Theorem Zfloor_lub : forall n x, (Z2R n <= x)%R -> (n <= Zfloor x)%Z.
Theorem Zfloor_imp : forall n x, (Z2R n <= x < Z2R (n + 1))%R -> Zfloor x = n.
Theorem Zfloor_Z2R : forall n, Zfloor (Z2R n) = n.
Theorem Zfloor_le : forall x y, (x <= y)%R -> (Zfloor x <= Zfloor y)%Z.