# Show that it is undecidable if two Turing Machines accept the same language

I was asked this question at an interview, and couldn't answer it, and would like to know how it is 'shown' that two Turing machines which accept the same language is undecidable. This is not a homework question!

Let's restrict ourselves to Turing machines that ignore their input. Now suppose you have two Turing machines:

1. Some given one T.
2. Another that loops forever.

If you could decide if they accept the same language, you'd be able to decide if T halts or not. This is impossible - see the halting problem.

This applies to SW/HW as well. It's undecidable if two programs perform the same computation or not.

• You've just repeated the interviewer's question back to them as a fact. OP (and the interviewer) are asking for a proof, not a link to Wikipedia. – JeffE May 10 '13 at 15:05
• @JeffE No, I claim that the decidability of the OP's question implies decidability of the halting problem, which is widely known to be impossible. I believe it's reasonable to expect that if an interviewer ask such a question, (s)he knows about the undecidability of the halting problem. Why the halting problem is undecidable is another question. – Petr Pudlák May 10 '13 at 18:48
• If I were an interviewer, I would want a stand-alone proof. It is also widely known that deciding whether two TM's accept the same language is undecidable, but saying "That's well known", while perfectly true, says absolutely nothing about the interviewee's level of understanding. – JeffE May 10 '13 at 20:55
• @JeffE Would you consider a reduction to the halting problem together with a proof of the halting problem's undecidability a stand-alone proof? – Quinn Culver May 12 '13 at 17:59
• Yes, I'd accept that, but a direct proof would be even better. – JeffE May 12 '13 at 23:05

If there were such an algorithm, then we could write another algorithm $P$ that, given a program $Q$ as input, first uses the supposed algorithm to decide if $Q$ accepts all strings. If Q does accept all, $P$ outputs some (fixed arbitrary) program $P(Q)$ that does not accept all strings. If $Q$ does not accept all, $P$ outputs some (fixed arbitrary) program $P(Q)$ that does accept all strings. So $P$ is a total program such that $P(Q)$ always functions differently than $Q$, contrary to the recursion theorem.

• Remark: this is essentially the proof of Rice's theorem, which can also be used to answer the OP's question. – Quinn Culver May 12 '13 at 20:27