intros p1 p2;
apply
Zabs_intro with (P := fun x => (x <= Zabs (Zpos p2) + Zabs (Zneg p1))%Z);
try rewrite Zopp_plus_distr; auto with zarith.
intros p1 p2;
apply
Zabs_intro with (P := fun x => (x <= Zabs (Zpos p2) + Zabs (Zneg p1))%Z);
try rewrite Zopp_plus_distr; auto with zarith.
Qed.
Hint Resolve Zabs_tri: zarith.

(* Specifications: *)
Theorem ZquotientUnique :
forall m n q r : Z,
n <> 0%Z ->
m = (q * n + r)%Z ->
(Zabs (q * n) <= Zabs m)%Z -> (Zabs r < Zabs n)%Z -> q = Zquotient m n.