{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Week 10: Undecidability" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from tock import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tuesday\n", "\n", "### The real numbers are uncountable\n", "\n", "Now we shift for the moment to a totally different topic, the uncountability of the real numbers. The concept of an uncountable infinity, and the associated proof technique of diagonalization, was discovered by Georg Cantor. Unfortunately, it also drove him crazy.\n", "\n", "
\n", "

Read subsection \"The Diagonalization Method,\" from page 202 to the table at the top of page 206.

\n", "

Watch W10E1: Diagonalization.

\n", "
\n", "\n", "Suppose that there are countably many real numbers. Then there is a way to enumerate all the real numbers in $[0,1)$. We can write the digits after the decimal point in a table like this:\n", "\n", "| | | | | | |\n", "|-----|-|-|-|-|--------|\n", "|$x_1$|.1|4|1|5|$\\cdots$|\n", "|$x_2$|.5|5|5|5|$\\cdots$|\n", "|$x_3$|.1|2|3|4|$\\cdots$|\n", "|$x_4$|.5|0|0|0|$\\cdots$|\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|\n", "\n", "Then we can form a new real number by taking the diagonal and changing every digit (but avoid 0 and 9, as explained in the book):\n", "\n", "| | | | | | |\n", "|-----|-|-|-|-|--------|\n", "|$x_1$|.**1**|4|1|5|$\\cdots$|\n", "|$x_2$|.5|**5**|5|5|$\\cdots$|\n", "|$x_3$|.1|2|**3**|4|$\\cdots$|\n", "|$x_4$|.5|0|0|**0**|$\\cdots$|\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|\n", "|$x'$|.2|6|4|1|$\\cdots$|\n", "\n", "\n", "This new number cannot be equal to any row of the table, which is a contradiction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### There are uncountably many languages\n", "\n", "We can adapt Cantor's argument for the uncountability of the reals to an argument for the uncountability of the set of all languages. Our proof is different from the book's proof of Corollary 4.18 (page 206), and I think it should be okay just to read ours.\n", "\n", "Suppose that there are countably many languages over a finite alphabet $\\Sigma$. Then we can number them $L_1, L_2, L_3, \\ldots$. \n", "\n", "We can number all strings in $\\Sigma^\\ast$ in [shortlex order](https://en.wikipedia.org/wiki/Shortlex_order). Call the $j$th string in this ordering $w^{(j)}$. (We use this notation to avoid confusion with the notation $w_j$ for the $j$th symbol of $w$.)\n", "\n", "Imagine a big table whose $i$th row is $L_i$ and whose $j$th column is $w^{(j)}$, and cell $(i,j)$ says whether $w^{(j)} \\in L_i$. For illustration's sake, we assume $\\Sigma = \\{\\mathtt{0}, \\mathtt{1}\\}$. \n", "\n", "| | $\\varepsilon$ | $\\mathtt{0}$ |$\\mathtt{1}$ | $\\mathtt{00}$ | $\\cdots$ |\n", "|-----|-------|-------|-------|-------|--------|\n", "|$L_1$| _no_ | _yes_ | _no_ | _yes_ | $\\cdots$ |\n", "|$L_2$| _no_ | _yes_ | _yes_ | _no_ | $\\cdots$ |\n", "|$L_3$| _yes_ | _no_ | _yes_ | _no_ | $\\cdots$ |\n", "|$L_4$| _no_ | _no_ | _no_ | _yes_ | $\\cdots$ |\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$| |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we can form a new language by taking all the diagonal entries of this table and inverting them (yes to no and no to yes):\n", "\n", "| | $\\varepsilon$ | $\\mathtt{0}$ |$\\mathtt{1}$ | $\\mathtt{00}$ | $\\cdots$ |\n", "|-----|-------|-------|-------|-------|--------|\n", "|$L_1$| **no** | _yes_ | _no_ | _yes_ | $\\cdots$ |\n", "|$L_2$| _no_ | **yes** | _yes_ | _no_ | $\\cdots$ |\n", "|$L_3$| _yes_ | _no_ | **yes** | _no_ | $\\cdots$ |\n", "|$L_4$| _no_ | _no_ | _no_ | **yes** | $\\cdots$ |\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$| |\n", "|$L'$| _yes_ | _no_ | _no_ | _no_ | $\\cdots$ |\n", "\n", "More formally,\n", "$$L' = \\{ w^{(i)} \\mid w^{(i)} \\not\\in L_i \\}.$$\n", "\n", "This language $L'$ cannot be equal to any row of the table, because for any $i$, either $w^{(i)} \\in L'$ but $w^{(i)} \\not\\in L_i$, or $w^{(i)} \\not\\in L'$ but $w^{(i)} \\in L_i$.\n", "\n", "But the table supposedly contains all possible languages, which is a contradiction. Therefore there are uncountably many languages." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Thursday\n", "\n", "Today's topic is undecidability: is there such a thing as a language that can't be decided by a Turing machine (and therefore, by any computer program as we know it)?\n", "\n", "The answer is yes, and not only so, but *almost all* languages are undecidable.\n", "\n", "
\n", "

Watch W10E2: Undecidable Languages.

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### There is an undecidable language\n", "\n", "Since Turing machines can be encoded as strings, there _is_ a way to number all possible Turing machines $M_1, M_2, M_3, \\ldots$ (e.g., sort their encodings in shortlex order and then number them consecutively). It follows that there are languages (in fact, almost all languages) which cannot be decided by any Turing machine. But we'd like a proof that explicitly constructs such a language.\n", "\n", "Imagine a big table whose $i$th row is $M_i$ and whose $j$th column is $w^{(j)}$, and cell $(i,j)$ says whether $w^{(j)} \\in \\mathcal{L}(M_i)$ (that is, it says \"yes\" if $M_i$ accepts $w^{(j)}$, but \"no\" if $M_i$ rejects _or_ loops on $w^{(j)}$.)\n", "\n", "| | $\\varepsilon$ | $\\mathtt{0}$ |$\\mathtt{1}$ | $\\mathtt{00}$ | $\\cdots$ |\n", "|-----|-------|-------|-------|-------|--------|\n", "|$M_1$| _no_ | _yes_ | _no_ | _yes_ | $\\cdots$ |\n", "|$M_2$| _no_ | _yes_ | _yes_ | _no_ | $\\cdots$ |\n", "|$M_3$| _yes_ | _no_ | _yes_ | _no_ | $\\cdots$ |\n", "|$M_4$| _no_ | _no_ | _no_ | _yes_ | $\\cdots$ |\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$| |\n", "\n", "We can again form a new language by taking all the diagonal entries of this table and inverting them:\n", "\n", "$$L_D = \\{w^{(i)} \\mid \\text{$M_i$ does not accept $w^{(i)}$}\\}$$\n", "\n", "And this language again cannot be equal to any row of the table, because for any $i$, either $w^{(i)} \\in L_D$ but $M_i$ does not accept $w^{(i)}$, or $w^{(i)} \\not\\in L_D$ but $M_i$ accepts $w^{(i)}$.\n", "\n", "This means that there is no such thing as a Turing machine that decides $L_D$. (In fact, there isn't even one that recognizes it.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The undecidable language $A_{\\mathsf{TM}}$\n", "\n", "The book's first example of an undecidable language is\n", "\n", "$$A_{\\mathsf{TM}} = \\{ \\langle M, w \\rangle \\mid \\text{$M$ accepts $w$} \\}.$$\n", "\n", "This language will be very useful for proving other undecidable languages. We can prove $A_{\\mathsf{TM}}$ undecidable by continuing our proof above. Suppose that there exists a decider $H$ that decides $A_{\\mathsf{TM}}$. \n", "\n", "Then we would be able to compute the value of any cell of the above table since $H$ is supposedly a decider. But that would enable us to define a decider for $L_D$. Namely, define a TM $D$ that, on input $w$, \n", "\n", "1. Find $i$ such that $w = w^{(i)}$.\n", "2. Construct machine $M_i$.\n", "3. Run $H$ on input $\\langle M_i, w^{(i)} \\rangle$.\n", "4. If $H$ accepts, *reject*, and if $H$ rejects, *accept*.\n", "\n", "But we know this is impossible, either by using the undecidability of $L_D$ as shown above, or we can repeat the argument again. If $D$ exists, then for some $i$, $D = M_i$. If $D$ accepts $w^{(i)}$, then (by the definition of $D$) we know that $H$ rejects $\\langle D, w^{(i)}\\rangle$, but (by the definition of $H$) it was supposed to accept. Similarly, if $D$ rejects $w^{(i)}$, then (by the definition of $D$) we know that $H$ accepts $\\langle D, w^{(i)}\\rangle$, but (by the definition of $H$) it was supposed to reject. Therefore, $D$ cannot exist, and $A_{\\mathsf{TM}}$ is undecidable.\n", "\n", "
\n", "

Read: If the above isn't clear, try the book's proof on pages 207–209.

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The halting problem\n", "\n", "
\n", "

Watch W10E3: The Halting Problem.

\n", "
\n", "\n", "Most books use the following language as their first undecidable language:\n", "\n", "$$\\mathit{HALT}_{\\mathsf{TM}} = \\{ \\langle M, w \\rangle \\mid \\text{$M$ halts on $w$} \\}.$$\n", "\n", "This is probably the most well-known undecidable problem: Can you write a program that looks at another program $M$ and input $w$ and decides whether $M$ halts or loops on $w$?\n", "\n", "**Question:** Adapt the above diagonalization argument to prove that $\\mathit{HALT}_{\\mathsf{TM}}$ is undecidable.\n", "\n", "For fun, you can read Geoff Pullum's \"[Scooping the Loop Snooper](http://www.lel.ed.ac.uk/~gpullum/loopsnoop.html): A proof that the Halting Problem is undecidable.\"\n", "\n", "The following table may help. Unlike our proof above (and like Sipser's), the columns of the table are not the strings in shortlex order, but the encodings of $M_1, M_2, \\ldots$.\n", "\n", "| | $M_1$ | $M_2$ |$M_3$ | $M_4$ | $\\cdots$ | $Q$ | $\\cdots$ |\n", "|-----|-------|-------|-------|-------|--------|-|-|\n", "|$M_1$| _bad!_ | _good!_ | _bad!_ | _good!_ | $\\cdots$ | _good!_ | $\\cdots$ |\n", "|$M_2$| _bad!_ | _good!_ | _good!_ | _bad!_ | $\\cdots$ | _bad!_ | $\\cdots$ |\n", "|$M_3$| _good!_ | _bad!_ | _good!_ | _bad!_ | $\\cdots$ | _good!_ | $\\cdots$ |\n", "|$M_4$| _bad!_ | _bad!_ | _bad!_ | _good!_ | $\\cdots$ | _good!_ | $\\cdots$ |\n", "|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$|$\\vdots$| $\\ddots$ | _bad!_ | $\\cdots$ |\n", "|$Q$| _good!_ | _bad!_ | _bad!_ | _bad!_ | $\\cdots$ | ??? | $\\cdots$ |" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Read the subsection \"A Turing-Unrecognizable Language.\"

\n", "
\n", "\n", "![image.png](attachment:image.png)" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "### A first look at reducibility\n", "\n", "Now that we've proven that one language ($A_{\\mathsf{TM}}$) is undecidable, we can use it to prove that other languages are undecidable.\n", "\n", "
\n", "

Read pages 215–217, up to \"via the diagonalization method.\"

\n", "
\n", "\n", "The first example is the halting problem $\\mathit{HALT}_{\\mathsf{TM}}$. In many textbooks (and the poem \"Scooping the Loop Snooper\"), the halting problem is actually the prototypical undecidable language, but Sipser does things a little differently.\n", "\n", "To prove that the halting problem is undecidable, you assume that it *is* decidable, that is, there is a TM $R$ that decides it. Then, you show that armed with such a TM, you could implement another TM, $S$, that decides $A_{\\mathsf{TM}}$, which is a contradiction because we know that $A_{\\mathsf{TM}}$ is undecidable.\n", "\n", "![image.png](attachment:image.png)\n", "\n", "Remember that the direction of the reduction is the opposite of what most people intuitively think of first. If you want to show that the halting problem is undecidable, you do _not_ reduce the halting problem to $A_{\\mathsf{TM}}$; you reduce $A_{\\mathsf{TM}}$ to the halting problem. To avoid confusion (and, you will see that the potential for confusion grows below), we give a nickname to each TM to help you remember which is which. Call $R$ the \"loop snooper,\" in homage to Pullum, and $S$ the \"universal decider\" (because it's a universal TM but it always halts).\n", "\n", "So, suppose that we had a TM $R$ (the loop snooper) that decides the halting problem $\\mathit{HALT}_{\\mathsf{TM}}$. Then, designing a universal decider $S$ would be easy: $S =$ \"On input $\\langle M, w\\rangle$,\n", "\n", "1. Use the loop snooper $R$ to check whether $M$ loops on $w$.\n", "2. If a loop is detected, *reject*.\n", "3. If no loop is detected, we can safely simulate $M$ on $w$.\n", "4. If it accepts, *accept*.\n", "5. If it rejects, *reject*.\n", "\n", "But last time we showed (by diagonalization) that the universal decider $S$ does not exist. Therefore, the loop snooper $R$ cannot exist either." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Penrose-Lucas argument (optional)\n", "\n", "
\n", "

Watch (optional) W10E4: The Penrose-Lucas Argument.

\n", "
\n", "\n", "Turing machines were invented as a model of what it means for *humans*, not computing machines, to compute, and so a natural question is, can Turing machines serve as a model for *all* human reasoning? I want to present to you one argument for the \"no\" position. Turing called it \"the mathematical objection\" and it is usually known today as the Penrose-Lucas argument. This version, which is an interesting variation on the diagonalization argument for the undecidability of the halting problem, is due to Penrose and comes from [an article criticizing him](http://www.ihmc.us/users/phayes/pub/lafortehayesford.pdf). Although I agree with the conclusion, I don't agree with the argument -- what do you think about it?\n", "\n", "Let $R$ be a \"partial loop-snooper,\" a decider TM that detects _some_ cases of looping. That is, on input $\\langle M, w\\rangle$, if $R$ accepts, then $M$ loops on input $w$. But if $R$ rejects, it doesn't mean anything.\n", "\n", "Now we go through the usual diagonalization argument; the only difference is that it doesn't lead to a contradiction, but to a machine/input pair that is beyond $R$'s detection abilities. Assume an ordering $M_1, M_2, \\ldots$ on Turing machines and an ordering $w^{(1)}, w^{(2)}, \\ldots$ on strings. We can build a big table with the results of $R$ on all machines and inputs:\n", "\n", "| | $\\varepsilon$ | $\\mathtt{0}$ |$\\mathtt{1}$ | $\\mathtt{00}$ | $\\cdots$ |\n", "|:-|:------------|:-----------|:------------|:------------|:-------|\n", "|$M_1$| _don't know_ | _loops_ | _don't know_ | _loops_ | |\n", "|$M_2$| _don't know_ | _loops_ | _loops_ | _don't know_ | |\n", "|$M_3$| _loops_ | _don't know_ | _loops_ | _don't know_ | |\n", "|$M_4$| _don't know_ | _don't know_ | _don't know_ | _loops_ | |\n", "|$\\vdots$| | | | | | |\n", "\n", "We define $D$ to be the Turing machine that _does_ the opposite of the diagonal of this table. That is, on input $w$:\n", "\n", "1. Find $i$ such that $w = w^{(i)}$.\n", "2. Run $R$, the partial loop-snooper, on $\\langle M_i, w^{(i)}\\rangle$.\n", "3. If $R$ detected an infinite loop, _accept_.\n", "4. Otherwise, go into an infinite loop.\n", "\n", "Now, there must be an $i$ such that $D = M_i$. We claim that $D$ loops on $w^{(i)}$ but $R$ does not detect it. \n", "\n", "- For if $R$ accepts $\\langle D, w^{(i)}\\rangle$, then $D$ must not loop on $w^{(i)}$, but that would be a contradiction. \n", "- But if $R$ rejects $\\langle D, w^{(i)}\\rangle$, then $D$ must loop on $w^{(i)}$, which is *not* a contradiction. \n", "\n", "So, in fact, $D$ does loop on $w^{(i)}$, but $R$ does not detect it.\n", "\n", "It's critical that you understand the argument thus far before moving on.\n", "\n", "Suppose that you are equivalent to a Turing machine. You have a partial ability to detect looping. So it should be possible to construct a Turing machine $Y$ that accepts $\\langle M, w\\rangle$ in exactly those cases when you are able to detect that $M$ loops on input $w$.\n", "\n", "Then, by the above argument, there is a machine/input pair $\\langle D, w^{(i)}\\rangle$ that loops, but $Y$ rejects it. By the definition of $Y$, you are not able to detect that $\\langle D, w^{(i)}\\rangle$ loops. But if you understood the above argument, then you know that $\\langle D, w^{(i)}\\rangle$ does loop. This is a contradiction! Therefore, congratulations! You are not equivalent to a Turing machine." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.1" } }, "nbformat": 4, "nbformat_minor": 2 }