First, let’s see the pseudocode proof of halting problem:
P(x) = run H(x, x) if H(x, x) answers "yes" loop forever else halt
Then we have a problem:
When param x is the encoding string of P itself, the code line
run H(x, x) will go to an infinite loop.
How does H know whether x halts on x?
The answer is H must simulate x on x, then it will call P(x) again and again, then go to an infinite recursive calling. So the pseudocode will stuck in this line
run H(x, x), and never can continue. So I think the pseudocode proof is not correct.
H seems like a future teller of P. no matter what H says about P, when P actually act x on x, P does the opposite of what H says, which shows that the future teller of P does not exist.
We know that future teller does not exist. so the H does not exist.