Proof with auto with typeclass_instances.
intros x.
apply sym_eq.
unfold Rabs at 2.
destruct (Rcase_abs x) as [Hx|Hx].
rewrite round_AW_opp.
apply Rabs_left1.
rewrite <- (round_0 Zaway).
apply round_le...
now apply Rlt_le.
apply Rabs_pos_eq.
rewrite <- (round_0 Zaway).
apply round_le...
now apply Rge_le.
Qed.

(* Specifications: *)
Theorem round_ZR_pos :
forall x,
(0 <= x)%R ->
round Ztrunc x = round Zfloor x.
Theorem round_ZR_neg :
forall x,
(x <= 0)%R ->
round Ztrunc x = round Zceil x.
Theorem round_AW_pos :
forall x,
(0 <= x)%R ->
round Zaway x = round Zceil x.
Theorem round_AW_neg :
forall x,
(x <= 0)%R ->
round Zaway x = round Zfloor x.
Theorem generic_format_round :
forall rnd { Hr : Valid_rnd rnd } x,
generic_format (round rnd x).
Theorem round_ZR_pos :
forall x,
(0 <= x)%R ->
round Ztrunc x = round Zfloor x.
Theorem round_ZR_neg :
forall x,
(x <= 0)%R ->
round Ztrunc x = round Zceil x.
Theorem round_AW_pos :
forall x,
(0 <= x)%R ->
round Zaway x = round Zceil x.
Theorem round_AW_neg :
forall x,
(x <= 0)%R ->
round Zaway x = round Zfloor x.
Theorem generic_format_round :
forall rnd { Hr : Valid_rnd rnd } x,
generic_format (round rnd x).