Definition succZ (x : Z) :=
  match x return Z with
  | OZ => IZ
  | pos n => pos (S n)
  | neg n => match n return Z with
             | O => OZ
             | S m => neg m
             end
  end.Definition predZ (x : Z) :=
  match x return Z with
  | OZ => neg 0
  | pos n => match n return Z with
             | O => OZ
             | S m => pos m
             end
  | neg n => neg (S n)
  end.

Lemma succ_predZ : forall x : Z, succZ (predZ x) = x.