# Rene Descartes walks into a bar

**Online College Math Teacher**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Of course I naively I assumed my students had been exposed to the Descartes quote, “I think, therefore I am.” Philosopher and mathematician Rene Descartes wrote this in French in 1637, and later in Latin as *cogito, ergo sum*.”

After explaining the Descartes quote, I think the students understood the joke. Well, maybe it’s not that funny.

But perhaps funnier to math people than you realize, is: this joke is logically flawed because the punchline is the inverse to the original conditional statement, and an inverse is not logically equivalent to the original statement.

Let P and Q be declarative sentences that can be definitively classified as either true or false. Then define:

- Conditional Statement: If P, then Q.
- Converse: If Q, then P.
- Inverse: If not P, then not Q.
- Contrapositive: If not Q, then not P

Two conditional statements are defined as logically equivalent when their truth values are identical for every possible combination of truth values for their individual declarative sentences.

P | Q | statement | converse | inverse | contrapositive |

TRUE | TRUE | TRUE | TRUE | TRUE | TRUE |

TRUE | FALSE | FALSE | TRUE | TRUE | FALSE |

FALSE | TRUE | TRUE | FALSE | FALSE | TRUE |

FALSE | FALSE | TRUE | TRUE | TRUE | TRUE |

The above table shows statement and contrapositive have the same truth values in columns 3 and 6, and so are logically equivalent. Statement and inverse are not logically equivalent.

The Descartes quote is, “If I think, therefore I am”, or “If P then Q”. The punchline is, “If I don’t think, therefore I am not”, or “If not P, then not Q”. The punchline is the inverse, and is not logically equivalent to the quote. If P is false, then “if P then Q” is true regardless of the value of Q. So Q can be either true or false.

Occasionally on television someone, often a police detective, will make a statement where they confuse a statement with its converse or inverse, and I have been known to yell at the television.

Descartes is known for developing analytic geometry, which uses algebra to describe geometry. Descartes’ rule of signs counts the roots of a polynomial by examining sign changes in its coefficients.

And before someone else feels the need to say this, I will: “Don’t put Descartes before the horse.” This is perhaps the punchline to changing the original joke to “A horse walks into a bar … ”

The following is R code to create truth tables. Logical is a variable type in R. Conditional statements in R are created using the fact that “If P then Q” is equivalent to “Not P or Q”. I am defining the logic rules for statement, converse, inverse, contrapositive, but I could have defined the rules for more complicated statements as well.

# Define the possible values for P and Q

P <- c(TRUE, TRUE, FALSE, FALSE)

Q <- c(TRUE, FALSE, TRUE, FALSE)

# Calculate the 4 logical rules: statement, converse, inverse, contrapositive

# (Note that “if P then Q” is equivalent to “Not P or Q”.)

P_implies_Q <- !P | Q

Q_implies_P <- !Q | P

not_P_implies_not_Q <- P | !Q

not_Q_implies_not_P <- Q | !P

# expand.grid(P, Q) would also be a good start, but I wanted a specific ordering

# Create a data frame to display the truth table

truth_table <- data.frame(

P = P,

Q = Q,

`P -> Q` = P_implies_Q,

`Q -> P` = Q_implies_P,

`!P -> !Q` = not_P_implies_not_Q,

`!Q -> !P` = not_Q_implies_not_P

)

# Print the truth table

colnames(truth_table) <- c("P", "Q", "statement", "converse", "inverse", "contrapositive")

print(truth_table)

P_variable <- "I think"

Q_variable <- "I am"

colnames(truth_table) <- c(P_variable, Q_variable, "statement", "converse", "inverse", "contrapositive")

print(truth_table)

End

**leave a comment**for the author, please follow the link and comment on their blog:

**Online College Math Teacher**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.