Corollary or_and_distrib_l:
  forall x y z,
  or (and x y) z = and (or x z) (or y z).

(* Specifications: *)
Theorem and_or_absorb: forall x y, and x (or x y) = x.
Theorem or_and_absorb: forall x y, or x (and x y) = x.
Theorem xor_commut: forall x y, xor x y = xor y x.
Theorem xor_assoc: forall x y z, xor (xor x y) z = xor x (xor y z).
Theorem xor_zero: forall x, xor x zero = x.
Theorem and_or_absorb: forall x y, and x (or x y) = x.
Theorem or_and_absorb: forall x y, or x (and x y) = x.
Theorem xor_commut: forall x y, xor x y = xor y x.
Theorem xor_assoc: forall x y z, xor (xor x y) z = xor x (xor y z).
Theorem xor_zero: forall x, xor x zero = x.