THE DE MORGAN DUALITY AND and OR are one law seen through NOT
¬(a ∧ b) = ¬a ∨ ¬b and its mirror ¬(a ∨ b) = ¬a ∧ ¬b. Negation is a mirror that swaps AND with OR — so every Boolean identity comes in a dual pair, and proving one proves the other by flipping ∧↔∨ and 0↔1. It is why NAND and NOR are each enough to build every circuit, and why a proof about intersections is secretly also a proof about unions.
THE TECHNIQUE ¬(a∧b)=¬a∨¬b : negation swaps ∧ and ∨
Push negation through a bitwise AND and watch it come out the other side as OR (and vice-versa), bit for bit — here NOT is x XOR 255 on a byte: live demo
HISTORY & CREDIT De Morgan 1847
“AND and OR are two independent operations.” — they are one operation and its reflection. Under NOT, ∧becomes∨; there is only ever one law and its dual. The whole of Boolean algebra folds in half along the negation mirror. cited
~1323 · William of Ockham — states the equivalences in words, centuries before symbols (they are visible even in Aristotle's opposition). 1847 · Augustus De Morgan — Formal Logic: the algebraic statement that now bears his name. 1880–1913 · C. S. Peirce (c.1880) and Henry Sheffer (1913) — prove a single gate (NOR / NAND, the Peirce arrow / Sheffer stroke) is functionally complete: the universality De Morgan makes possible. 1938 · Claude Shannon — applies Boolean algebra to relay/switching circuits; the duality becomes physical design.
The duality principle of Boolean algebra is exactly this: swap ∧↔∨ and 0↔1 in any theorem and you get another theorem, free. One proof, two results. De Morgan 1847
RECOMMEND FOR I-13 both laws hold bit-exact, computed
On the canonical compiler, with NOT emulated as x XOR 255 on a byte, both De Morgan laws hold to the bit — the negated AND equals the OR of negations:
$ i13 run demorgan.i13 # a=202, b=108 ; NOT x = x^255
~(a & b) = 183 (~a)|(~b) = 183 difference = 0 -- law 1
~(a | b) = 17 (~a)&(~b) = 17 difference = 0 -- law 2 (the dual)
Recommend: De Morgan duality is LIT for I-13 — verified on a=202, b=108 that ~(a&b) = (~a)|(~b) = 183 and the dual ~(a|b) = (~a)&(~b) = 17, differences exactly 0, using only & | ^. Negation is the mirror; AND and OR are one law reflected. Every circuit built from one gate leans on it.