(*******************************)
(** *       PowerRZ            *)
(*******************************)
(*i Due to L.Thery i*)
Local Coercion Z_of_nat : nat >-> Z.
(* the following section should probably be somewhere else, but not sure where *)
Section Z_compl.
Local Open Scope Z_scope.
(* Provides a way to reason directly on Z in terms of nats instead of positive *)
Inductive Z_spec (x : Z) : Z -> Type :=
| ZintNull : x = 0 -> Z_spec x 0
| ZintPos (n : nat) : x = n -> Z_spec x n
| ZintNeg (n : nat) : x = - n -> Z_spec x (- n).

(* Specifications: *)
Lemma intP (x : Z) : Z_spec x x.
End Z_compl.