Skip to content

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

Always true (tautology)? No Counterexample: A = F, B = F, C = T, D = T · Exhaustively checked and solver cross-checked · 4 rows
Always false (contradiction)? No Counterexample: A = F, B = F, C = F, D = F · Exhaustively checked and solver cross-checked · 1 rows
Can be true? Yes Example assignment: A = F, B = F, C = F, D = F · Exhaustively checked and solver cross-checked · 1 rows

Truth table (16 rows)

Karnaugh map vs Quine–McCluskey
#ABCDf
0FALSEFALSEFALSEFALSETRUE
1FALSEFALSEFALSETRUETRUE
2FALSEFALSETRUEFALSETRUE
3FALSEFALSETRUETRUEFALSE
4FALSETRUEFALSEFALSEFALSE
5FALSETRUEFALSETRUETRUE
6FALSETRUETRUEFALSETRUE
7FALSETRUETRUETRUETRUE
8TRUEFALSEFALSEFALSETRUE
9TRUEFALSEFALSETRUETRUE
10TRUEFALSETRUEFALSETRUE
11TRUEFALSETRUETRUEFALSE
12TRUETRUEFALSEFALSEFALSE
13TRUETRUEFALSETRUEFALSE
14TRUETRUETRUEFALSETRUE
15TRUETRUETRUETRUEFALSE

Logic diagram

Karnaugh map vs Quine–McCluskey Karnaugh map vs Quine–McCluskey A B C D f Σm(0,1,2,5,6,7,8,9,10,14)ABCD
Karnaugh map vs Quine–McCluskey Karnaugh map vs Quine–McCluskey A B C D f Σm(0,1,2,5,6,7,8,9,10,14)ABCD

Karnaugh map

AB \ CD
00
01
11
10
00
1m0
1m1
0m3
1m2
01
0m4
1m5
1m7
1m6
11
0m12
0m13
0m15
1m14
10
1m8
1m9
0m11
1m10
  1. cells m5, m7NOT A AND B AND D
  2. cells m0, m1, m8, m9NOT B AND NOT C
  3. cells m2, m6, m10, m14C AND NOT D
(NOT A AND B AND D) OR (NOT B AND NOT C) OR (C AND NOT D) · Derived (NOT A AND B AND D) OR (NOT B AND NOT C) OR (C AND NOT D). Exactly equivalent on every assignment.

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

See also

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.