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).