Theoretically, you can prove anything in propositional calculus with truth tables. In fact, the laws of logic stated in Section 3.4 are all theorems. Propositional calculus is one of the few mathematical systems for which any valid sentence can be determined true or false by mechanical means. A program to write truth tables is not too difficult to write; however, what can be done theoretically is not always practical. For example,
\begin{equation*}
a, a\to b, b\to c, . . . ,y\to z\Rightarrow z
\end{equation*}
is a theorem in propositional calculus. However, suppose that you wrote such a program and you had it write the truth table for
\begin{equation*}
(a\land (a\to b)\land ( b\to c)\land \cdots \land (y\to z))\to z
\end{equation*}
The truth table will have \(2^{26}\) cases. At one million cases per second, it would take approximately one hour to verify the theorem. Now if you decided to check a similar theorem,
\begin{equation*}
p_1,p_1\to p_2,\ldots ,p_{99}\to p_{100}\Rightarrow p_{100}
\end{equation*}
you would really have time trouble. There would be \(2^{100} \approx 1.26765\times 10^{30}\) cases to check in the truth table. At one million cases per second it would take approximately \(1.46719\times 10^{19}\) days to check all cases. For most of the remainder of this section, we will discuss an alternate method for proving theorems in propositional calculus. It is the same method that we will use in a less formal way for proofs in other systems. Formal axiomatic methods would be too unwieldy to actually use in later sections. However, none of the theorems in later chapters would be stated if they couldn’t be proven by the axiomatic method.
We will introduce two types of proof here, direct and indirect.
The conclusion of a theorem is often a conditional proposition. The condition of the conclusion can be included as a premise in the proof of the theorem. The object of the proof is then to prove the consequence of the conclusion. This rule is justified by the logical law
\begin{equation*}
p \rightarrow (h \rightarrow c) \Leftrightarrow (p \land h) \rightarrow c
\end{equation*}