(** For stating the fully general result, let's give a short name to the condition on the remainder. *)
Definition Remainder r b :=  0 <= r < b \/ b < r <= 0.
(** Another equivalent formulation: *)
Definition Remainder_alt r b :=  Z.abs r < Z.abs b /\ Z.sgn r <> - Z.sgn b.
(* In the last formulation, [ Z.sgn r <> - Z.sgn b ] is less nice than saying [ Z.sgn r = Z.sgn b ], but at least it works even when [r] is null. *)

(* Specifications: *)
Lemma Remainder_equiv : forall r b, Remainder r b <-> Remainder_alt r b.
#[global]
Hint Unfold Remainder : core.