\[ \newcommand\infer[3][]{ \begin{array}[b]{c c c c} \style{border-bottom:1px solid;}{ \begin{array}[b]{c c c c} #3 \\ \end{array} } & \hspace{-1em}\raise{-0.5em}{\text{#1}} \\ #2 \end{array} } \]

In the last two lectures, we have looked at propositional formulas from two perspectives: truth and provability. Our goal now is to (meta) prove that the two interpretations match each other. We will prove:

**Soundness**: if something is provable, it is valid. If \(⊢ φ\) then \(⊨ φ\).**Completeness**: if something is valid, it is provable. If \(⊨ φ\) then \(⊢ φ\).

In this lecture, we will outline proofs for both of these facts for the propositional logic we have been developing.

Note that this is analogous to Kleene's theorem: there we examined language from two different perspectives (recognizability and regularity) and then proved that they gave the same answers.

To show that our proof system is sound, we prove something stronger: if \(φ_1, φ_2, \dots ⊢ ψ\) then \(φ_1, φ_2, \dots ⊨ ψ\).

Assume \(φ_1, φ_2, \dots ⊢ ψ\), so that there exists a proof tree \(T\) terminating with this line. Note that proof trees are inductively defined structures, so we can actually do a meta-inductive proof on the structure of the object proof.

Let \(T\) be a proof tree, and let \(P(T)\) say "if \(T\) is a complete proof tree showing that \(φ_1, φ_2, \dots ⊢ ψ\), then \(φ_1, φ_2, \dots ⊨ ψ\). To prove \(∀T, P(T)\), we will consider trees that end with each of the possible rules. If the proof tree has subtrees \(T_1, T_2, \dots\), we will inductively assume \(P(T_1), P(T_2), \dots\).

For example, if the rule at the root of the tree is the and introduction rule:

\[ \infer[($∧$ intro)]{\cdots ⊢ φ ∧ ψ}{ \cdots ⊢ φ & \cdots ⊢ ψ } \]

then there are valid proof subtrees ending in \(\cdots ⊢ φ\) and \(\cdots ⊢ ψ\), so we will inductively assume that \(\cdots ⊨ φ\) and \(\cdots ⊨ ψ\).

We examine a few of the rules; the remaining cases are left as review exercises. We refer to the list of rules here

\(P(T)\) where \(T\) ends with law of excluded middle to show \(\cdots ⊢ φ ∨ ¬φ\). We wish to show that in any \(I\) satisfying the assumptions, \(I ⊨ φ ∨ ¬φ\). Well, \(φ[I]\) is either T or F. If it is T, then the rule for evaluating \(∨\) says that \(φ∨¬φ\) evaluates to T, while if it is \(F\), then \(¬φ\) evaluates to true, and again we see that \(φ∨¬φ\) evaluates to T.

\(P(T)\) where \(T\) ends with reductio ad absurdum:

\[ \infer[(absurd)]{A ⊢ ψ}{A ⊢ φ & A ⊢ ¬φ} \]

We wish to show that in any interpretation \(I\) satisfying the assumptions \(A\), that \(I ⊨ ψ\). Inductively, we assume that \(I ⊨ φ\) and \(I ⊨ ¬φ\). But this is impossible, because \(φ\) either evaluates to T or F in \(I\). So the conclusion for all \(I\) satisfying \(A\), \(I ⊨ ψ\) is vacuously true: there are no interpretations satisfying \(A\).

- \(P(T)\) where \(T\) ends with \(∧\) introduction:

\[ \infer[($∧$ intro)]{A ⊢ φ ∧ ψ}{A ⊢ φ & A ⊢ ψ} \]

We wish to show that in any interpretation \(I\) satisfying \(A\), that \(I ⊨ φ∧ψ\). We inductively assume \(I ⊨ φ\) and \(I ⊨ ψ\). The rules for evaluating \(φ∧ψ[I]\) immediately show that \(I ⊨ φ∧ψ\) as required.

The remaining cases are left as review exercises.

We don't expect that every statement is either true in all interpretations or false in all interpretations. For example, we can't prove "it is raining", but nor can we prove "it is not raining"; in some universes, it is raining, and in others it is not.

However, we do believe that mathematical statements are either true or false; there should only be one interpretation of "isZero", and a number either is zero or it isn't. There either are infinitely many twin primes, or there aren't.

It would be good if we could find a nice set of axioms that describe the natural numbers, and that allow us to prove everything that is true about them, and to disprove everything that is false about them. That is, we would like a set of axioms \(A\) such that for any formula \(φ\), either \(A ⊢ φ\) or \(A ⊢ ¬φ\). Confusingly, a set of axioms satisfying this property is also called **complete**, but this notion is completely different from the completeness of a proof system.

Gödel's theorem says that that is not possible. More accurately, you cannot have a set of axioms that is simultaneously

**complete**in the sense that for any \(φ\), either \(A ⊨ φ\) or \(A ⊨\lnot φ\)**sound**in the sense that if \(A ⊨ φ\) then \(φ\) is true of the natural numbers. For example, you should not be able to prove that every number is prime, or that \(1 = 2\).**computable**in the sense that you can write a program that looks at a formula and tells you whether or not it is an axiom.

What this says is that no matter what set of assumptions you make about the natural numbers, there will always be statements that are true, but that you cannot prove (unless you can also prove things that aren't true, but then your proof system is not very useful).