Let's say that we have a program ($P$) that takes in a $0$ or a $1$. If a $0$ is inputted the program will loop. If a $1$ is inputted the program will halt. If we assume there is a program that can decide whether a program is going to halt or not ($h$) we can write the statement above
$$h(P(X))$$ $$h(P(0)) = 0$$ $$h(P(1)) = 1$$
Now if we create a program ($R$) that halts if the program loops and loops if the program halts
$$R(h(P(X)))$$ $$h(R(h(P(0)))) = 1$$ $$h(R(h(P(1)))) = 0$$
This new program we can call it $h^\dagger(P(X))$. If we feed this function back into it's self we get $$h^\dagger(h^\dagger(P(X)))$$
Which is completely decidable for this program $$h^\dagger(h^\dagger(P(X))) = R(h(R(h(P(X)))))$$ $$h(h^\dagger(h^\dagger(P(0)))) = h(R(h(R(h(P(0)))))) = 0$$ $$h(h^\dagger(h^\dagger(P(1)))) = h(R(h(R(h(P(1)))))) = 1$$
It's clear that $$h^\dagger(h^\dagger(P(X))) \not = h^\dagger(P(X))$$
which is what the halting problem assumes.
In general $P(X)$ could be any function which means that it is decidable for any function input. In the halting problem, the program takes in the code for $h^\dagger$ and feeds it to its self without giving the first $h^\dagger$ an input, so there is no reason to expect $h^\dagger$ to halt or not because there is no input to make either happen. If you give it an input there is no contradiction. So why is it still undecidable?
Just because the sequence $x_{n+1}=f(x_n)$ doesn't have a limit why is this enough to conclude that $f(x)$ doesn't exist?
Thanks Josh.