(** * Definitions and theorems over the type [Z] *)

Definition zeq: forall (x y: Z), {x = y} + {x <> y} := Z.eq_dec.

(* Specifications: *)
Lemma zeq_true: forall (A: Type) (x: Z) (a b: A), (if zeq x x then a else b) = a.
Lemma zeq_false: forall (A: Type) (x y: Z) (a b: A), x <> y -> (if zeq x y then a else b) = b.
Lemma zeq_true: forall (A: Type) (x: Z) (a b: A), (if zeq x x then a else b) = a.
Lemma zeq_false: forall (A: Type) (x y: Z) (a b: A), x <> y -> (if zeq x y then a else b) = b.