Boolean Algebra Laws and Theorems

Every law, both duals, each with a truth-table proof you can check.

Sixteen entries: fourteen named laws and two definitional rewrites.

Pre-filled with an expression this law actually matches. Edit it and the derivation follows.

read as (A + (A · B))

The derivation on the right is the engine's own reduction of what you typed. Every step names its law, so you can see where the selected law is used — and where it is not.

Absorption

a + a·b = a

Dual: a · (a + b) = a

Theorem — proved from the axioms

Huntington's postulates; Shannon, A Symbolic Analysis of Relay and Switching Circuits (1938)

Jump to the full entry, with its proof

Note:This reduction applies Absorption 1 time, with the binding shown on each step.

Step-by-step simplification

Minimal SOP

A

1 term · 1 literal · verified exactthis minimal form is unique

A + A · B simplifies to A in 1 step. That is a proven minimum (1 term, 1 literal), not a best effort. It is the only minimum-cost form.

Hide the 1 step
  1. Step 1, AbsorptionA + A · B = A

    with A = A, B = B

    A + A · B

    becomes A

Why this is the minimum

The minimum was computed first, by the Quine–McCluskey algorithm with Petrick’s method for the covering step; the steps above are then a named-law path to that already-proven answer.

Commutativity and associativity are handled by canonicalising each product term as a sorted set of literals, which is why there are no pointless “apply the commutative law” steps to read past.

The prime implicants and the covering step for this function are shown in full on the Quine–McCluskey page.

The laws, each with a proof

16 entries: fourteen named laws with both duals, and two definitional rewrites. Every identity below was checked against all of its assignments by the engine when this page was built — an identity that stopped holding would fail the build rather than appear here as a false proof. An axiom is assumed and says so; a theorem carries a derivation from the axioms, ordered so that no proof depends on a law proved later.

Identity

a · 1 = a

Dual: a + 0 = a

Axiom — assumed, not proved

Also called: identity element, unit law.

This is not proved. It is one of Huntington’s postulates — 0 and 1 are the identity elements of + and · — and every other law on this page is built on it.

a · 1 = a — checked over all 2 assignments
aa*1aagree?
000agree
111agree
The dual, a + 0 = a, proved the same way
a + 0 = a — checked over all 2 assignments
aa+0aagree?
000agree
111agree

Wrong: a + 1 = a Right: a + 1 = 1 — that is the Null law, not Identity

Null (annihilation, domination)

a · 0 = 0

Dual: a + 1 = 1

Theorem — proved from the axioms

Also called: annihilation, domination, zero law.

Derivation from the axioms, one named law per line
#Working lineLaw
0a + 1start
1(a + 1) · 1Identity
2(a + 1) · (a + a′)Complement
3a + 1 · a′Distributive, 2nd form
4a + a′Identity
51Complement
a · 0 = 0 — checked over all 2 assignments
aa*00agree?
000agree
100agree
The dual, a + 1 = 1, proved the same way
a + 1 = 1 — checked over all 2 assignments
aa+11agree?
011agree
111agree

Wrong: 1 + b = b Right: 1 + b = 1 — Boolean addition does not carry

Idempotent

a · a = a

Dual: a + a = a

Theorem — proved from the axioms

Also called: tautology law, Boole’s index law.

Derivation from the axioms, one named law per line
#Working lineLaw
0a + astart
1(a + a) · 1Identity
2(a + a) · (a + a′)Complement
3a + a · a′Distributive, 2nd form
4a + 0Complement
5aIdentity
a · a = a — checked over all 2 assignments
aa*aaagree?
000agree
111agree
The dual, a + a = a, proved the same way
a + a = a — checked over all 2 assignments
aa+aaagree?
000agree
111agree

Wrong: a + a = 2a Right: a + a = a — there is no 2 in this algebra

Complement

a · a′ = 0

Dual: a + a′ = 1

Axiom — assumed, not proved

Also called: inverse law, law of the excluded middle.

A Huntington postulate: every element has a complement. The constant forms follow — 0′ = 1 and 1′ = 0 — and so does the fact the De Morgan and Involution proofs turn on: **the complement is unique**. If a + x = 1 and a · x = 0 then x is a′.

a · a′ = 0 — checked over all 2 assignments
aa*a'0agree?
000agree
100agree
The dual, a + a′ = 1, proved the same way
a + a′ = 1 — checked over all 2 assignments
aa+a'1agree?
011agree
111agree

Wrong: a · a′ = a Right: a · a′ = 0 — nothing is both

Involution (double negation)

(a′)′ = a

Dual: self-dual

Theorem — proved from the axioms

Also called: double negation, double complement.

Derivation from the axioms, one named law per line
#Working lineLaw
0(a′)′start
1a′ + a = 1 and a′ · a = 0Complement, both forms
2a satisfies both defining equations of the complement of a′Complement
3auniqueness of the complement
(a′)′ = a — checked over all 2 assignments
a(a')'aagree?
000agree
111agree

Wrong: (a′)′ = a′ Right: (a′)′ = a — two inverters in series cancel

Commutative

a · b = b · a

Dual: a + b = b + a

Axiom — assumed, not proved

Also called: order law.

This toolkit never prints a “commutative” step. Commutativity and associativity are handled by canonicalising each product term as a sorted set of literals, which is why the simplifier does not emit six pointless reorderings.

a · b = b · a — checked over all 4 assignments
aba*bb*aagree?
0000agree
0100agree
1000agree
1111agree
The dual, a + b = b + a, proved the same way
a + b = b + a — checked over all 4 assignments
aba+bb+aagree?
0000agree
0111agree
1011agree
1111agree

Wrong: a → b = b → a Right: implication is not commutative; AND and OR are

Associative

(a·b)·c = a·(b·c)

Dual: (a+b)+c = a+(b+c)

Theorem — proved from the axioms

Also called: grouping law.

Derivable from Huntington’s fourth postulate set; most digital-logic textbooks nevertheless present it as an axiom. Both statements are true, and the table below proves the identity either way. Because AND and OR are associative, A·B·C draws as one three-input gate rather than a cascade.

(a·b)·c = a·(b·c) — checked over all 8 assignments
abc(a*b)*ca*(b*c)agree?
00000agree
00100agree
01000agree
01100agree
10000agree
10100agree
11000agree
11111agree
The dual, (a+b)+c = a+(b+c), proved the same way
(a+b)+c = a+(b+c) — checked over all 8 assignments
abc(a+b)+ca+(b+c)agree?
00000agree
00111agree
01011agree
01111agree
10011agree
10111agree
11011agree
11111agree

Wrong: (a ↑ b) ↑ c = a ↑ (b ↑ c) Right: NAND and NOR are **not** associative — check the table

Distributive

a·(b + c) = a·b + a·c

Dual: a + b·c = (a + b)·(a + c)

Axiom — assumed, not proved

Also called: factoring (right to left), multiplying out.

The second form is the one students refuse to believe, because it is false in ordinary arithmetic. It works here for one reason: a·a = a, so multiplying out gives a + a·c + a·b + b·c and absorption removes the two middle terms. Read right to left the first form is **factoring**, which increases literal count and is therefore budgeted as a size-increasing move by the simplifier.

a·(b + c) = a·b + a·c — checked over all 8 assignments
abca*(b+c)a*b + a*cagree?
00000agree
00100agree
01000agree
01100agree
10000agree
10111agree
11011agree
11111agree
The dual, a + b·c = (a + b)·(a + c), proved the same way
a + b·c = (a + b)·(a + c) — checked over all 8 assignments
abca + b*c(a+b)*(a+c)agree?
00000agree
00100agree
01000agree
01111agree
10011agree
10111agree
11011agree
11111agree

Wrong: a + b·c = (a + b)·c Right: a + b·c = (a + b)·(a + c) — the second form has no arithmetic analogue

Absorption

a + a·b = a

Dual: a · (a + b) = a

Theorem — proved from the axioms

Also called: covering law.

Step 3 is the one people skip: 1 + b = 1, not b.

Derivation from the axioms, one named law per line
#Working lineLaw
0a + a·bstart
1a·1 + a·bIdentity
2a · (1 + b)Distributive (factoring)
3a · 1Null
4aIdentity
a + a·b = a — checked over all 4 assignments
aba + a*baagree?
0000agree
0100agree
1011agree
1111agree
The dual, a · (a + b) = a, proved the same way
a · (a + b) = a — checked over all 4 assignments
aba*(a+b)aagree?
0000agree
0100agree
1011agree
1111agree

On a Karnaugh map. The group for a·b sits entirely inside the group for a, so it circles nothing new. Draw it.

Wrong: A + A·B = A·B Right: A + A·B = A

Warning:

Absorption and redundancy are different laws

a + a·b = a deletes the second term. a + a′·b = a + b keeps it and strips one literal. If the extra literal is the complement of the term you are absorbing into, you cannot absorb. Compare them side by side.

Redundancy (second absorption)

a + a′·b = a + b

Dual: a · (a′ + b) = a · b

Theorem — proved from the axioms

Also called: second absorption law, simplification theorem, wrongly: absorption.

Absorption **deletes** the second term; redundancy **keeps** it and strips one literal. If the extra literal is the complement of the term you are absorbing into, you cannot absorb — you can only strip that literal.

Derivation from the axioms, one named law per line
#Working lineLaw
0a + a′·bstart
1(a + a′) · (a + b)Distributive, 2nd form
21 · (a + b)Complement
3a + bIdentity
a + a′·b = a + b — checked over all 4 assignments
aba + a'*ba + bagree?
0000agree
0111agree
1011agree
1111agree
The dual, a · (a′ + b) = a · b, proved the same way
a · (a′ + b) = a · b — checked over all 4 assignments
aba*(a'+b)a*bagree?
0000agree
0100agree
1000agree
1111agree

On a Karnaugh map. The a′·b group sticks out of the a group by exactly the cells where b is 1, so together they are the group for a plus the group for b. Draw it.

Wrong: “absorbing” A′·B into A to get A Right: A + A′·B = A + B

Warning:

Absorption and redundancy are different laws

a + a·b = a deletes the second term. a + a′·b = a + b keeps it and strips one literal. If the extra literal is the complement of the term you are absorbing into, you cannot absorb. Compare them side by side.

Consensus

a·b + a′·c + b·c = a·b + a′·c

Dual: (a+b)·(a′+c)·(b+c) = (a+b)·(a′+c)

Theorem — proved from the axioms

Also called: consensus theorem, redundancy theorem.

How to spot the consensus term: find two terms containing a complementary pair (a and a′); the consensus is the product of everything else.

Derivation from the axioms, one named law per line
#Working lineLaw
0a·b + a′·c + b·cstart
1a·b + a′·c + b·c·1Identity
2a·b + a′·c + b·c·(a + a′)Complement
3a·b + a′·c + a·b·c + a′·b·cDistributive
4a·b + a′·cAbsorption, twice
a·b + a′·c + b·c = a·b + a′·c — checked over all 8 assignments
abca*b + a'*c + b*ca*b + a'*cagree?
00000agree
00111agree
01000agree
01111agree
10000agree
10100agree
11011agree
11111agree
The dual, (a+b)·(a′+c)·(b+c) = (a+b)·(a′+c), proved the same way
(a+b)·(a′+c)·(b+c) = (a+b)·(a′+c) — checked over all 8 assignments
abc(a+b)*(a'+c)*(b+c)(a+b)*(a'+c)agree?
00000agree
00100agree
01011agree
01111agree
10000agree
10111agree
11000agree
11111agree

On a Karnaugh map. The consensus group straddles the other two and covers no cell they do not already cover — which is exactly the picture of “redundant”. Draw it.

Wrong: looking for a consensus term where no complementary pair exists Right: A·B + A·C has none; A·B + A′·C′ has one, and its consensus is B·C′

De Morgan

(a · b)′ = a′ + b′

Dual: (a + b)′ = a′ · b′

Theorem — proved from the axioms

Also called: De Morgan’s theorem, break the bar, change the sign.

Proved by uniqueness of the complement rather than by table, because that proof generalises to n operands and a table does not: (a₁·a₂·…·aₙ)′ = a₁′ + a₂′ + … + aₙ′.

Derivation from the axioms, one named law per line
#Working lineLaw
0(a·b) + (a′ + b′) = 1first defining equation of a complement
1(a·b) · (a′ + b′) = 0second defining equation
2(a·b)′ = a′ + b′uniqueness of the complement
(a · b)′ = a′ + b′ — checked over all 4 assignments
ab(a*b)'a' + b'agree?
0011agree
0111agree
1011agree
1100agree
The dual, (a + b)′ = a′ · b′, proved the same way
(a + b)′ = a′ · b′ — checked over all 4 assignments
ab(a+b)'a'*b'agree?
0011agree
0100agree
1000agree
1100agree

On a Karnaugh map. Grouping the 0s instead of the 1s is De Morgan on a map. Draw it.

Wrong: (A + B)′ = A′ + B′ Right: (A + B)′ = A′ · B′

Adjacency (K-map combining)

a·b + a·b′ = a

Dual: (a + b)·(a + b′) = a

Theorem — proved from the axioms

Also called: combining, the K-map grouping law, uniting theorem.

This three-step chain is exactly the engine’s ADJACENCY_CHAIN — factoring, complement, identity — and the simplifier prints it as one collapsed step called Adjacency unless bookkeeping steps are switched on.

Derivation from the axioms, one named law per line
#Working lineLaw
0a·b + a·b′start
1a · (b + b′)Distributive (factoring)
2a · 1Complement
3aIdentity
a·b + a·b′ = a — checked over all 4 assignments
aba*b + a*b'aagree?
0000agree
0100agree
1011agree
1111agree
The dual, (a + b)·(a + b′) = a, proved the same way
(a + b)·(a + b′) = a — checked over all 4 assignments
ab(a+b)*(a+b')aagree?
0000agree
0100agree
1011agree
1111agree

On a Karnaugh map. Every group of two is one application; a group of four is two; a group of eight is three. Each doubling removes exactly one more literal. Draw it.

Wrong: A·B + A′·B′ merges to something shorter Right: those two differ in **two** literals and do not merge — that pair is XNOR

Shannon expansion

f = a · f|ₐ₌₁ + a′ · f|ₐ₌₀

Dual: f = (a + f|ₐ₌₀)·(a′ + f|ₐ₌₁)

Theorem — proved from the axioms

Also called: Boole’s expansion theorem, cofactor expansion.

Worked instance: for f = A·B + A′·C, f|A=1 = B and f|A=0 = C, so f = A·B + A′·C reconstructs itself. The dual expansion gives (A + C)·(A′ + B) — which is this function’s minimal POS, computed independently by the minimiser and matching exactly. Expanding on every variable in turn produces the canonical SOP one minterm at a time, and the expansion is what a multiplexer computes.

Derivation from the axioms, one named law per line
#Working lineLaw
0when a = 1 the right-hand side is 1·f|ₐ₌₁ + 0·f|ₐ₌₀Complement, Null
1= f|ₐ₌₁, which is fIdentity
2when a = 0 it is f|ₐ₌₀, which is fthe same two laws
3both cases agree, so the identity holdsproof by case split
f = a · f|ₐ₌₁ + a′ · f|ₐ₌₀ — checked over all 8 assignments
ABCA*B + A'*CA*B + A'*Cagree?
00000agree
00111agree
01000agree
01111agree
10000agree
10100agree
11011agree
11111agree
The dual, f = (a + f|ₐ₌₀)·(a′ + f|ₐ₌₁), proved the same way
f = (a + f|ₐ₌₀)·(a′ + f|ₐ₌₁) — checked over all 8 assignments
ABCA*B + A'*C(A + C)*(A' + B)agree?
00000agree
00111agree
01000agree
01111agree
10000agree
10100agree
11011agree
11111agree

On a Karnaugh map. Splitting the map into the half where a = 1 and the half where a = 0 is one expansion. Draw it.

Wrong: f = a·f + a′·f Right: the two branches are the **cofactors** f|ₐ₌₁ and f|ₐ₌₀, not f itself

Definition of XOR / XNOR

a ⊕ b = a·b′ + a′·b

Dual: a ⊙ b = a·b + a′·b′

Definition — a convention, with nothing to prove

Also called: exclusive or, parity, equivalence (for XNOR).

A definition, not a theorem: there is nothing to prove, only a convention to state. A chain of ⊕ is the sum of its odd-parity minterms.

a ⊕ b = a·b′ + a′·b — checked over all 4 assignments
aba ^ ba*b' + a'*bagree?
0000agree
0111agree
1011agree
1100agree
The dual, a ⊙ b = a·b + a′·b′, proved the same way
a ⊙ b = a·b + a′·b′ — checked over all 4 assignments
aba @ ba*b + a'*b'agree?
0011agree
0100agree
1000agree
1111agree

On a Karnaugh map. Two diagonal cells that never merge, which is why odd parity has no short SOP. Draw it.

Wrong: a ⊕ b = a + b Right: they differ in the row where both are 1

Definition of implication / biconditional

a → b = a′ + b

Dual: a ↔ b = a·b + a′·b′

Definition — a convention, with nothing to prove

Also called: material conditional, biconditional, iff.

A definition, not a theorem. The biconditional is the same function hardware calls XNOR.

a → b = a′ + b — checked over all 4 assignments
aba -> ba' + bagree?
0011agree
0111agree
1000agree
1111agree
The dual, a ↔ b = a·b + a′·b′, proved the same way
a ↔ b = a·b + a′·b′ — checked over all 4 assignments
aba <-> ba*b + a'*b'agree?
0011agree
0100agree
1000agree
1111agree

Wrong: 0 → 1 = 0 Right: 0 → 1 = 1 — a false antecedent makes the conditional vacuously true

Notation and operator precedence used here

Laws are stated in lower-case placeholders — a, b, c — because they hold for any expression substituted in, not only for single variables. · is AND, + is OR, a prime is NOT, is XOR and is XNOR.

In the expression field, + is OR, juxtaposition and * are AND, ' is NOT, ^ is XOR, @ is XNOR, -> is implication and <-> is the biconditional. Precedence runs, highest to lowest: ( ) → NOT → AND → XOR / XNOR → NAND / NOR → OR → IMPLIES (right-associative) → IFF. The fully parenthesised reading is echoed back on every keystroke, and an unbracketed mix of XOR, XNOR, NAND or NOR with AND or OR raises a non-blocking warning.

The overbar is a grouping symbol. Its extent is its operand and plain text cannot express that, so type ' or ¬( … ); overbars are drawn on output only. Postfix ' binds to the single item before it, so AB' is A·(B′) and (A+B)' complements the whole group.

Axiom or theorem?

Huntington's 1904 postulate sets fix what is assumed: closure, the identity elements, the complement, commutativity and distributivity. Everything else on this page is a consequence of those. Naming which is which matters, because a proof that uses a theorem to prove that theorem is not a proof — and the derivations above are ordered so that never happens.

Duality, and why it is not the complement

Swap every · with + and every 0 with 1, leave the variables alone, and a true statement stays true. That is why every law above has a dual column and why proving one form proves the other.

The complement is not the dual. The complement also complements every literal: f ᵈ(x) = f′(x′), which is not f′. That is exactly why a minimal POS is derived by minimising the OFF-set and De Morganing each cube, never by dualising the minimal SOP.

Where each law shows up in practice

The same move, in three vocabularies
LawOn a K-mapAt gate level
Adjacencya group of twodeleting one input from an AND gate
Absorptiona group inside a groupdeleting a whole gate
De Morgangrouping the 0s instead of the 1sbubble pushing
Consensusa group that straddles two others and covers nothing newdeleting an AND gate that changes no output

The printable cheat sheet

Every entry above appears with both duals and no proofs when this page is printed: the print stylesheet drops the navigation, the tool and the truth tables and keeps the identities, which is the honest way to serve “Boolean algebra cheat sheet”. Use your browser's print command; nothing needs to be unlocked or downloaded.

Mistakes this page exists to prevent

  • (A + B)′ = A′ + B′ — it is A′ · B′. De Morgan
  • A + A·B = A·B — it is A. Absorption
  • Filing A + A′B = A + B under Absorption — it is Redundancy
  • 1 + B = B — it is 1. Null
  • Treating the dual as the complement — Duality
  • Assuming NAND is associative — it is not. Associative

Worked examples

Sources

  • Boole, George. An Investigation of the Laws of Thought, on Which are Founded the Mathematical Theories of Logic and Probabilities. London: Walton and Maberly, 1854.
  • De Morgan, Augustus. Formal Logic: or, The Calculus of Inference, Necessary and Probable. London: Taylor and Walton, 1847.
  • Huntington, Edward V. “Sets of Independent Postulates for the Algebra of Logic.” Transactions of the American Mathematical Society 5, no. 3 (1904): 288–309. doi:10.2307/1986459 — the postulate sets the axiom/theorem split on this page follows.
  • Huntington, Edward V. “New Sets of Independent Postulates for the Algebra of Logic, with Special Reference to Whitehead and Russell’s Principia Mathematica.” Transactions of the American Mathematical Society 35, no. 1 (1933): 274–304. doi:10.2307/1989325.
  • Shannon, Claude E. “A Symbolic Analysis of Relay and Switching Circuits.” Transactions of the American Institute of Electrical Engineers 57, no. 12 (December 1938): 713–723. doi:10.1109/T-AIEE.1938.5057767 — Shannon expansion, and the switching interpretation of every law here.
  • Quine, Willard V. “The Problem of Simplifying Truth Functions.” The American Mathematical Monthly 59, no. 8 (October 1952): 521–531. doi:10.2307/2308219 — the consensus operation.
  • Karnaugh, Maurice. “The Map Method for Synthesis of Combinational Logic Circuits.” Transactions of the AIEE, Part I 72, no. 5 (November 1953): 593–599. doi:10.1109/TCE.1953.6371932 — the map readings.