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
< >
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.