Reputation: 21
I need to prove whether this language is recognizable or not:
{ ⟨M, w⟩: M is a Turing machine that accepts string w and does not accept string ε }
I figure I could do a reduction on ATM, but how do I handle the empty string?
Upvotes: 2
Views: 2404
Reputation: 373042
Here's one way to do a reduction from the complement of ATM to your language.
Given a TM M and a string w, build this TM/string pair:
M' = "On input x:
If x = "iheartquokkas", accept.
Otherwise:
Run M on w.
If M accepts, accept;
If M rejects, reject;
(Implicitly: if M loops, loop.)"
w' = "iheartquokkas"
First, suppose that M does not accept w. Then machine M' does indeed accept the string w', because it's programmed to do so. Additionally, when you run M' on ε, it will run M on w and never accept because M doesn't accept w. Thus M' accepts w' but not ε, so ⟨M', w'⟩ is in your language.
Second, suppose that M accepts w. Then when you run M' on ε, it will accept, so it is not the case that M' accepts w' but not ε. Therefore, ⟨M', w'⟩ is not in your language.
You now have a mapping reduction from ATM's complement to your language, so your language isn't recognizable.
Now, can you prove that it's not co-recognizable?
Upvotes: 0