(* OZ *)
unfold addZ in |- *; reflexivity.
(* pos n *)
intros; elim n.
(* pos O *)
simpl in |- *; symmetry  in |- *; exact (succ_addZ_l y z).
(* pos (S y0) *)
intros.
do 2 rewrite (tech_add_pos_succZ n0).
rewrite (succ_addZ_l (addZ (pos n0) y) z); elim H; reflexivity.
(* neg n *)
simple induction n.
(* neg O *)
simpl in |- *; symmetry  in |- *; exact (pred_addZ_l y z).
(* neg (S n0) *)
intros.
do 2 rewrite (tech_add_neg_predZ n0).
rewrite (pred_addZ_l (addZ (neg n0) y) z); elim H; reflexivity.
Qed.
(************)
Definition IdZ (x : Z) := True.

(* Specifications: *)
(*******************)
Theorem addZ_neutral : neutral Z IdZ addZ OZ.
unfold neutral in |- *; intros.