halts(f)
exists and returns true or false for all functions. We could then use it to write a function such as:
The Halting Problem cannot be solved
Wikipedia gives a nice, 1000-foot proof by contradiction to this problem. Imagine
function f() {
if (halts(f)) {
while (true) {
// Do nothing
}
}
}
Does
f()
halt? If it does, then halts(f)
is true so we enter an infinite loop (which does not halt). If f
does not halt, then we skip the loop and return immediately in which case it does halt. We’ve worked ourselves into a contradiction, and the only way out is if halts(f)
does not exist as in our assumption.