Atop the logic gate comes the ability to represent it mathematically. A boolean function gives us that ability. It takes a binary input (either a zero or a one) and returns a binary output.

Take the simple mechanisms AND, OR and NOT. These can be represented using simple expressions. AND maps to multiplication, OR maps to addition, and NOT maps to negation.

Boolean functions are used to describe and conceptualize the binary logic inside a computer chip. Chips are built out of simpler building blocks like AND, OR and NOT.

A boolean function can either be represented as a function:

Or its equivalent truth table. This is an enumeration of all possible inputs and the outputs they map to.

This means that we can construct a truth table out of a boolean function by calculating all possible inputs. But, *the reverse is also possible. We can also construct a boolean function out of a truth table.*

We do this by [1] isolating all the rows that output 1; [2] constructing a literal expression that represents that particular row of the truth table; and [3] ORing them together. This long boolean function is still an accurate description of the truth table.

This is what is called the canonical representation of a boolean function.