(** The different divisions will only differ in the conditions they impose on [modulo]. For NZ, we have only described the behavior on positive numbers. *)
Module Type NZDiv (A : NZOrdAxiomsSig) := DivMod A <+ NZDivSpec A.
Module Type NZDiv' (A : NZOrdAxiomsSig) := NZDiv A <+ DivModNotation A.
Module Type NZDivProp
(Import A : NZOrdAxiomsSig')
(Import B : NZDiv' A)
(Import C : NZMulOrderProp A).
(** Uniqueness theorems *)

(* Specifications: *)
Theorem div_mod_unique :
forall b q1 q2 r1 r2, 0<=r1<b -> 0<=r2<b ->
b*q1+r1 == b*q2+r2 -> q1 == q2 /\ r1 == r2.
Theorem div_unique:
forall a b q r, 0<=a -> 0<=r<b ->
a == b*q + r -> q == a/b.
Theorem mod_unique:
forall a b q r, 0<=a -> 0<=r<b ->
a == b*q + r -> r == a mod b.
Theorem div_unique_exact a b q:
0<=a -> 0<b -> a == b*q -> q == a/b.