Consensus Theorem
Statement
The consensus theorem in its most common form states:
The term is called the consensus term. It is formed by taking the AND of the terms that remain after removing the variable and its complement from the two product terms and : strip from to get , strip from to get , and AND them to get .
The dual form (swap AND with OR):
Proof via Boolean Algebra
Starting from the left-hand side:
The critical trick is multiplying by . This expands the consensus term into two terms, each of which is absorbed by one of the original product terms.
Proof via Truth Table
Build the truth table for all three input variables and compute both sides:
| a | b | c | LHS () | RHS () | |||
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
The columns for LHS and RHS are identical, confirming the theorem. Notice that is 1 only in rows where either or is already 1, so it never adds a new 1 to the function.
Proof via Karnaugh Map Preview
Plot the function on a K-map (3 variables: a, b, c). The K-map for a 3-variable function uses Gray code ordering:
The term (1 when a=1, b=1, any c) covers cells (a=1, b=1, c=0) and (a=1, b=1, c=1), i.e., bc=10 and bc=11 in the second row. Both are 1.
The term (1 when a=0, c=1, any b) covers cells (a=0, b=0, c=1) and (a=0, b=1, c=1), i.e., bc=01 and bc=11 in the first row. Both are 1.
The term (1 when b=1, c=1, any a) covers (a=0, b=1, c=1) and (a=1, b=1, c=1). But both of these cells are already covered by and respectively. So is redundant: it covers no minterms that are not already covered. This visual verification matches the algebraic proof: the consensus term is always redundant on a K-map because its cells are a subset of the union of the two generating terms’ cells.
How to Identify a Consensus Term
Given two product terms, a consensus term exists if they contain exactly one variable that appears complemented in one term and uncomplemented in the other. For and : the variable appears uncomplemented in the first and complemented in the second. The consensus is formed by AND-ing the remaining literals: .
Example: and
- Conflicting variable: (uncomplemented vs complemented)
- Remaining literals: and
- Consensus term: (AND of all remaining literals from both terms)
Using Consensus to Simplify
Elimination of Consensus Terms
If you find a consensus term in an expression, you can delete it without changing the function:
Example: Simplify .
In this expression, is the consensus of and , so eliminate it.
Now examine the remaining expression: .
Looking for other consensus terms: and do not share a conflicting variable (the variables and in the first, and in the second; conflicts, leaving and ; consensus would be , which is already present!). So is the consensus of and , and can be removed.
Final expression: .
Adding Consensus Terms for Simplification
Sometimes it is useful to add a consensus term to enable further simplification. This is non-obvious because adding a term makes the expression larger; but it may allow factoring or combination that yields a net reduction.
Example: Simplify .
Direct simplification does not give much leverage. Add the consensus of and : these share in common (no conflict), so no consensus between them. The consensus of and : conflicting variable , remaining literals from the first and from the second; consensus is . Add :
(Better example with a real simplification):
Example: Simplify .
Check consensus: and have conflicting, remaining literals and , consensus (trivial). and have no conflicting variable (both start with ). and have conflicting, remaining and , consensus . Add :
Now . So:
This may or may not be simpler than the original, depending on the implementation cost metric. The point is that adding a consensus term is a legitimate step that opens up new factoring possibilities.
Proof of the Dual Form
The dual of the consensus theorem is:
Proof: Start from the left-hand side and apply the distributive law for OR over AND to expand, or apply De Morgan to reduce to the original form:
Let . Take the complement:
Now apply the original consensus theorem to (the variables are now , , , ; the conflicting variable is , remaining terms and , consensus ):
Take the complement again:
Which proves the dual form. This approach (complement, apply the original theorem, complement again) is a general technique for proving the dual of any Boolean identity.
Extended Consensus: Three or More Consensus Terms
Consider an expression with three product terms that each conflict with the others in a cycle:
Here the consensus of and (conflicting on ) leaves , which is already the third term. The consensus of and (conflicting on ) leaves , also present. So with all three terms present, any one can be eliminated as the consensus of the other two: , but equally . The three-term expression reduces to any two of the three.
In general, when multiple consensus terms exist, eliminating them iteratively reduces the expression to a form that cannot be further simplified by consensus alone. The order of elimination can affect the intermediate expression but the final minimised form is unique for a given function (up to K-map grouping choices).
Connection to Hazard Removal
The consensus theorem is not just a simplification tool. In the context of hazards (see Static and Dynamic Hazards), the consensus term corresponds to a redundant prime implicant that, when added to a circuit, eliminates static hazards. For the function , when , a change in causes a momentary glitch. Adding the consensus term gives , which is logically identical but hazard-free. The consensus theorem guarantees that adding does not change the Boolean function; it only adds a physical gate that holds the output steady during the transition.