Definition Z_eq_bool a b :=
  match a, b with
  | Z0, Z0 => true
  | Zpos a', Zpos b' => pos_eq_bool a' b'
  | Zneg a', Zneg b' => pos_eq_bool a' b'
  | _, _ => false
  end.

(* Specifications: *)
Theorem Z_eq_bool_correct : forall p q : Z, match Z_eq_bool p q with | true => p = q | false => p <> q end.
Theorem Zlt_mult_ZERO : forall x y : Z, (0 < x)%Z -> (0 < y)%Z -> (0 < x * y)%Z.
Theorem Zlt_Zminus_ZERO : forall z1 z2 : Z, (z2 < z1)%Z -> (0 < z1 - z2)%Z.
Theorem Zle_Zminus_ZERO : forall z1 z2 : Z, (z2 <= z1)%Z -> (0 <= z1 - z2)%Z.
Theorem Zle_Zpred_Zpred : forall z1 z2 : Z, (z1 <= z2)%Z -> (Zpred z1 <= Zpred z2)%Z.
Theorem Zle_ZERO_Zabs : forall z : Z, (0 <= Zabs z)%Z.
Theorem Zlt_Zabs_inv1 : forall z1 z2 : Z, (Zabs z1 < z2)%Z -> (- z2 < z1)%Z.
Theorem Zlt_Zabs_inv2 : forall z1 z2 : Z, (Zabs z1 < Zabs z2)%Z -> (z1 < Zabs z2)%Z.
Theorem Zle_Zabs_inv1 : forall z1 z2 : Z, (Zabs z1 <= z2)%Z -> (- z2 <= z1)%Z.
Theorem Zle_Zabs_inv2 : forall z1 z2 : Z, (Zabs z1 <= z2)%Z -> (z1 <= z2)%Z.
Theorem Zlt_Zabs_Zpred : forall z1 z2 : Z, (Zabs z1 < z2)%Z -> z1 <> Zpred z2 -> (Zabs (Zsucc z1) < z2)%Z.
Theorem Zle_n_Zpred : forall z1 z2 : Z, (Zpred z1 <= Zpred z2)%Z -> (z1 <= z2)%Z.
Theorem Zpred_Zopp_Zs : forall z : Z, Zpred (- z) = (- Zsucc z)%Z.
Theorem Zlt_1_O : forall z : Z, (1 <= z)%Z -> (0 < z)%Z.
Theorem Zlt_not_eq : forall p q : Z, (p < q)%Z -> p <> q.
Theorem Zlt_not_eq_rev : forall p q : Z, (q < p)%Z -> p <> q.
Theorem Zle_Zpred_Zlt : forall z1 z2 : Z, (z1 <= z2)%Z -> (Zpred z1 < z2)%Z.
Theorem Zle_Zpred_inv : forall z1 z2 : Z, (z1 <= Zpred z2)%Z -> (z1 < z2)%Z.
Theorem Zabs_intro : forall (P : Z -> Prop) (z : Z), P (- z)%Z -> P z -> P (Zabs z).
Theorem Zpred_Zle_Zabs_intro : forall z1 z2 : Z, (- Zpred z2 <= z1)%Z -> (z1 <= Zpred z2)%Z -> (Zabs z1 < z2)%Z.
Theorem Zlt_ZERO_Zle_ONE : forall z : Z, (0 < z)%Z -> (1 <= z)%Z.
Theorem ptonat_def1 : forall p q, 1 < Pmult_nat p (S (S q)).
Theorem lt_S_le : forall p q, p < q -> S p <= q.
Theorem Zlt_Zabs_intro : forall z1 z2 : Z, (- z2 < z1)%Z -> (z1 < z2)%Z -> (Zabs z1 < z2)%Z.