7.3Undecidabilty and Unrecognizability by Self-Reference
The proof of the undecidability of given in Undecidabilty and Unrecognizability by Diagonalization is different from the typical proof, which uses self-reference to obtain a contradiction, and can be hard to understand at first. In this section, we give proofs using self-reference as self-reference is a key concept in computation and is essential for proofs of undecidability using diagonalization.
Intuitively, the idea is similar to how self-reference can lead to logical paradoxes such as the liar paradox and the barber paradox (also in Homework problem P6.1). In one version of the liar paradox, there are two types of people: truth-tellers who always tell true statements, and liars who always tell false statements. Suppose you meet a person who declares “I am a liar”. If the statement is true, then the person is lying and so the statement is false. On the other hand, if the statement is false, then the person is telling the truth and so the statement is true. Since the statement can either be true or false, and both possibilities lead to contradictions.
7.3.1Unrecognizability by Self-Reference¶
7.3.2Undecidabilty of by Self-Reference¶
7.3.3Optional: Fun with Self-Reference¶
There are lots of fun things you can do with self-reference:
quines are programs that print their own source code. This is how viruses replicate.
creating a backdoored login program with no trace in its source code. The origin is Ken Thompson’s[1] Turing Award lecture Reflection On Trusting Trust, now considered a seminal work in computer security. You may find this blog post easier to read.
Check out Bernard Chazelle’s excellent essay Algorithm as an Idiom of Modern Science for more examples.
One of the creators of UNIX and the Go programming language.
- Thompson, K. (1984). Reflections on trusting trust. Communications of the ACM, 27(8), 761–763. 10.1145/358198.358210