Module NZQuot := Nop <+ NZDivProp A Quot2Div B.
End Private_Div.
Ltac pos_or_neg a :=
let LT := fresh "LT" in
let LE := fresh "LE" in
destruct (le_gt_cases 0 a) as [LE|LT]; [|rewrite <- opp_pos_neg in LT].
(** Another formulation of the main equation *)
(** A few sign rules (simple ones) *)
(** A division of a small number by a bigger one yields zero. *)
(** The sign of [a rem b] is the one of [a] (when it's not null) *)
(** Operations and absolute value *)
(** We have a general bound for absolute values *)
(** * Order results about rem and quot *)
(** A modulo cannot grow beyond its starting point. *)

Theorem rem_le: forall a b, 0<=a -> 0<b -> a rem b <= a.