(*************)
Definition oppZ (x : Z) :=
  match x return Z with
  | OZ =>
      (* OZ *)  OZ
      (* pos n *) 
  | pos n => neg n
      (* neg n *) 
  | neg n => pos n
  end.

Lemma tech_add_pos_negZ : forall n : nat, addZ (pos n) (neg n) = OZ.