intros n0 n q; elim q.
(* O *)
simpl in |- *; intros; absurd (S n0 = 0). discriminate. exact H.
(* S y *)
intros y H; unfold negOZ in |- *. rewrite (tech_mult_pos_negZ n y); intros.
simpl in H0; rewrite (eq_add_S _ _ H0).
elim (mult_commut (S n) y); simpl in |- *; elim (plus_comm (n + y) (n * y)).
elim (plus_assoc n y (n * y)); reflexivity.
Qed.

(* Specifications: *)
(***************)
Lemma tech_div31 :
forall n q : nat,
addZ (oppZ (multZ (pos n) (pos q))) (pos n) = oppZ (multZ (pos n) (posOZ q)).