Related:<p><i>Scooping the Loop Snooper (2000)</i> - <a href="https://news.ycombinator.com/item?id=30783422">https://news.ycombinator.com/item?id=30783422</a> - March 2022 (31 comments)<p><i>Scooping the Loop Snooper: Proof That the Halting Problem Is Undecidable (2000)</i> - <a href="https://news.ycombinator.com/item?id=20956756">https://news.ycombinator.com/item?id=20956756</a> - Sept 2019 (33 comments)<p><i>Scooping the Loop Snooper (2000)</i> - <a href="https://news.ycombinator.com/item?id=10077471">https://news.ycombinator.com/item?id=10077471</a> - Aug 2015 (2 comments)
Diagonalizations are some of the easiest to understand, yet most profound proofs in math. Another example is the proof that any continuum is larger in cardinality than the set of integers.<p><a href="https://en.m.wikipedia.org/wiki/Diagonal_argument" rel="nofollow">https://en.m.wikipedia.org/wiki/Diagonal_argument</a>
Sweet poem. I remember being blown away when I studied computer science.
The whole idea that there are inherit limits to computing on Turing machines seemed crazy.<p>Gödel's incompleteness theorems has a similar proof that will mess with your brain :)
Suppose O is the oracle for the halting problem.<p>We create a machine: given a program P, ask O whether P halts given input P and negate the answer.<p>λP. ~O (P P)<p>Now we ask whether this machine will halt given its own source code as input. In symbols:<p>(λP. ~O (P P)) (λP. ~O (P P))<p>which is the Y-combinator in lambda calculus.
The halting problem--a tough endeavor<p>"Will the loop complete or run forever?"<p>Many fixes were attempted<p>(Lambda's 15 minute limit doesn't get exempted)<p>You'll quickly find there is no winning<p>As the LOADING ball keeps spinning<p>To date there remains a single hack:<p>Rip the cable out the back<p>You'll have an answer clarified:<p>"The loop is done; the power died."
I quoted this, in full, in my MSc thesis. It's both a light hearted introduction to the Halting Problem and something you need to reference quite often when writing about static program analysis. Good times.
Obligatory mention that although Halt doesn’t exist for arbitrary P, there are Halt_N for every natural N where Halt_N works on empty-input TMs with at most N states.<p>Undecidability is more about compression than it is about whether we can determine if TMs halt.