The completeness of a logic is a really nice property to establish. For a logic to be complete, it must be that every semantic entailment is also syntactically entailed. Said more simply, it must be that every truth in the language is provable. Gödel’s incompleteness theorems showed us that we cannot have such high hopes for mathematics in general, but we can still establish completeness for some simple logics, such as propositional and first order logic.

I want to post a proof of the completeness of propositional logic here in full for future reference. Roughly the first half of what’s below is just establishing some necessary background, so that this post is fairly self-contained and doesn’t reference lemmas that are proved elsewhere.

The only note I’ll make before diving in is that the notation I(A,P) is a way to denote the smallest set that contains A and is closed under the operations in P. It’s a handy way to inductively define sets that would be enormously complicated to define otherwise. With that out of the way, here we go!

First we define the proof system for propositional logic.

**Axiom 1:** α→(β→α)

**Axiom 2:** (α→(β→γ)) → ((α→β)→(α→γ))

**Axiom 3:** ((¬α)→(¬β)) → (β→α)

The α, β, and γ symbols in these axioms are meant to stand for *any* well-formed formula. What this means is that we actually have a countable infinity of axioms that fall into the three categories above. For simplicity, I’ll keep calling them “Axioms 1, 2, and 3”, and assume you don’t find it too confusing.

You might also notice that the axioms only involve the symbols → and ¬, but neglect ∧ and ∨. This is okay because → and ¬ are adequate connectives for the semantics of propositional logic (which is to say that any truth function can be expressed in terms of them).

Axioms = {Axiom 1, Axiom 2, Axiom 3}

Deduction rule = Modus Ponens (MP)

….. MP(α, α→β) = β

The set of all provable sentences is just the set of all sentences that includes the axioms and is closed under modus ponens.

Theorems = I(Axioms, MP)

We can also easily talk about the set of sentences that can be proven from assumptions in a set Σ:

Th(Σ) = I(Axioms ∪ Σ, MP)

Notation: Σ ⊢ α iff α ∈ Th(Σ)

With that out of the way, let’s establish some basic but important results about the propositional proof system.

**Monotonicity:** If Σ ⊆ Σ’, then Th(Σ) ⊆ Th(Σ’).

**Strong monotonicity:** If Σ ⊢ Σ’, then Th(Σ’) ⊆ Th(Σ).

Intuitively, monotonicity says that if you expand the set of assumptions, you never shrink the set of theorems. Strong monotonicity says that if Σ can prove everything in Σ’, then Σ’ cannot be stronger than Σ. Both of these follow pretty directly from the definition of Th(Σ).

**Soundness:** If ⊢ α, then ⊨ α.

Proof by structural induction

….. Each axiom is a tautology.

….. Tautology is closed under MP (if ⊨ α and ⊨ (α→β), then ⊨ β).

**Extended Soundness:** If Σ ⊢ α, then Σ ⊨ α.

Proof by structural induction

….. Σ ⊨ α ∈ Axioms and Σ ⊨ α ∈ Σ.

….. If Σ ⊨ α and Σ ⊨ (α→β), then Σ ⊨ β.

**Law of identity: ⊢ (α→α)**

….. α→((α→α)→α), *Axiom 1*

….. (α→((α→α)→α))→((α→(α→α))→(α→α)), *Axiom 2*

….. (α→(α→α))→(α→α), *MP*

….. α→(α→α), *Axiom 1*

….. α→α, *MP*

**Principle of Explosion:** If Σ ⊢ α and Σ ⊢ (¬α), then Σ ⊢ β.

….. By strong monotonicity, it suffices to show that Σ ∪ {α} ∪ {¬α} ⊢ β.

……….. (¬α)→((¬β)→(¬α)), *Axiom 1*

……….. ¬α, *Assumption*

……….. (¬β)→(¬α), *MP*

……….. ((¬β)→(¬α))→(α→β), *Axiom 3*

*.*………. α→β, *MP*

……….. α, *Assumption*

……….. β, *MP*

And finally, our most important background theorem:

**Deduction Theorem:** Σ ⊢ (α→β) iff Σ ∪ {α} ⊢ β.

Proof =>

….. Suppose Σ ⊢ (α→β).

….. By monotonicity, Σ ∪ {α} ⊢ (α→β).

….. Also, clearly Σ ∪ {α} ⊢ α.

….. So Σ ∪ {α} ⊢ β.

Proof <=

….. Suppose Σ ∪ {α} ⊢ β.

….. Base cases

………. β ∈ Axioms. (β, β→(α→β), α→β).

………. β ∈ Σ. (β, β→(α→β), α→β).

………. β = α. (⊢ (α→α), so by monotonicity Σ ⊢ (α→α)).

….. Inductive step

………. Suppose Σ ⊢ (α→γ) and Σ ⊢ (α→(γ→𝛿)).

………. By strong monotonicity, suffices to show Σ ∪ {α→γ, α→(γ→𝛿)} ⊢ (α→𝛿)

……………. (α→(γ→𝛿)) → ((α→γ)→(α→𝛿)), *Axiom 2*

……………. α→(γ→𝛿), *Assumption*

……………. (α→γ)→(α→𝛿), *MP*

……………. (α→γ), *Assumption*

……………. (α→𝛿). *MP*

Now, let’s go into the main body of the proof. The structure of the proof is actually quite similar to the proof of the compactness theorem I gave previously. First we show that every consistent set of sentences Σ has a maximally consistent extension Σ’. Then show that Σ’ is satisfiable. Now since Σ’ is satisfiable and it’s an extension of Σ, Σ must also be satisfiable. From there it’s a simple matter to show that the logic is complete.

So, let’s define some of the terms I just used.

Σ is consistent iff for no α does Σ ⊢ α and Σ ⊢ (¬α)

….. Equivalently: iff for some α, Σ ⊬ α

Σ is maximally consistent iff Σ is consistent and for every α, either Σ ∪ {α} is inconsistent or Σ ⊢ α.

One final preliminary result regarding consistency before diving into the main section of the proof:

**If Σ is satisfiable, then Σ is consistent.**

Proof

….. Suppose Σ is inconsistent.

….. Then there’s an α such that Σ ⊢ α and Σ ⊢ (¬α).

….. By extended soundness, Σ ⊨ α and Σ ⊨ (¬α).

….. So Σ is not satisfiable.

This is the converse of the result we actually want, but it’ll come in handy. Now, let’s begin to construct our extension!

**Any consistent Σ can be extended to a maximally consistent Σ’**

….. Choose any ordering {α_{n}} of well-formed-formulas.

….. Define Σ_{0} = Σ.

….. Σ_{n+1} = Σ_{n} if Σ_{n} ⊢ (¬α_{n+1}), and Σ_{n} ∪ {α_{n+1}} otherwise.

….. For each n, (i) Σ_{n} is consistent and (ii) either Σ_{n} ⊢ α_{n} or Σ_{n} ⊢ (¬α_{n})

……….. Base case: Σ_{0} is consistent by assumption, and (ii) doesn’t apply.

……….. Inductive step: Suppose Σ_{n} satisfies (i) and (ii). Two cases:

…………….. If Σ_{n} ⊢ (¬α_{n+1}), then Σ_{n+1} = Σ_{n}. Clearly consistent and satisfies (ii).

…………….. If Σ_{n} ⊬ (¬α_{n+1}), then Σ_{n+1} = Σ_{n} ∪ {α_{n+1}}. Clearly satisfies (ii), but is it consistent?

………………….. Suppose not. Then Σ_{n+1} ⊢ (¬α_{n+1}), by explosion.

………………….. So Σ_{n+1} ∪ {α_{n+1}} ⊢ (¬α_{n+1}).

………………….. So Σ_{n+1} ⊢ (α_{n+1} → (¬α_{n+1})).

………………….. ⊢ ((α→¬α)→¬α), so Σ_{n+1} ⊢ (¬α_{n+1}). Contradiction!

….. Define Σ’ = ∪ Σ_{n}. Σ’ is maximally consistent.

……….. Maximality

…………….. Suppose not. Then for some α_{n}, Σ’ ⊬ α_{n} and Σ’ ∪ {α_{n}} is consistent.

…………….. But Σ_{n} ⊆ Σ’, and either Σ_{n} ⊢ α_{n} or Σ_{n} ⊢ (¬α_{n}).

…………….. If Σ_{n} ⊢ α_{n}, by monotonicity Σ ⊢ α_{n}. Contradiction. So Σ_{n} ⊢ (¬α_{n}).

…………….. By monotonicity, Σ ⊢ (¬α_{n}), so Σ ∪ {α_{n}} ⊢ (¬α_{n}).

…………….. But Σ ∪ {α_{n}} ⊢ α_{n}. So Σ ∪ {α_{n}} is inconsistent. Contradiction!

……….. Consistency

…………….. Suppose Σ’ is inconsistent. Then for some α, Σ’ ⊢ α and Σ’ ⊢ (¬α).

…………….. So there are proofs of α and (¬α) from Σ’.

…………….. Proofs are finite, so each proof uses only a finite number of assumptions from Σ’.

…………….. So we can choose an n such that Σn contains all the needed assumptions.

…………….. Now both proofs from Σ’ are also proofs from Σ_{n}.

…………….. So Σ_{n} ⊢ α_{n} and Σ’ ⊢ (¬α_{n}).

…………….. So Σ_{n} is inconsistent. Contradiction!

Alright, we’re almost there! So now we have that for any consistent Σ, there’s an extension Σ’ that is maximally consistent. We’ll take it a little further and prove that not only is Σ’ maximally consistent, it’s also complete! (This is the purely syntactic sense of completeness, which is that for every sentence α, either Σ’ proves α or refutes α. This is different from the sense of *logical* completeness that we’re establishing with the proof.)

**Σ’ is complete.**

….. Σ_{n} ⊆ Σ’, and Σ_{n} ⊢ α_{n} or Σ_{n} ⊢ (¬α_{n}).

….. So by monotonicity Σ’ ⊢ α_{n} or Σ’ ⊢ (¬α_{n}).

Now we have everything we need to show that Σ’, and thus Σ, is satisfiable.

**If Σ is consistent, then Σ is satisfiable.**

Proof

….. Let Σ’ be a maximally consistent extension of Σ.

….. Define v_{Σ’}(p) over propositional variables p:

….. V_{Σ’}(p) = T if Σ’ ⊢ p and F if Σ’ ⊬ p

….. Ṽ_{Σ’}(α) = T iff Σ’ ⊢ α

……….. Base case: Let α be a propositional variable. Then Ṽ_{Σ’}(α) = T iff Σ’ ⊢ α by definition of V_{Σ’}.

……….. Inductive steps:

……….. (¬α)

…………….. If Σ’ ⊢ (¬α), then by consistency Σ’ ⊬ α, so Ṽ_{Σ’}(α) = F, so Ṽ_{Σ’}(¬α) = T.

…………….. If Σ’ ⊬ (¬α), then by completeness Σ’ ⊢ α. So Ṽ_{Σ’}(α) = T, so Ṽ_{Σ’}(¬α) = F.

……….. (α→β)

…………….. Suppose Σ’ ⊢ (α→β). By completeness Σ’ ⊢ α or Σ’ ⊢ (¬α).

………………….. If Σ’ ⊢ α, then Σ’ ⊢ β, so Ṽ_{Σ’}(β) = T, so Ṽ_{Σ’}(α→β) = T.

………………….. If Σ’ ⊢ (¬α), then Ṽ_{Σ’}(α) = F, so Ṽ_{Σ’}(α→β) = T.

……………. Suppose Σ’ ⊬ (α→β).

………………….. By completeness Σ’ ⊢ ¬(α→β).

………………….. ⊢ (β→(α→β)), so Σ’ ⊬ β on pain of contradiction. So ṼΣ'(β) = F.

………………….. Suppose Ṽ_{Σ’}(α→β) = T. Then Ṽ_{Σ’}(α) = F, so Σ’ ⊢ (¬α).

………………….. ⊢ (¬α→(α→β)). So Σ’ ⊢ (α→β). Contradiction.

………………….. So Ṽ_{Σ’}(α→β) = F.

….. So v_{Σ’} satisfies Σ’.

….. Σ ⊆ Σ’, so v_{Σ’} satisfies Σ.

….. So Σ is satisfiable!

Now our final result becomes a four-line proof.

**If Σ ⊨ α, then Σ ⊢ α.**

Proof

….. Suppose Σ ⊬ α.

….. Then Σ ∪ {¬α} is consistent.

….. So Σ ∪ {¬α} is satisfiable.

….. So Σ ⊭ α.

And we’re done! We’ve shown that if any sentence α is semantically entailed by a set of sentences Σ, then it must also be *provable* from Σ! If you’ve followed this proof all the way, pat yourself on the back.

With the Completeness Theorem in hand, the proof of the Compactness Theorem goes from several pages to a few lines. It’s so nice and simple that I just have to include it here.

**If Σ is finitely satisfiable, then Σ is satisfiable.**

….. Suppose **Σ** is not satisfiable.

….. Then Σ is not consistent.

….. So there is some α for which Σ ⊢ α and Σ ⊢ (¬α).

….. Since proofs are finite, there must be some finite subset Σ* of Σ such that Σ* ⊢ α and Σ* ⊢ (¬α).

….. By soundness, Σ* ⊨ α and Σ* ⊨ (¬α).

….. So Σ* is not satisfiable!

In other words, if Σ is not satisfiable, then there’s some finite subset of Σ that’s also not satisfiable. This is the Compactness Theorem! Previously we proved it entirely based off of the semantics of propositional logic, but now we can see that it is *also* provable as a consequence of the finite nature of our proof system!