cut (predZ OZ = neg 0); intros.
elim H.
rewrite (pred_addZ_r x OZ); rewrite (add_OZ x); reflexivity.
reflexivity.
Qed.
Definition commutative (U : Set) (op : U -> U -> U) :=
forall x y : U, op x y = op y x.

(* Specifications: *)
Theorem addZ_commutativity : commutative Z addZ.
unfold commutative in |- *; intros; elim x.