The Liar’s paradox

This seemingly simple statement is “The Liar’s Paradox”:

“This statement is false.”

Let’s use the symbol \(S\) to represent the quoted statement as a whole. Then the statement reads: not \(S\).

Because we're given this information, we’ll add it to our list of givens:

1.\(S\)Assumption
2.not \(S\)Assumption

Now there is one statement that we should never be able to derive from this: \(X\) = “Deductive logic is flawed.”

But watch as deductive logic forces us to that very conclusion:

3.\(S\) or \(X\)Addition using (1)
4.\(X\)Disjunctive argument using (3) and (2)

When given valid assumptions, deductive logic is infallible. However, when given paradoxical assumptions, deductive logic fails catastrophically.

The trouble is that it’s not always obvious whether our assumptions are paradoxical. Paradoxes can be very subtle. That leaves us in a perpetual state of anxiety about whether our proofs are actually valid.

A lot of thought has gone into this, and the results are less than satisfying.

However, there is a clean solution: We can replace deductive logic with a simpler and more useful system that works at least as well for valid assumptions, and can also handle paradoxes.

Replace deductive logic? I know that sounds crazy, but bear with me: This approach is absolutely beautiful and, surprisingly, also familiar.

The solution

In logic, we take a statement, such as “It’s raining,” and we replace it with a symbol like “\(R\).” If it’s not raining, then we write “not \(R\).” This seems so reasonable that no one would ever think to challenge it. But it is, in fact, a very strange thing to do.

In algebra, we would never take an equation, such as “\(x = 1\),” and replace it with a symbol like “\(X\).” We prefer to keep the variable separate from the value, so we can reason about them independently.

We should be doing the exact same thing for logic.

Let’s take a statement, such as “It’s raining,” and represent it like this: “\(r = \mathrm{true}\).” If it’s not raining, then: “\(r = \mathrm{false}\).” This seems like a small thing, but it’s huge: It allows us to reason about \(r\).

Our assumptions (e.g. “It’s raining”) become equations (e.g. “\(r = \mathrm{true}\)”), which we solve. The solutions are the value(s), if any, that are compatible with all of our assumptions.

The process of solving a system of equations is like constructing a proof in deductive logic. But solving equations is faster, yields more information, and is totally immune to logical paradoxes.

Let’s see this is action!

Example

Does \(S\) logically follow from the following assumptions?

1.not \(P\)Assumption
2.if \(Q\) then \(P\)Assumption
3.if (not \(Q\)) then \(R\)Assumption
4.if \(R\) then \(S\)Assumption

The answer is yes, and here is a formal proof using deductive logic:

5.not \(Q\)Modus tollens using (2) and (1)
6.\(R\)Modus ponens using (3) and (5)
7.\(S\)Modus ponens using (4) and (6)

Although this was an easy example, you can already see that it will become difficult to construct deductive proofs in the future:

Fortunately, there is a better way!

Let’s start with the first constraint: “not \(P\).”

First, we’ll turn this into an equation:
not \(p\) = true

Now, what value of \(p\) would satisfy this equation? I bet you can guess! But let’s explicitly list the two possible values for \(p\), so we can show our work:

\(p\)
false
true

Now let’s calculate “not \(p\)” for each possibility:

\(p\)not \(p\)
falsetrue
truefalse

And cross out any values that that fail to satisfy the assumption (not \(p\) = true).

\(p\)not \(p\)
falsetrue
truefalse

That leaves us with just:

\(p\)
false

And we’ve made our first logical deduction:
\(p\) = false

Now let’s apply the rest of the constraints. We’ll go through the last three constraints much faster this time:

\(p\)\(q\)if \(q\) then \(p\)
falsefalsetrue
falsetruefalse

\(p\)\(q\)\(r\)if (not \(q\)) then \(r\)
falsefalsefalsefalse
falsefalsetruetrue

\(p\)\(q\)\(r\)\(s\)if \(r\) then \(s\)
falsefalsetruefalsefalse
falsefalsetruetruetrue

And we’re done! There is one solution, and we can read it out:

\(p\)\(q\)\(r\)\(s\)
falsefalsetruetrue

Not only did we prove that \(s\) = true, but we also discovered the truth value of every other variable as well. And that gives us a way to check the truth of any statement involving \(p\), \(q\), \(r\), or \(s\).

For example, does (\(P\) or \(R\)) and \(S\) follow logically from the four initial assumptions?

The answer is yes, because (\(p\) or \(r\)) and \(s\) = true for every solution:

\(p\)\(q\)\(r\)\(s\)(\(p\) or \(r\)) and \(s\)
falsefalsetruetruetrue

Does \(Q\) and \(S\) follow logically from the four initial asumptions?

The answer is no, because there is a counterexample:

\(p\)\(q\)\(r\)\(s\)\(q\) and \(s\)
falsefalsetruetruefalse

This is a very simple, and very useful, system.

Furthermore, it completely protects us from logical paradoxes.

Paradoxes

Let’s try to reproduce the paradox from earlier, where deductive logic fails catastrophically:

1.\(S\)Assumption
2.not \(S\)Assumption
3.\(S\) or \(X\)Addition (1)
4.\(X\)Disjunctive argument (3 and 2)

If our new way of reasoning is sound, then we won’t be able to infer \(X\).

Now let’s get started:

\(s\)\(s\)
falsefalse
truetrue

\(s\)not \(s\)
truefalse

And we’re done. You can see that there are no solutions:

\(s\)

There is no value for \(s\) that could ever satisfy our contradictory assumptions.

This is a useful, meaningful result. And note that there was no way to infer \(X\): we simply could not reach an illogical conclusion.