5.3. The Diagonal Set K

Our proof that the acceptance problem is uncomputable uses a method called diagonalization.

The goal here is to reduce diagonalization to its simplest form.

The set K

Definition. K = {‹M› | φM(‹M›) ≠ ⊥}

K is uncomputable

Theorem. K is uncomputable.

Proof. Suppose that K is computable. Select a Turing machine t that solves K. That is,

(1) φt(‹M›) = true  ⇔  φM(‹M›) ≠ ⊥

(2) φt(‹M›) = false  ⇔  φM(‹M›) = ⊥

Construct the following program F.

  F(‹M›)
    if t answers true on input ‹M›
      loop forever
    else
      return true
    end if

Notice that

φF(M) = ⊥
 ⇔  φt(‹M›) = true (by inspection of F)
 ⇔  φM(‹M›) ≠ ⊥

Once again, substituting M = F yields contradiction

φF(F) = ⊥  ⇔  φF(‹F›) ≠ ⊥

The name diagonalization comes from the fact that we run F on itself. If you create an infinite grid with a row for each Turing machine and a column for each input string, then the values in that table that we are interested in are on the diagonal.

  TM   s1 s2 s3 …
  M1   x
  M2      x
  M3         x
  …