2

Is my proof that FINIT is undecidable correct?

FINITE= { ⟨M⟩ | M is a Turing machine that accepts only finitely many strings } is undecidable.

Answer: To prove this we can use reduce to Halting Problem, which is a known to be undecidable problem. to prove that FINITE is undecidable, assume for contradiction that there is a decider D for FINITE. This decider takes a TM M and decides whether M accepts only finitely many strings. And by using D, we can construct a Turing machine M′ to decide the HP M′ takes as input a description of a Turing machine H and a string w. M′ constructs a new Turing machine N as follows: N on input x simulates H on w. If H halts on w, then N accepts x. If H does not halt on w, then N runs indefinitely.

Now, M′ uses the decider D on N. If D decides that N accepts only finitely many strings, it means H does not halt on w (since N doesn't accept any string if H doesn't halt). If D decides that N does not accept only finitely many strings, it means H halts on w (since N would accept all strings in this case).

Pål GD
  • 16,115
  • 2
  • 41
  • 65
Sachihiro
  • 121
  • 2
  • We don't normally approve of "check my homework" questions. What is it that you're not sure about? Is there something specific about the proof you don't understand? – Pål GD Nov 14 '23 at 18:50
  • I am just not sure if my argument is correct. It is not for homework actually, I am just preparing for an exam and I am trying to see solve some problems from previous exams. – Sachihiro Nov 14 '23 at 19:08
  • 2
    The proof looks good to me, except that it is a reduction from the halting problem and not to the halting problem. You designed a Turing machine with an oracle for FINITE that decides the halting problem. – Steven Nov 14 '23 at 23:11

0 Answers0