(* Contribution to the Coq Library   V6.3 (July 1999)                    *)
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.
intro x; elim x; auto with arith.
intro n; elim n; auto with arith.
Qed.
intro x; elim x; auto with arith.
intro n; elim n; auto with arith.
Qed.
intro x; try assumption.
rewrite (pred_succZ x); rewrite (succ_predZ x); trivial with arith.
Qed.
intro n; elim n; auto with arith.
intro H'; elim (lt_n_O 0); auto with arith.
Qed.

Lemma tech_succ_posOZ : forall n : nat, succZ (posOZ n) = pos n.