A Boolean variable is a variable that stores one of two values: true or false. We can combine boolean variables using operations known as logical connectives: and, or, and not. In logic, these connectives are represented by the following symbols: $$\wedge$$, $$\vee$$, $$\neg$$. If $$x$$ and $$y$$ are Boolean variables, then:

• $$x \wedge y$$ evaluates to true if both $$x$$ and $$y$$ are true;
• $$x \vee y$$ evaluates to true if either $$x$$ or $$y$$ (or both) is true;
• $$\neg x$$ evaluates to true if $$x$$ is false.

When applying negation ($$\neg$$) to a single variable, say $$x$$, we sometimes use the shorthand $$\bar{x}$$ for $$\neg x$$.

More specifically, the operations $$\wedge$$, $$\vee$$ and $$\neg$$ are defined by their truth table, which is a table that shows the values of these operators for all possible input values (true or false):

$$x$$     $$y$$     $$x \wedge y$$     $$x \vee y$$     $$\neg x$$
T T   T   T   F
T F   F   T   F
F T   F   T   T
F F   F   F   T

Each row corresponds to a single setting of the variables $$x$$ and $$y$$ indicated in the first two columns. The subesequent columns indicate the value of the operation ($$\wedge$$, $$\vee$$, or $$\neg$$) applied to $$x$$ and $$y$$ with the values in the first two columns.

A Boolean formula is a formula defined by stringing together multiple variables and logical connectives. To make such expressions unambiguous, we also use parentheses. The standard operator precedence or “order of operations” is $$\neg$$, $$\wedge$$, $$\vee$$ if expressions are not paranthesized.

For example, consider the Boolean formula $$(x \wedge y) \vee (y \vee \bar{z})$$. Again, we can evaluate this expression for every possible value of $$x, y$$ and $$z$$ using a truth table. The first three columns the possible values of $$x, y$$ and $$z$$ and each row corresponds to a setting of these values. Since there are 3 variables and two possible values for each variable, there are $$8 = 2^3$$ rows. The fourth and fifth columns give the corresponding values of $$x \wedge y$$ and $$y \vee \bar{z}$$, respectively. The final column gives the value of $$(x \wedge y) \vee (y \vee \bar{z})$$.

$$x$$     $$y$$     $$z$$     $$x \wedge y$$     $$y \vee \bar{z}$$     $$(x \wedge y) \vee (y \vee \bar{z})$$
T T T   T   T       T
T T F   T   T       T
T F T   F   F       F
T F F   F   T       T
F T T   F   T       T
F T F   F   T       T
F F T   F   F       F
F F F   F   T       T

A Boolean formula $$\varphi$$ in variables $$x_1, x_2, \ldots, x_n$$ is called satisfiable if there is some setting of the variables such that the resulting formula evalues to T. The truth table above shows that $$(x \wedge y) \vee (y \vee \bar{z})$$ is satisfiable. For example, if we set $$x, y, z$$ all to T, the formula evaluates to T. Some formulae are not satisfiable. For example, $$\varphi(x) = x \wedge \bar{x}$$ is not satisfiable, as $$\varphi(x) =$$ F regardless of the value of $$x$$.

The Boolean satisfiability problem, often denoted SAT is the following: given a Boolean formula $$\varphi(x_1, x_2, \ldots, x_n)$$, determine if $$\varphi$$ is satisfiable. That is, determine if there are T/F values for $$x_1, x_2, \ldots, x_n$$ such that $$\varphi(x_1, x_2, \ldots, x_n)$$ evaluates to T.

Exercise. Determine which of the following Boolean formulae are satisfiable and which are not.

1. $(x \vee \bar{y}) \wedge (\bar{x} \vee y)$
2. $(x \vee y) \wedge (\bar x \vee \bar y) \wedge (x \vee \bar y) \wedge (\bar x \vee y)$
3. $(x \vee y \vee z) \wedge (\bar x \wedge \bar y \wedge \bar z)$