A minterm is an AND of every input variable, with each variable appearing exactly once (either complemented or not). A maxterm is the dual: an OR of every input variable, again with each appearing once.
For variables there are minterms, one for each row of the truth table. Same for maxterms. Each minterm is true for exactly one input combination (row ); each maxterm is false for exactly one input combination (row ).
The two are complements of each other: . They’re the atoms from which any Boolean Function can be built.
Minterms
A minterm is a product term whose value is for exactly one input row. To build the minterm for a given row, take each variable: if its row value is , write the variable; if its row value is , write its complement.
| Product term | Symbol | ||
|---|---|---|---|
| 0 | 0 | ||
| 0 | 1 | ||
| 1 | 0 | ||
| 1 | 1 |
Three-variable example: and .
The index in is the decimal value of the input row in binary. Row in three variables is : variables and are , is , giving .
If any one minterm is true, all the others are false. They partition the input space into disjoint cases.
Maxterms
A maxterm is a sum term whose value is for exactly one input row. The convention is opposite to minterms: if the row value is , write the complement; if it’s , write the variable as-is. (That’s the only way to get the sum to be zero on that row.)
| Sum term | Symbol | ||
|---|---|---|---|
| 0 | 0 | ||
| 0 | 1 | ||
| 1 | 0 | ||
| 1 | 1 |
Three-variable example: .
If any one maxterm is false, all the others are true.
Why this matters
Minterms feed into the sum-of-products canonical form: write the OR of every minterm where . Maxterms feed into the product-of-sums form: write the AND of every maxterm where . Either form gives a circuit you could build directly — usually wasteful, but it’s the starting point for minimization with Karnaugh Map or Boolean Algebra identities.
Worked example. Suppose , that is, for rows and for row . Then , and applying De Morgan’s Laws:
So the same function can be expressed as in minterm form or in maxterm form. Same behavior, just listing the rows where is true vs. listing the rows where is false.