In a Boolean algebra a Boolean function that is composed of standard logical operators can be expressed in a '''canonical form''' using the dual concepts of a ''minterms'' and ''maxterms''

## Minterms

We firstly begin with defining a

*minterm* as a logical expression of

*n* variables consisting of only the

logical and operator and complements

For example the following are examples of minterms:

*a* *b*'*c**a*' *b* *c*

There are 2

^{n} minterms of

*n* variables - this is true since a variable in the minterm expression can either be in the form of itself or its complement - two choices per

*n* variables

### Indexing minterms

In general one assigns each minterm (ensuring the variables are written in the same order usually alphabetic) an index based on the binary value of the minterm A complemented term like

*a*' is considered a binary 0 and a noncomplemented term like

*a* is considered a binary 1. For example one would associate the

number 6 with

*a* *b* *c*'(110

_{2}) and write the minterm expression as

*m*_{6} So

*m*_{0} of three variables is

*a*'*b*'*c*'(000

_{2}) and

*m*_{7} would be

*a* *b* *c*(111

_{2})

## Functional equivalence

It is apparent that minterm

*n* gives a true value for the

*n*+1 th unique function input for that logical function For example minterm 5,

*a* *b*' *c* is true only when

*a* and

*c* both are true and

*b* is false - the input where a = 1, b = 0, c = 1 results in 1

If one is given a

truth table of a logical function it is possible to write the function as a "sum of products" (minterms

OR'd in series) This is a special form of disjunctive normal form qv. For example if given the

truth table''a'' ''b'' ''f''(''a'' ''b'')
0 0 1
0 1 0
1 0 1
1 1 0

observing that the rows that have an output of 1 are the first and third so we can write

*f* as a sum of minterms

*m*_{0} and

*m*_{2}If we wish to verify this:

*f*(*a***b****) = ***m*_{0} + *m*_{2} = (*a*'*b*')+(*a**b*')

**then the truth table for this function by direct computation will be the same**

## Maxterms

*Maxterms* are a dual of the minterm idea Instead of using ANDs and complements we use ORs and complements and proceed similarly

For example the following are examples of maxterms:*a*+*b*'+*c**a*'+*b*+*c*

There are again 2^{n} maxterms of *n* variables - this is true since a variable in the maxterm expression can also be in the form of itself or its complement - two choices per *n* variables

### Indexing maxterms

Indexing maxterms however is done in the opposite way as with minterms One assigns each maxterm (again ensuring the variables are written in the same order usually alphabetic) an index based on the order of its complements for example associating the number 6 with *a*'+*b*'+*c* but writing *M*_{6} So *M*_{0} of three variables is now *a*+*b*+*c* and *M*_{7} would be *a*'+*b*'+*c*'

### Dualization

It can be easily verified by using de Morgan's law that the complement of a minterm is the respective maxterm Observe for example*m*_{2}' = M_{2}- (
*a*+*b*')'= *a*'*b*

### Returning to functional equivalence

It is apparent that maxterm *n* now gives a *false* value for the *n*+1 th unique function input for that logical function For example maxterm 5, *a*'+*b*+*c*' is false only when *a* and *c* both are true and *b* is false - the input where a = 1, b = 0, c = 1 results in 0

If one is given a truth table of a logical function it is possible to write the function as a "product of sums" (maxterms AND'd in series) This a special form of conjunctive normal form qv For example if given the truth table''a'' ''b'' ''f''(''a'' ''b'')
0 0 1
0 1 0
1 0 1
1 1 0

observing that the rows that have an output of 0 are the second and fourth so we can write *f* as a product of maxterms *M*_{1} and *M*_{3}

If we wish to verify this:*f*(*a**b*) = *M*_{1} *M*_{3} = (*a*+*b*')(*a*'+*b*')

then the

truth table for this function by direct

computation will be the same

## Summary of results

All logical functions are expressible in a

canonical form either a "sum of minterms" or "product of maxterms" form This apart from being able to express complicated logical functions in a straightforward and simple algebraic form allows for greater analysis into the

simplification of these functions which is of great importance in the minimization of digital circuits

## See also