1 of 2

17.4 Truth Tables for Conditionals

-> and <-> are truth functional.

The conditionals are not Boolean connectives: just &, v and ~ are Boolean. But the conditionals are truth functional: the truth value of a conditional sentence is determined entirely by the truth values of its input sentences.

Here is the truth function for arrow ->.

4 row truth table for P->Q: TFTT.

The first two rows are pretty clear. The conditional claims that if P is true, then Q is true. If they are both true, that conditional holds, but if P is true and Q is false, then the conditional fails. So it’s clear the conditional should be false on row 2.

But what about rows 3 and 4? Why is it true on those rows?

Conditionals with false antecedents are not intuitive. Here’s a trick we’ll give you for thinking about them: imagine the conditional is like a promise. Say we’ve promised you that if Pia is guilty, then Quinn is guilty. If it turns out that Pia is guilty but Quinn isn’t, then we were wrong; our promise was broken.

A conditional with a false antecedent is trivially true.

But if it turns out that Pia isn’t guilty, our promise holds; it isn’t broken. We promised you what would be the case IF Pia is guilty, so if Pia isn’t guilty our promise is trivially satisfied. The condition only kicks in when the antecedent is satisfied, so the promise is always true when the antecedent is false.

Here’s another example: say we promise you that if you get the next problem correct, we will give you a purple heart. We’ve said something like this:


Now if you get it correct, and we give you a heart, then we held our promise (row 1). If you get it correct, but we don’t give you a heart, then we are liars and broke the promise (row 2). But what if you don’t even get it correct? Did we break our promise? No, we still held our promise. If you don’t get it correct, our promise holds automatically. We don’t have to do anything; the promise is still good.

Your turn to practice.

Look again at that truth function for ~Q->~P. It is the same as P->Q! That means we’ve discovered our first equivalence for arrows:

Contrapositive (CP): P->Q ⇔ ~Q->~P

This equivalence is important enough it gets a name: ~Q->~P is known as the contrapositive of P->Q.

Let’s see if you can find another sentence equivalent to the conditional.

Contrapositive (CP): P->Q ⇔ ~Q->~P
Boolean Definition of Conditional (BDC): P->Q ⇔ ~PvQ

The Boolean definition of the conditional (BDC), P->Q ⇔ ~PvQ, shows something important. In order to make PROP we added -> and <-> to BOOL. But notice that BOOL could have expressed the truth function for -> already: ~PvQ.

That means that PROP does not give us the ability to express any more truth functions than BOOL. You might then wonder: why bother with PROP? Wasn’t BOOL good enough?

Here’s the answer: some of the common ways we reason in our lives involve conditionals, and we want to model and study how that works. Even though both systems can express the same truth functions, having new symbols like -> and <-> will help us learn new formal and informal proof methods, and allow us to show that certain patterns of reasoning we use every day are valid.

In an important sense, though, BOOL is good enough: we will learn in a later chapter that, in a sense, BOOL can do anything PROP can.

Here’s what it looks like:

8 row truth table for (P&Q)->R: TFTTTTTT.

Now let’s see the truth table for the biconditional:

4 row truth table for P<->Q: TFFT

The biconditional says P is true if and only if Q is true. The only way to violate that is to have one true without the other, like on rows 2 and 3. So even if P and Q are both false, the biconditional holds.

Basically, the biconditional says that P and Q co-vary in truth value: they always have the same truth value.

Here’s the table:

8 row truth table for (PvQ)<->R: TFTFTFFT.