I’m sorry Dave. I can’t do that.
Consider the language:
ATM = {<M, w> | M is a Turing machine that accepts w}
Suppose H is a decider for ATM. Deciders never loop.
H(<M, w>) = accept, if M accepts w
H(<M, w>) = reject, if M does not accept w
Use H to build the demonic D
D(<M>) = accept, if H(<M, <M>>) = reject
D(<M>) = reject, if H(<M, <M>>) = accept
We can do this because H is a decider.
Let’s simply that a little
D(<M>) = accept, if M does not accept <M>
= reject, if M does accept <M>
But what if we pass D to D
D(<D>) = accept, if D does not accept <D>
= reject, if D does accept <D>
The videos of Harry H. Porter, III are another reference for those who like to YouTube it.