Notation negb_intro := negb_involutive_reverse (only parsing).

(* Specifications: *)
Lemma negb_sym : forall b b':bool, b' = negb b -> b = negb b'.
Lemma no_fixpoint_negb : forall b:bool, negb b <> b.
Lemma eqb_negb1 : forall b:bool, eqb (negb b) b = false.
Lemma eqb_negb2 : forall b:bool, eqb b (negb b) = false.
Lemma if_negb :
forall (A:Type) (b:bool) (x y:A),
(if negb b then x else y) = (if b then y else x).
Lemma negb_true_iff : forall b, negb b = true <-> b = false.
Lemma negb_false_iff : forall b, negb b = false <-> b = true.
(**************************)
(** * Properties of [orb] *)
(**************************)
Lemma orb_true_iff :
forall b1 b2, b1 || b2 = true <-> b1 = true \/ b2 = true.
Lemma orb_false_iff :
forall b1 b2, b1 || b2 = false <-> b1 = false /\ b2 = false.
Lemma orb_true_elim :
forall b1 b2:bool, b1 || b2 = true -> {b1 = true} + {b2 = true}.
Lemma orb_true_intro :
forall b1 b2:bool, b1 = true \/ b2 = true -> b1 || b2 = true.