That's precisely the implication of a proof by contradiction! H does not and cannot exist.PeteOlcott wrote: ↑Mon May 09, 2022 5:02 pm I refute the whole class of proofs that are based on this trick:
For any program H that might determine if programs halt, a "pathological" program P, called with some input, can pass its own source and its input to H and then specifically do the opposite of what H predicts P will do. No H can exist that handles this case.
Which is what makes the problem unsolvable.
Now if you happen to be the type of person who only insists on having constructive proofs - fine.
If you are the type or person who doesn't recognise proof by contradiction as a valid method of proving anything - fine.
Any proofs of the halting problem can only be semi-decidable. I can agree with that.
Instead of a contradiction all you have to recognise is that you will end up with two mutually-dependent functions P and H which will recursively (and infinitely) continue calling each other. Indeed, that's a circular dependency, but so what? It's also called Mutual recursion. It's a valid model of computation and it's precisely how LISP is implemented. Using an eval-apply loop.