#logic
## Definition
> [!tldr] Definition
> A **truth table** is a table that separates a logical [[Propositions|proposition]] into its [[Atomic and molecular propositions|atomic statements]], lists all possible combination of truth values for those [[Atomic and molecular propositions|atomic statements]], and then determines the truth value of the proposition in each case.
Notes:
- If a proposition has $n$ [[Atomic and molecular propositions|atomic propositions]] that make it up, its truth table will have $2^n$ rows (not counting a header row), one for each combination of truth values of the [[Atomic and molecular propositions|atomic propositions]].
- The truth tables for the four basic [[connectives]] are:
[[Negation]] ("not"):
| $P$ | $\neg P$ |
|:-----:|:--------:|
| True | False |
| False | True |
[[Conjunction]] ("and"):
| $P$ | $Q$ | $P \wedge Q$ |
| :--: | :--: | :------: |
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
[[Disjunction]] ("or"):
| $P$ | $Q$ | $P \vee Q$ |
| :--: | :--: | :------: |
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
[[Conditional statements|Implication]] ("if-then"):
| $P$ | $Q$ | $P \rightarrow Q$ |
| :--: | :--: | :------: |
| True | True | True |
| True | False | False |
| False | True | True |
| False | False | True |
- The entries in a truth table can be any symbol with two states, with one representing True and the other False. For example they can be the words "True" and "False"; or the letters "T" and "F"; or the [[Binary digits and bitstrings|bits]] $1$ for True and $0$ for False; and so on.
## Examples
To make a truth table for a [[Atomic and molecular propositions|molecular statement]], start by making columns for each of its [[Atomic and molecular propositions|atomic propositions]] and rows for all the combinations of truth values of those propositions. Then build the table by making one column for each [[Atomic and molecular propositions|molecular statement]] in the main proposition, piece by piece.
**Example:** Make the truth table for $P \vee (\neg Q)$. First, set up two columns and list all the truth combinations:
| $P$ | $Q$ |
| :--: | :--: |
| True | True |
| True | False |
| False | True |
| False | False |
Now build the table up piece by piece. Start with a column for $\neg Q$:
| $P$ | $Q$ | $\neg Q$ |
| :--: | :--: | :------: |
| True | True | False |
| True | False | True |
| False | True | False |
| False | False | True |
Now add the column for $P \vee (\neg Q)$ by joining $P$ with $\neg Q$ using a [[disjunction]]. The vertical arrows indicate which columns you should focus on:
| $\stackrel{\Downarrow}{P}$ | $Q$ | $\stackrel{\Downarrow}{\neg Q}$ | $P \vee (\neg Q)$ |
| :--: | :--: | :------: | :----: |
| True | True | False | True |
| True | False | True | True |
| False | True | False | False |
| False | False | True | True |
**Example:** Write the truth table for $(A \wedge B) \rightarrow C$. This proposition has three [[Atomic and molecular propositions|atomic propositions]], so it will have *eight* rows:
| $A$ | $B$ | $C$ |
| :---: | :---: | :---: |
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | True |
| True | True | False |
| True | False | False |
| False | True | False |
| False | False | False |
Now build up the main statement first with a column for $A \wedge B$:
| $\stackrel{\Downarrow}{A}$ | $\stackrel{\Downarrow}{B}$ | $C$ | $A \wedge B$ |
| :---: | :---: | :---: | :----: |
| True | True | True | True |
| True | False | True | False |
| False | True | True | False |
| False | False | True | False |
| True | True | False | True |
| True | False | False | False |
| False | True | False | False |
| False | False | False | False |
Then add the final column for the main proposition $(A \wedge B) \rightarrow C$:
| $A$ | $A$ | $\stackrel{\Downarrow}{C}$ | $\stackrel{\Downarrow}{A \wedge B}$ | $(A \wedge B) \rightarrow C$ |
| :---: | :---: | :---: | :----: | :---: |
| True | True | True | True | True |
| True | False | True | False | True |
| False | True | True | False | True |
| False | False | True | False | True |
| True | True | False | True | False |
| True | False | False | False | True |
| False | True | False | False | True |
| False | False | False | False | True |
## Resources
<iframe src="https://player.vimeo.com/video/592797708?h=7fabfc2432" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
<p><a href="https://vimeo.com/592797708">Screencast 2.5: Truth tables</a> from <a href="https://vimeo.com/user132700952">Robert Talbert</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<iframe src="https://player.vimeo.com/video/593393012?h=ad4ea15742" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
<p><a href="https://vimeo.com/593393012">Screencast 2.6: Truth tables with intermediate steps</a> from <a href="https://vimeo.com/user132700952">Robert Talbert</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<iframe src="https://player.vimeo.com/video/597356440?h=d373ef30bf" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
<p><a href="https://vimeo.com/597356440">Screencast 2.7: More complex truth tables</a> from <a href="https://vimeo.com/user132700952">Robert Talbert</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
Other resources:
- [Truth table generator](https://web.stanford.edu/class/cs103/tools/truth-table-tool/) (Stanford University)
- [Example of truth table generation using Wolfram|Alpha](https://www.wolframalpha.com/input?i=truth+table+%28A+and+B%29+implies+C)
## Practice
1. Make up propositions with 2, 3, or even 4 or more [[Atomic and molecular propositions|atomic propositions]] in them and a variety of connectives.
2. Write up the truth table by hand.
3. Check your work using one of the resources listed above.