Inductive Zeq_bool_prop (x y : Z) : bool -> Prop :=
  | Zeq_bool_true_ : x = y -> Zeq_bool_prop x y true
  | Zeq_bool_false_ : x <> y -> Zeq_bool_prop x y false.Inductive Zeq_bool_prop (x y : Z) : bool -> Prop :=
  | Zeq_bool_true_ : x = y -> Zeq_bool_prop x y true
  | Zeq_bool_false_ : x <> y -> Zeq_bool_prop x y false.Inductive Zeq_bool_prop (x y : Z) : bool -> Prop :=
  | Zeq_bool_true_ : x = y -> Zeq_bool_prop x y true
  | Zeq_bool_false_ : x <> y -> Zeq_bool_prop x y false.

(* Specifications: *)
Theorem Zeq_bool_spec : forall x y, Zeq_bool_prop x y (Zeq_bool x y).
Theorem Zeq_bool_true : forall x y, x = y -> Zeq_bool x y = true.
Theorem Zeq_bool_false : forall x y, x <> y -> Zeq_bool x y = false.
Theorem Zeq_bool_spec : forall x y, Zeq_bool_prop x y (Zeq_bool x y).
Theorem Zeq_bool_true : forall x y, x = y -> Zeq_bool x y = true.
Theorem Zeq_bool_false : forall x y, x <> y -> Zeq_bool x y = false.