intros.
elim (tech_opp_pos_negZ q); intros; elim H1.
rewrite (mult_oppZ_r (pos n) (pos q)); rewrite (tech_div32 n q r H0).
rewrite
(addZ_associativity (oppZ (multZ (pos n) (pos q))) (pos n) (oppZ (posOZ r)))
.
rewrite (tech_div31 n q).
elim
(opp_add Z IdZ addZ OZ oppZ Z_group addZ_commutativity
(multZ (pos n) (posOZ q)) (posOZ r) I I).
elim (tech_div1 n0 n q r H); reflexivity.
Qed.

(* Specifications: *)
(**************)
Lemma tech_div4 :
forall n0 n q r : nat,
S n0 = q * S n + r -> pos n0 = addZ (multZ (neg n) (negOZ q)) (posOZ r).