[Math] How to prove whether a language is decidable and/or semi-decidable (or neither) using reduction

formal-languageslogicturing-machines

I think I understand the basics of reduction, however I'm far from confident with using the techniques.

I have a couple of examples that I'm struggling with:

L1 = {< M > | M accepts an infinite amount of strings that end in a}

L2 = {< M > | L(M) ∈ SD}

Here is what I have tried for the first one:
By reduction of ¬H = {: Turing Machine M does not halt on w} to L.

R (< M, w >) =
1. Construct < M# >, where M# operates as follows:
1.1 Save it's input on a second tape
1.2 Erase the tape
1.3 Write w
1.4 Run M on w for n steps, or until it halts
1.5 If M has halted, then intentionally loop
1.6 Else accept
2. Return < M# >

If < M# > exists and semi-decides L, then R semi-decides ¬H.

However, I'm assuming no machine can semi-decide ¬H, thus the language is not in SD or D? But I'm not really sure why, or how…

Any help is appreciated, thank you!

Best Answer

I can't follow your reduction, although there is indeed a (many-one) reduction of $\neg H$ to $L_1$; so, if $L_1$ is semidecidable, $\neg H$ is semidecidable.

You're also right that $\neg H$ is not, in fact, semidecidable; and that therefore $L_1$ is not semidecidable.

To see that $\neg H$ is not semidecidable:

  • Is $H$ semidecidable?

  • What do you know about a language, such that it and its complement are semidecidable?


As to the other question: I suspect you are thinking too hard about this one. When is the language accepted by some Turing machine a semidecidable language? (HINT: what does "semidecidable" mean?)

Related Question