Karnaugh map vs Quine–McCluskey
A Karnaugh map and the Quine–McCluskey method find the same thing, the prime implicants of a function and a cover made of them; the map does it by eye on up to four or five variables, the tabular method does it mechanically for any number. The ten-minterm function below has six prime implicants and a three-term cover.
The function is Σm(A, B, C, D; 0, 1, 2, 5, 6, 7, 8, 9, 10, 14), a textbook example. The engine's map reports six prime implicants and derives the cover (NOT A AND B AND D) OR (NOT B AND NOT C) OR (C AND NOT D), three terms, checked equivalent on all sixteen rows. The canonical DNF has ten terms and the canonical CNF six clauses, and the mechanical gate construction from the canonical form runs to hundreds of gates on either basis, which is why nobody builds from the canonical form.
Quine–McCluskey finds the same six prime implicants by repeatedly merging minterms that differ in one bit, in a table rather than a grid, then selects a cover from a prime implicant chart, where essential implicants are chosen first. The map does the merging visually, with wraparound standing in for the bit-difference rule. Beyond four variables the grid stops being readable and the table keeps working, at exponential cost in the worst case; that is the whole comparison.
The engine's normal-form converter has a prime-implicant method that it falls back to when the algebraic route exceeds its limits, which is the tabular idea applied by machine. Neither the map nor the table claims a smallest cover among several irreducible ones; the engine calls its cover irreducible and checks it, and leaves the word minimum to the textbooks.
Example
f := Σm(A, B, C, D; 0, 1, 2, 5, 6, 7, 8, 9, 10, 14) · output
Exact checks
Truth table (16 rows)
| # | A | B | C | D | f |
|---|---|---|---|---|---|
| 0 | FALSE | FALSE | FALSE | FALSE | TRUE |
| 1 | FALSE | FALSE | FALSE | TRUE | TRUE |
| 2 | FALSE | FALSE | TRUE | FALSE | TRUE |
| 3 | FALSE | FALSE | TRUE | TRUE | FALSE |
| 4 | FALSE | TRUE | FALSE | FALSE | FALSE |
| 5 | FALSE | TRUE | FALSE | TRUE | TRUE |
| 6 | FALSE | TRUE | TRUE | FALSE | TRUE |
| 7 | FALSE | TRUE | TRUE | TRUE | TRUE |
| 8 | TRUE | FALSE | FALSE | FALSE | TRUE |
| 9 | TRUE | FALSE | FALSE | TRUE | TRUE |
| 10 | TRUE | FALSE | TRUE | FALSE | TRUE |
| 11 | TRUE | FALSE | TRUE | TRUE | FALSE |
| 12 | TRUE | TRUE | FALSE | FALSE | FALSE |
| 13 | TRUE | TRUE | FALSE | TRUE | FALSE |
| 14 | TRUE | TRUE | TRUE | FALSE | TRUE |
| 15 | TRUE | TRUE | TRUE | TRUE | FALSE |
Logic diagram
Karnaugh map
- cells m5, m7
NOT A AND B AND D - cells m0, m1, m8, m9
NOT B AND NOT C - cells m2, m6, m10, m14
C AND NOT D
Minterms and maxterms
f(A, B, C, D) = Σm(0, 1, 2, 5, 6, 7, 8, 9, 10, 14)f(A, B, C, D) = ΠM(3, 4, 11, 12, 13, 15)Variable order: A, B, C, D · 16 rows
Normal forms
Conjunctive normal form (CNF)
(A OR B OR NOT C OR NOT D) AND (A OR NOT B OR C OR D) AND (NOT A OR B OR NOT C OR NOT D) AND (NOT A OR NOT B OR C OR D) AND (NOT A OR NOT B OR C OR NOT D) AND (NOT A OR NOT B OR NOT C OR NOT D)6 clauses, 24 literals · complete · Minterm expansion ×1
Disjunctive normal form (DNF)
(A AND B AND C AND NOT D) OR (A AND NOT B AND C AND NOT D) OR (A AND NOT B AND NOT C AND D) OR (A AND NOT B AND NOT C AND NOT D) OR (NOT A AND B AND C AND D) OR (NOT A AND B AND C AND NOT D) OR (NOT A AND B AND NOT C AND D) OR (NOT A AND NOT B AND C AND NOT D) OR (NOT A AND NOT B AND NOT C AND D) OR (NOT A AND NOT B AND NOT C AND NOT D)10 terms, 40 literals · complete · Minterm expansion ×1
NAND-only and NOR-only
NAND-only form
NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))))), NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))), NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))), NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(A, A), NAND(B, B)), NAND(NAND(A, A), NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))))), NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))), NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))), NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))))))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))), NAND(NAND(NAND(A, B), NAND(A, B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))), NAND(NAND(NAND(A, B), NAND(A, B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D)))), NAND(NAND(NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D))))), NAND(NAND(NAND(NAND(NAND(A, A), B), NAND(NAND(A, A), B)), NAND(NAND(C, D), NAND(C, D))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), NAND(D, D)), NAND(NAND(C, C), NAND(D, D)))))), NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(NAND(C, C), D), NAND(NAND(C, C), D))))), NAND(NAND(NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))), NAND(NAND(NAND(A, B), NAND(A, B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D))))), NAND(NAND(NAND(NAND(A, NAND(B, B)), NAND(A, NAND(B, B))), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))), NAND(NAND(NAND(A, B), NAND(A, B)), NAND(NAND(C, NAND(D, D)), NAND(C, NAND(D, D)))))))))719 gates · verified equivalent on every row
NOR-only form
NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))), NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))), NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))), NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, D), NOR(C, D))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(A, B), NOR(A, B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))), NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))), NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))), NOR(NOR(NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D))))), NOR(NOR(NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D)))), NOR(NOR(NOR(NOR(A, NOR(B, B)), NOR(A, NOR(B, B))), NOR(NOR(NOR(C, C), NOR(D, D)), NOR(NOR(C, C), NOR(D, D)))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, D), NOR(C, D))))), NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(C, NOR(D, D)), NOR(C, NOR(D, D)))))), NOR(NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))), NOR(NOR(NOR(NOR(NOR(A, A), B), NOR(NOR(A, A), B)), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D))), NOR(NOR(NOR(NOR(A, A), NOR(B, B)), NOR(NOR(A, A), NOR(B, B))), NOR(NOR(NOR(C, C), D), NOR(NOR(C, C), D)))))))))1247 gates · verified equivalent on every row
The common slip
Reading a map with wraparound missed. Cells 0, 2, 8 and 10 of a four-variable map are the four corners, one group, NOT B AND NOT D; a reader who sees them as two separate pairs writes a longer cover and nothing is wrong except the length.
Questions
When should I stop using the map?
At five variables the map becomes two four-variable maps side by side, and at six it is unreadable. The engine draws maps to four variables and uses the prime-implicant method beyond that.
Is the three-term cover the only one?
Not necessarily; with six prime implicants and three in the cover, another selection may cover the same minterms with the same count. The engine reports one cover and checks it; which cover is cheapest depends on the technology.
Related
Practice
- Karnaugh map exercises with answers: 2 variables
- Karnaugh map exercises with answers: 3 variables
- Karnaugh map exercises with answers: 4 variables
See also
- Karnaugh map (K-map): meaning and examples
- Quine–McCluskey method: meaning and examples
- Prime implicant: meaning and examples
- Essential prime implicant: meaning and examples
- Karnaugh map solver: 2 to 4 variables, groups, SOP and POS, don’t-cares from assumptions
- Prime implicants and essential prime implicants on a K-map
- Karnaugh map grouping rule: adjacent cells drop the variable that changes
- Lesson 11: Karnaugh maps (advanced, 15 min)
Compare
Generated from the Tangibool engine, semantics tangibool-semantics/1, engine 1.0.0, build . Every table, map, simplification and verdict on these pages was computed by the Tangibool engine when the site was built, and every claim was re-checked by the same exact checker the app uses. Limits are stated where they apply. © 2026 Foreranger LTD.