Notation negb_elim := negb_involutive (only parsing).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.
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_prop : forall a b:bool, a || b = true -> a = true \/ b = true.
Lemma orb_true_intro : forall b1 b2:bool, b1 = true \/ b2 = true -> b1 || b2 = true.
Lemma orb_false_intro : forall b1 b2:bool, b1 = false -> b2 = false -> b1 || b2 = false.
Lemma orb_false_elim : forall b1 b2:bool, b1 || b2 = false -> b1 = false /\ b2 = false.
Lemma orb_diag : forall b, b || b = b.
Lemma orb_true_r : forall b:bool, b || true = true.
Lemma orb_true_l : forall b:bool, true || b = true.