Ltac destr_bool :=
 intros; destruct_all bool; simpl in *; trivial; try discriminate.(** Interpretation of booleans as propositions *)

Definition Is_true (b:bool) :=
  match b with
    | true => True
    | false => False
  end.

(* Specifications: *)
Lemma bool_dec : forall b1 b2 : bool, {b1 = b2} + {b1 <> b2}.
Lemma diff_true_false : true <> false.
Lemma diff_false_true : false <> true.
Lemma eq_true_false_abs : forall b:bool, b = true -> b = false -> False.
Lemma not_true_is_false : forall b:bool, b <> true -> b = false.
Lemma not_false_is_true : forall b:bool, b <> false -> b = true.
Lemma not_true_iff_false : forall b, b <> true <-> b = false.
Lemma not_false_iff_true : forall b, b <> false <-> b = true.