3 ms·
The standard argument is: Assume H(P,i) to be a program that tells you whether the program P will halt on input i. Returns true if it halts and false if it doe
by jstanley 3mo ago
The standard argument is:
Assume H(P,i) to be a program that tells you whether the program P will halt on input i. Returns true if it halts and false if it doesn't.
Define a new program G(x) that halts if x does not halt on itself as input and loops forever if x halts on itself as input:
def G(x):
if H(x,x):
while True:
pass
else:
return
Does G(G) halt?
If G(G) halts then H(G,G) is true so we end up in the infinite loop, a contradiction. If G(G) does not halt then it returns without looping, also a contradiction.
So our halting oracle H does not exist, so there can not be a function that tells you whether another function will halt on itself as input, so there can not be a function that tells you in the general case whether some other computation will halt, QED.