Processing math: 100%

Pages

Monday, November 2, 2015

Occurrences of the diagonal argument

Diagonalization occurs in many places, since its first use by Cantor to prove that the real numbers are uncountable. I will try to maintain in this post, a list of the occurrences of this argument. Just for, so to speak: fun.

The main idea is the following. We have a set I of ``codes'', and a set, e.g., N of ``inputs''. Very often, if the goal were not true, then there would be a function F : I \times N \rightarrow \{0,1\} that ``efficiently'' encodes some property about the pair (i,n) \in I \times N. One can then build from the diagonal a new code K \in I such that, for all n \in N, F(K,n) = 1 - F(n,n). Very often, every element i \in I can be encoded as an element of N. The contradiction is obtained with F(K,K) = 1-F(K,K).

Let's see some concrete examples.

    #1. Real numbers are uncountable


Let I = N = \mathbb{N}. Assume there exists a function F : I \times N \rightarrow \{0,1\} such that for every real number x \in [0,1], there exists a code i \in I such that F(i,n) is the n-th bit of x in its binary expansion.

We now build a member K \in I from the diagonal of F by F(K,n) = 1-F(n,n), i.e., the real number encoded by K is the one whose n-th bit is 1-F(n,n). But then the K-th bit of K is F(K,K) = 1 - F(K,K). Whence a contradiction.

    #2. The Halting problem

Let I be the set of codes of Turing machines. Assume that there exists a machine F which solves the Halting problem, i.e., for any (i,n), F terminates on  (i,n), and F(i,n) = 1 if the i-th machine terminates on input n, and 0 otherwise. Again, we can think of F as an array with rows indexed by Turing machines, and columns indexed by all possible inputs.

We now build a machine K \in I from the diagonal of F. On the input n (a code for a Turing machine), the machine K returns (any value is ok) if F(n,n) = 0 and runs forever otherwise. Since K \in I, the value F(K,K) is defined. But, K does not terminate on input K iff F(K,K) = 0 iff K terminates on input K. Whence a contradiction. Note that here the expression ``F(K,n) = 1 - F(n,n)'' from the introduction is to be understood as: K does not terminate on input n if F(n,n) returns 1.

    #3. The Time Hierarachy theorem

Let I be the set of (codes of) Turing machines. I am merely restating the proof on wikipedia. Let f : \mathbb{N} \rightarrow \mathbb{N} be a time constructible function. Consider the following problem
  H = \{ (i,n),~\text{the machine } i\in I \text{ accepts } n \text{ within } f(|n|) \text{ steps}\}
Here, ``accept'' means returning 1. It is not difficult to see that H \in \mathsf{DTIME}(f(m)^3) where m denotes the size of (i,n). The goal is to prove that H does not belong to \mathsf{DTIME}(f(m/2)). Assume it is the case. Then, there exists a machine F which terminates on each input (i,n) within f(m/2) steps such that F(i,n) = 1 if (i,n) \in H  or 0 otherwise.

We now build a machine K from the diagonal of F. The machine K accepts the input i if F rejects (i,i), and rejects it otherwise. Let s be the size of K, and m \simeq 2s+1 be the size of (K,K). The function F takes about f(m/2) \simeq f(s) steps to compute F(K,K). In particular, K terminates within f(s) steps on input K. Now, K accepts input K (which it does within f(s) steps) iff F rejects input (K,K) iff K does not accept K within f(s) steps iff K rejects K (which it does within f(s) steps). Whence a contradiction. Here, the expression ``F(K,n) = 1 - F(n,n)'' is to be understood as: K rejects (accepts) n if F accepts (rejects) (n,n).

pb

No comments:

Post a Comment