Truth Tables (WritePhilosophy Guide)

Truth Tables are a popular way to analyse propositions and arguments in propositional logic. This guide will take you through how to construct a truth table and how to analyse propositions and arguments using them. We’ll also be able to use truth tables to formally define the connectives we outlined in the guide to formalising arguments. This guide presumes you’re already familiar with formalising propositions using propositional logic, so do check out that guide first if you haven’t already. We’ll also assume you’re familiar with the definition of deductive validity.

Truth tables are a tool pioneered by Ludwig Wittgenstein. They allow us to systematically show all the different possibilities for the truth and falsity of a proposition. We’ll start by using them to define the five connectives (¬, &, ∨, →, ↔).


Truth Tables for Connectives

A truth table lists all the possible truth values for each atomic proposition within a proposition, or within a series of propositions. We do this by creating a row for each possible allocation of truth-values (T or F) to each atomic proposition. For example, for the simple proposition “p”, our truth-table looks like this:

p
T
F

This gives us all the possible truth values for p, which are just T or F.

We can use this approach to define our connectives. Previously, we gave an informal discussion of what terms like “and” and “or” meant. Here, we can define the connective by stating, for every possible assignment of truth values to a pair of propositions P and Q (or a single proposition, in the case of negation), what the truth value of the compound proposition would be.

Conjunction

A conjunction is true just when both of the conjuncts are true. So the truth table for a pair of propositions P and Q is:

PQP & Q
TTT
TFF
FTF
FFF

Here we see a simple four-row truth table. There are four possible ways to assign truth-values to two propositions: P and Q are both true, P is true and Q is false, P is false and Q is true, and both are false. Those correspond to each of the rows here, in that order. The column entitled “P & Q” tells us the truth value for the compound proposition P & Q, based on the truth value of P and the truth value of Q in that row. So, in the first row, we see that when the truth value of P is T and the truth value of Q is T, the truth value of P & Q is also T. In any other circumstance, the truth value of P & Q is false. This holds no matter what propositions we substitute in for P and Q. So we have defined the connective “&”.

Disjunction

A disjunction captures our intuitive use of the inclusive ‘or’. It is true when either disjunct is true, or both are. So its truth table is:

PQP ∨ Q
TTT
TFT
FTT
FFF

Now we can see the important difference between inclusive and exclusive ‘or’. If disjunction was treated as exclusive, then the truth value of the top row would be “F”. But we use disjunction as inclusive, so it is “T”.

Conditional

It was quite trick to define a conditional in words. We know that we wanted a conditional to be true when the antecedent (P, in this case) was true and the consequent (Q) was true, and that it would be false where P was true and Q was false. But the cases where the antecedent was false were trickier. This is much easier to do in the form of a truth table, where we can just stipulate the meaning of ‘→’ accordingly:

PQP → Q
TTT
TFF
FTT
FFT

There is only one case where a conditional is false: that is, where the antecedent (P) is true and the consequent (Q) is false, corresponding to that second row of the table. The conditional is true whenever it isn’t false! So in the other three cases, it comes out as true.

We can see from this truth table that there are two ways we can know that a conditional is true: either P is false or Q is true. Where Q is true (rows 1 and 3 only), P → Q has the truth value T. Where P is false (rows 3 and 4 only), P → Q has the truth value T. So any time P is false or Q is true, we know P → Q is T. This is a useful rule of thumb to remember, because it means you can often work out the truth value of a conditional from only one of the propositions involved, without needing to deal with the other one. More on that later.

Bi-conditional

We said that a bi-conditional is true when the propositions on either side have the same truth value, and false otherwise. So its truth table is:

PQP ↔ Q
TTT
TFF
FTF
FFT

As we can see, in the two rows where the truth values of P and Q are the same (the first and fourth rows), the bi-conditional P ↔ Q takes the truth value T. Where they’re different (rows 2 and 3), it takes F.

Negation

The truth table to define negation is very simple because negation is a unary connective, taking only one proposition. It simply flips the truth value of the proposition to which it is applied, like so:

P¬ P
TF
FT

Using truth tables to analyse propositions

Now that we’ve defined all of our connectives, we can use a truth table to find out under which precise allocations of truth values a proposition is true or false. We look at every single possibility. Whenever we encounter a connective, we can simply follow the rules given by our definitional truth tables, above, to work out what the result is. Let’s look at a fairly simple case. Suppose we want to know under what circumstances ‘(p ∨ q) → p’ is true. We have two atomics, so a four-line truth table, like so:

pq(p ∨ q)(p ∨ q) → p
TTTT
TFTT
FTTF
FFFT

To work this out, we start by working out the truth values for (p ∨ q), just simply following the table for disjunctions, above. Now that we know the truth values for (p ∨ q), we can use that plus the truth values for p, and apply the rule for conditionals. Recall that a conditional is false where the antecedent is true and the consequent is false. So we’re looking for any situation where p takes F (as p is the consequent) but (p ∨ q) takes T. That’s the exact circumstances in the third row. Everywhere else, (p ∨ q) → p is true. So we can now say with confidence that any proposition of the form (p ∨ q) → p is false where p is false and q is true, and true otherwise.

This makes sense when you think about what the proposition says. It says that if p or q are true, then p is true. Try substituting in some sentences for p and q here. You’ll find that the proposition is true unless you substitute in a false sentence for p and a true one for q. For example: “If Plato was German or Plato was a Philosopher, then Plato was German.”

Things get a little more onerous when we have more than two atomic propositions. Every time we add a new atomic, we double the number of lines in the truth table. So a proposition with 3 atomics needs 8 lines, and a proposition with 4 atomics needs 16, and so on. Let’s analyse the proposition: (p ∨ q) → (¬r & s). Try it yourself first, and then check your working against the table below.

pqrs(p ∨ q)(¬r & s)(p v q) → (¬r & s)
TTTTTFF
TTTFTFF
TTFTTTT
TTFFTFF
TFTTTFF
TFTFTFF
TFFTTTT
TFFFTFF
FTTTTFF
FTTFTFF
FTFTTTT
FTFFTFF
FFTTFFT
FFTFFFT
FFFTFTT
FFFFFFT

The key thing is that we want to be sure that we cover all possible truth values. So, we need a row for every possible configuration of the allocation of Ts and Fs to the atomics. Once we get past five connectives, truth tables become a particularly unpleasant way to do logic. We’ll explore some alternative approaches in the Logic Trees guide. But particularly for propositions with fewer atomic components, they can be very handy.


Tautologies and Contradictions in Truth Tables

A very useful feature of truth tables is that they allow us to prove that a compound proposition is a tautology or a contradiction very easily. Because we know that a truth table displays every possible truth value a proposition of that form could have, by considering every possible allocation of truth values to the underlying atomic propositions, we can eliminate that vague talk of ‘possibility’ from our definitions of contradiction and tautology. Remember that we said a tautology is a proposition which cannot be false. In propositional logic terms, a compound proposition can be shown to be a tautology if its truth value is T in every single row in its truth table. We have the definition:

A proposition P is a propositional tautology if and only if it takes the truth value T in every row in its truth table.

Let’s look at an example. The proposition ‘(p & q) → (p ∨ q)’ is a tautology. This should be fairly clear: if both p and q are true, then at least one of them must be! Take a look at the truth table to verify your intuition:

pq(p & q)(p ∨ q)(p & q) → (p ∨ q)
TTTTT
TFFTT
FTFTT
FFFFT

Recalling that a conditional is true in any line where the antecedent (p & q) is false or the consequent (p ∨ q) is true, we can see that this covers all of the lines. The antecedent is false in rows 2, 3 and 4, while the consequent is true in lines 1, 2 and 3. Between them, we know that (p & q) → (p ∨ q) no matter the truth values of p and q. So (p & q) → (p ∨ q) is a tautology.

A contradiction is quite the opposite way around. We said that a contradiction is a proposition that is always false. So similarly we can define it as:

A proposition P is a propositional contradiction if and only if it takes the truth value F in every row in its truth table.

Let’s look at a quick example. The proposition ‘(p & q) & (¬p ∨ ¬q)’ is a contradiction. We can prove it as follows:

pq(p & q)(¬p ∨ ¬q)(p & q) & (¬p ∨ ¬q)
TTTFF
TFFTF
FTFTF
FFFTF

Again, this makes sense. If both p and q are true, it can’t be the case that at least one of them is false.


Validity using Truth Tables

We defined a valid inference as one in which it’s not possible for the premises to be all true while the conclusion is false. But that was a bit too vague. Now, we can be more precise by using truth tables to consider all the possible allocations of truth values to the atomic propositions in our premises and conclusion, and determine whether any allocation makes all the premises true and the conclusion false. We can now define validity, formally, as:

An argument is deductively valid if and only if there is no allocation of truth values to the atomic propositions of the argument for which all of the premises have the truth value T and the conclusion has the truth value F.

To do this with a truth table, we simply create a table which includes all of the premises and the conclusion, and read along the rows to check. Suppose we have this argument:

1. If idealism is the hallmark of Platonism, then Berkeley is the inheritor of Plato.
2. Berkeley is the inheritor of Plato.

Therefore, idealism is the hallmark of Platonism.

We have two atomic propositions: p = “Idealism is the hallmark of Platonism” and q = “Berkeley is the inheritor of Plato”. The logical form of the argument is just:

1. p → q
2. q

Therefore, p

We construct our truth table, featuring all the premises and the conclusion:

pq(p → q)qp
TTTTT
TFFFT
FTTTF
FFTFF

This is a little repetitive, as the premises included just ‘q’ and the conclusion was just ‘p’. We read across, and look for any line in which both of the premises (columns 3 and 4) are T while the conclusion (column 5) is F. There is one: row 3 matches this criterion. So, we can conclude that the argument is invalid.

Previously, we said that constructing an argumentative counterexample can prove that an argument is invalid. The truth table actually gives you a very easy way to do this. Read across a line in which the premises are all true and the conclusion false, and look at whether the atomic propositions are true or false in that line. Then, substitute in an obviously true sentence for the true ones and an obviously false sentence for the false ones. You’ll get a counterexample. In this case, there’s only one relevant line, and it’s the one in which p is false and q is true. So we could substitute in any false sentence for “Idealism is the hallmark of Platonism” and any true sentence for “Berkeley is the inheritor of Plato” and get a counterexample. For instance:

1. If the moon is made of hummus, then Washington, D.C. is the capital of America.
2. Washington D.C. is the capital of America.

Therefore, the moon is made of hummus.

It works perfectly.

There’s a more elegant and sophisticated way to analyse validity using truth tables, though. At the moment, we have to read across every line and check whether each premise is true and the conclusion false. Instead, we can represent the entire argument using something called the associated conditional. Recall that there was an interesting similarity between the truth table for conditionals and our definition of validity. An argument is invalid where it’s possible that the premises are all true and the conclusion false. A conditional is false where the antecedent is true and the consequent is false. Suppose we constructed a conditional where the premises of our argument formed the antecedent (i.e. the antecedent is true exactly when the premises are all true) and the conclusion was the consequent. Call that conditional the associated conditional of the argument. Now, we want to know if it is possible for the premises to all be true and the conclusion false. But that is the same as saying that we want to know if the associated conditional is ever false. If the associated conditional is never false, we know the premises are never all true while the conclusion is false. So, if the associated conditional is never false, the argument is valid. Another way to say that the associated conditional is never false is that it’s always true – or in other words, that it’s a tautology. So, we can give a new precise definition of validity:

An argument is deductively valid if and only if the associated conditional of that argument is a tautology.

Let’s be precise about what the associated conditional is. It needs to be a conditional in which the antecedent is true just when all the premises are true. That means we want our antecedent to be the conjunction of all the premises of the argument. The consequent is just the conclusion of the argument. So if we name the premises P1, P2, P3… and so on until Pn (where n is the number of the final premise), and name the conclusion C, then our associated conditional is:

(P1 & P2 & … & Pn) → C

If we had exactly two premises, call them P and Q, then this would be: ‘(P & Q) → C’.

Let’s try this approach with our argument about Plato and Berkeley. Our premises were (p → q) and q. Our conclusion was p. So our associated conditional is: ((p → q) & q) → p

pq(p → q)(p → q) & q((p → q) & q) → p
TTTTT
TFFFT
FTTTF
FFTFT

As we expected, we get exactly the same result, that the third row shows that the argument is invalid, because the associated conditional is false where the truth value of p is F and the truth value of q is T. You can use whichever method you prefer to show the validity or invalidity of an argument. The associated conditional method may just be a bit neater, particularly when you become adept at filling in truth tables quickly and don’t need to complete all the intermediate steps.

Let’s look at one more example to show the power of this method. Is the following argument valid?

1. If scientific theories have generated novel prediction successes or scientific theories allow us to do things we previously thought were impossible, then scientific theories are getting closer to fundamental truths about the universe or scientific success is merely due to luck.
2. If scientific success is merely due to luck, then current scientific theories will eventually be discredited.
3. Scientific theories have generated novel prediction successes.

Therefore, scientific theories are getting closer to fundamental truths about the universe or current scientific theories will eventually be discredited.

It may not be immediately obvious whether this argument is valid or not. Remember that our only method, without the logical apparatus we’ve developed here, to show that an argument was invalid was to provide a counterexample of the same form. But being unable to provide a counterexample doesn’t mean there isn’t one – it might just be that we couldn’t think of it. So, with a complex argument like this one, it might be hard to know whether it’s valid or not. Let’s analyse it with a truth table.

First, we lay out the logical form of the argument:

1. (p ∨ q) → (r ∨ s)
2. s → t
3. p

Therefore, r ∨ t

Now, we have five atomic propositions here, so this is going to be a big truth table, at 32 lines. Let’s check it out. You might want to try this yourself as practice. We’ll do this using the associated conditional method, but also break it down into several steps along the way to make sure we get our working out right:

pqrst(p ∨ q)(r ∨ s)(p ∨ q) → (r ∨ s)s → t((p ∨ q) → (r ∨ s)) & (s → t) & p)(r ∨ t)((p ∨ q) → (r ∨ s)) & (s → t) & p) → (r ∨ t)
TTTTTTTTTTTT
TTTTFTTTFFTT
TTTFTTTTTTTT
TTTFFTTTTTTT
TTFTTTTTTTTT
TTFTFTTTFFFT
TTFFTTFFTFTT
TTFFFTFFTFFT
TFTTTTTTTTTT
TFTTFTTTFFTT
TFTFTTTTTTTT
TFTFFTTTTTTT
TFFTTTTTTTTT
TFFTFTTTFFFT
TFFFTTFFTFTT
TFFFFTFFTFFT
FTTTTTTTTFTT
FTTTFTTTFFTT
FTTFTTTTTFTT
FTTFFTTTTFTT
FTFTTTTTTFTT
FTFTFTTTFFFT
FTFFTTFFTFTT
FTFFFTFFTFFT
FFTTTFTTTFTT
FFTTFFTTFFTT
FFTFTFTTTFTT
FFTFFFTTTFTT
FFFTTFTTTFTT
FFFTFFTTFFFT
FFFFTFFTTFTT
FFFFFFFTTFFT

You should check this through for practice, but you’ll see that in every single row, the truth value of the associated conditional (the final column) is T. So the associated conditional is a tautology, and therefore this is a valid inference. From that, we also know that it’ll be impossible to provide an argumentative counterexample to this argument form. If you want to argue against it, your only hope is to attack one of the premises.


Latest edit: 05/03/2021 by CJ Blunt