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:
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.
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:
|P||Q||P & Q|
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 “&”.
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:
|P||Q||P ∨ Q|
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”.
It was quite tricky 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:
|P||Q||P → Q|
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.
The truth table approach also reveals one reason behind the decision to interpret a conditional as true when the antecedent is true. Imagine that we had taken the other approach, and said that a conditional is only true when both the antecedent and consequent are true, and false otherwise. The truth table for the conditional would then have been the same as the truth table for conjunction! There would be no difference between ‘P & Q’ and ‘P → Q’. But we think there is something different about saying “If it’s sunny, then I’ll go for a run” vs. “It is sunny and I will go for a run”, and we’ve tried to capture that difference in the different truth tables for the connectives.
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:
|P||Q||P ↔ Q|
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.
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:
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:
|p||q||(p ∨ q)||(p ∨ q) → p|
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.
|p||q||r||s||(p ∨ q)||(¬r & s)||(p v q) → (¬r & s)|
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. So, we can state the theorem:
Note that we haven’t defined a tautology here (this theorem is a conditional, not a biconditional) because there could be some tautologies which wouldn’t be captured in this analysis. For instance, an atomic proposition p could itself be a tautology. Propositions like “All bachelors are unmarried” and “2 + 2 = 4” are atomic propositions for us at the moment, but their logic formulation is just ‘p’. So, this method will allow us to prove that a proposition is a tautology, but can’t be used to disprove it. We’ll need some more sophisticated logical apparatus to do that.
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:
|p||q||(p & q)||(p ∨ q)||(p & q) → (p ∨ q)|
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, we get the corresponding theorem:
Again, we can’t necessarily discover all contradictions this way: there are some atomic contradictions for example, such as: ‘I am a married bachelor’ or ‘2 + 2 = 5’.
Let’s look at a quick example. The proposition ‘(p & q) & (¬p ∨ ¬q)’ is a contradiction. We can prove it as follows:
|p||q||(p & q)||(¬p ∨ ¬q)||(p & q) & (¬p ∨ ¬q)|
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 demonstrate validity, formally, using this theorem:
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
We construct our truth table, featuring all the premises and the conclusion:
|p||q||(p → q)||q||p|
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 haven’t shown that the argument is valid.
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.
However, strictly speaking, we should be cautious about concluding that every argument with this logical form is invalid. This is because there is more complexity in our atomic propositions than we’re currently able to account for. Consider the following argument:
1. All men are mortal.
2. Socrates is a man.
Therefore, Socrates is mortal
This is one of the most famous arguments in philosophy, widely used as an example of an obviously valid argument. But what are the atomic propositions here? How would we analyse this argument? Given our current ability to formalise statements, “All men are mortal” is just ‘p’, “Socrates is a man” is merely ‘q’, and “Socrates is mortal” is ‘r’. We have:
If we did a truth table for this argument, we’d see that there’s one line where the premises are all true and the conclusion false: the line where p=T, q=T and r=F. Obviously, there’s something more going on here that can’t be captured by just taking the atomic propositions. In this case, the atomic propositions are ascribing properties to subjects. ‘p’ says that everyone who has the property of being a man also has the property of being mortal. ‘q’ says that Socrates has the property of being a man, and ‘r’ says that Socrates has the property of being mortal. At the moment, our logical apparatus isn’t sophisticated enough to handle the logic of properties, subjects and “predicates“, which assign properties to subjects. We’ll discuss predicate logic in a later guide. For the time being, then, we’ll have to be happy with the ability to prove that a propositional argument is valid, and just be a little bit more cautious when claiming that an argument is invalid on the basis of a propositional truth-table analysis alone.
There’s a more elegant and sophisticated way to analyse validity using truth tables. 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, more elegant and precise refinement of our theorem from above:
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
|p||q||(p → q)||(p → q) & q||((p → q) & q) → p|
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
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:
|p||q||r||s||t||(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)|
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: 25/11/2021 by CJ Blunt