In Boolean logic, an implicant is a "covering" (sum term or product term) of one or more minterms in a sum of products (or maxterms in product of sums) of a Boolean function. Formally, a product term P in a sum of products is an implicant of the Boolean function F if P implies F. More precisely:
- P implies F (and thus is an implicant of F) if F also takes the value 1 whenever P equals 1.
This means that P F with respect to the natural ordering of the Boolean space. For instance, the function
is implied by , by , by , by and many others; these are the implicants of .
A prime implicant of a function is an implicant that cannot be covered by a more general, (more reduced - meaning with fewer literals) implicant. W. V. Quine defined a prime implicant of F to be an implicant that is minimal - that is, the removal of any literal from P results in a non-implicant for F. Essential prime implicants (aka core prime implicants) are prime implicants that cover an output of the function that no combination of other prime implicants is able to cover.
Using the example above, one can easily see that while (and others) is a prime implicant, and are not. From the latter, multiple literals can be removed to make it prime:
- , and can be removed, yielding .
- Alternatively, and can be removed, yielding .
- Finally, and can be removed, yielding .
The process of removing literals from a Boolean term is called expanding the term. Expanding by one literal doubles the number of input combinations for which the term is true (in binary Boolean algebra). Using the example function above, we may expand to or to without changing the cover of .
The sum of all prime implicants of a Boolean function is called its complete sum, minimal covering sum, or Blake canonical form.
- De Micheli, Giovanni. Synthesis and Optimization of Digital Circuits. McGraw-Hill, Inc., 1994