split; simpl.
- intros x; destruct x; reflexivity.
- intros x y; destruct x; destruct y; reflexivity.
- intros x y z; destruct x; destruct y; destruct z; reflexivity.
- reflexivity.
- intros x y; destruct x; destruct y; reflexivity.
- intros x y; destruct x; destruct y; reflexivity.
- intros x y z; destruct x; destruct y; destruct z; reflexivity.
- reflexivity.
- intros x; destruct x; reflexivity.
Qed.
Definition bool_eq (b1 b2:bool) :=
if b1 then b2 else negb b2.

(* Specifications: *)
Lemma bool_eq_ok : forall b1 b2, bool_eq b1 b2 = true -> b1 = b2.
intros b1 b2; destruct b1; destruct b2; auto.