unfold addZ in |- *; reflexivity.
intros; elim n.
simpl in |- *; symmetry  in |- *; exact (succ_addZ_l y z).
intros.
do 2 rewrite (tech_add_pos_succZ n0).
rewrite (succ_addZ_l (addZ (pos n0) y) z); elim H; reflexivity.
simple induction n.
simpl in |- *; symmetry  in |- *; exact (pred_addZ_l y z).
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.
Definition neutral (S : Set) (G : S -> Prop) (Add : S -> S -> S)
(O : S) := G O /\ (forall x : S, G x -> Add x O = x /\ Add O x = x).

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