#[global]
Hint Unfold lt: bool.
#[ local ] Definition compare (b1 b2 : bool) :=
match b1, b2 with
| false, true => Lt
| true, false => Gt
| _, _ => Eq
end.

(* Specifications: *)
Lemma compare_spec : forall b1 b2,
CompareSpec (b1 = b2) (lt b1 b2) (lt b2 b1) (compare b1 b2).
Lemma eqb_reflx : forall b:bool, eqb b b = true.
Lemma eqb_prop : forall a b:bool, eqb a b = true -> a = b.
Lemma eqb_true_iff : forall a b:bool, eqb a b = true <-> a = b.
#[global]
Instance Decidable_eq_bool : forall (x y : bool), Decidable (eq x y) := {
Decidable_spec := eqb_true_iff x y
}.
Lemma eqb_false_iff : forall a b:bool, eqb a b = false <-> a <> b.
Definition ifb (b1 b2 b3:bool) : bool :=
match b1 with
| true => b2
| false => b3
end.