Notation xorb_assoc := xorb_assoc_reverse (only parsing).

(* Specifications: *)
Lemma xorb_eq : forall b b':bool, xorb b b' = false -> b = b'.
Lemma xorb_move_l_r_1 : forall b b' b'':bool, xorb b b' = b'' -> b' = xorb b b''.
Lemma xorb_move_l_r_2 : forall b b' b'':bool, xorb b b' = b'' -> b = xorb b'' b'.
Lemma xorb_move_r_l_1 : forall b b' b'':bool, b = xorb b' b'' -> xorb b' b = b''.
Lemma xorb_move_r_l_2 : forall b b' b'':bool, b = xorb b' b'' -> xorb b b'' = b'.
Lemma negb_xorb a b : negb (xorb a b) = Bool.eqb a b.
Lemma negb_xorb_l : forall b b', negb (xorb b b') = xorb (negb b) b'.
Lemma negb_xorb_r : forall b b', negb (xorb b b') = xorb b (negb b').
Lemma xorb_negb_negb : forall b b', xorb (negb b) (negb b') = xorb b b'.
Lemma eq_iff_eq_true : forall b1 b2, b1 = b2 <-> (b1 = true <-> b2 = true).
Lemma eq_true_iff_eq : forall b1 b2, (b1 = true <-> b2 = true) -> b1 = b2.