Recipe
Classify a formula as a tautology, contradiction, or contingency
Use when: you have a compound proposition and need to know whether it's always true, always false, or true on some rows and false on others
Goal: one of the three labels, backed by the formula's full truth table
Taught in Tautologies, contradictions, and contingencies
Quick recipe
-
1
Build the full truth table for the formula: count the atoms, list every row, then evaluate the formula on each one, following the truth-table recipe from the earlier section.
Example
For p \wedge \neg p, there's one atom, so two rows: at p=T, p \wedge \neg p = T \wedge F = F; at p=F, p \wedge \neg p = F \wedge T = F.
Why: every row has to be checked, since a single untested row could contradict a guess made from only part of the table.
-
2
Read down the finished column of results, watching for the moment a true and a false both appear somewhere in it.
- a true row and a false row both appear — the formula is a contingency; the remaining rows can't change that.
- every row checked so far shares the same value — keep reading until the last row, to confirm the value never changes.
⚡ Shortcut
The instant the result column shows both a true and a false, stop reading immediately: the formula is already confirmed as a contingency.
Why: finding one row of each value is already enough to rule out both tautology and contradiction, whatever the untested rows hold.
-
3
Give the formula the label that matches its column: every value true, every value false, or a mix of both.
Example
The column for p \wedge \neg p from Step 1 is F, F, the same value on both rows, so it's a contradiction.
- every row is true — the formula is a tautology.
- every row is false — the formula is a contradiction.
Why: this is exactly how the three categories are defined, so no check beyond the finished column is needed.
Common mistakes
- Declaring a tautology after checking only some rows, missing a later row that comes out false.
- Treating "true on most rows" as the same thing as "true on every row."
- Confusing which label goes with always-true and which goes with always-false.
- Continuing to read the whole table after already finding both a true and a false row.