The language $D=\{[M]|M([M])=0\}$ is not decidable because of the following argument:

Suppose there was a $TM \space M_D$ that decides $D$. Then if we gave $M_D \space [M] $, there would be two possible outcomes:

1. $M_D([M_D])=1 \text{ (accepts)}\implies M_D \text{ does accept }M_D $, contradiction, because then $M_D([M_D])=0$ must be true.

2. $M_D([M_D])=0 \text{ (does not accept})\implies M_D \text{ does accept }M_D $, contradiction, because then $M_D([M_D])=1 $ must be true.

Anyways, I think most people are familiar with the proof.

My question is:

Where does the following argument fail? (I think this is important to understand other proofs where diagonalization is involved)

Suppose we have a $TM$ $M_D$ that decides if another $TM \space M$ does not accept $[M]$. What if we just restrict $M_D$ so that it decides D for almost every other Turing Machine? So in this case we could say: $M_D$ does not decide for itself if $M_D$ accepts $[M_D]$, but it decides for every other Turing Machine.

Is this restriction useless because then it is possible to construct infinitely many Turing Machines for which $M_D$ can not decide whether they accept 'themselves'?


1 Answer 1


Even with your restriction $D$ is undecidable. You can still reduce the halting problem of a TM $A$ on a word $x$ to $D$. Construct a TM $B$ that simulates $A$ on $x$. If $A$ halts, $B$ accepts its input. Otherwise $B$ runs forever. Clearly then $A$ halts on $x$ iff $B \not\in D$. Note that you can always construct $B$ such that $B \neq M_D$ by performing additional, irrelevant steps.

  • $\begingroup$ Thank you, that is exactly what I wanted to know! $\endgroup$
    – David
    Jul 17, 2021 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.