Class Valid_rnd := {
  Zrnd_le : forall x y, (x <= y)%R -> (rnd x <= rnd y)%Z ;
  Zrnd_Z2R : forall n, rnd (Z2R n) = n
}.Class Valid_rnd := {
  Zrnd_le : forall x y, (x <= y)%R -> (rnd x <= rnd y)%Z ;
  Zrnd_Z2R : forall n, rnd (Z2R n) = n
}.Class Valid_rnd := {
  Zrnd_le : forall x y, (x <= y)%R -> (rnd x <= rnd y)%Z ;
  Zrnd_Z2R : forall n, rnd (Z2R n) = n
}.

(* Specifications: *)
Theorem Zrnd_DN_or_UP : forall x, rnd x = Zfloor x \/ rnd x = Zceil x.
Theorem Zrnd_ZR_or_AW : forall x, rnd x = Ztrunc x \/ rnd x = Zaway x.
Theorem Zrnd_DN_or_UP : forall x, rnd x = Zfloor x \/ rnd x = Zceil x.
Theorem Zrnd_ZR_or_AW : forall x, rnd x = Ztrunc x \/ rnd x = Zaway x.