The behavior of the '''not''' operator distributed over an '''and''' or '''or''' expression in boolean algebra (basically '''and''' and '''or''' are swapped after the distribution): not(a and b) <-> (not a) or (not b) not(a or b) <-> (not a) and (not b) Experienced programmers know these laws intuitively in using them to rewrite conditionals, although they may completely forget the name of these laws, or even that the laws are named. Hardware engineers never forget even so much as the name; they're too central to digital logic. http://en.wikipedia.org/wiki/De_Morgan%27s_Laws for description ---- See BooleanLogic, LadderLogic