Extensions of undecidability using reductions and general results such as Rice’s theorem.
The halting problem is the first major example of an undecidable problem. Once we know that one problem is undecidable, we can use it to prove that many other problems are undecidable too.
A decision problem asks for a yes-or-no answer. In computability theory, we usually represent a decision problem as a language:
A machine decides if it always halts and gives the correct answer:
| Input | Correct behavior |
|---|---|
| accept | |
| reject |
If such a machine exists, then is decidable.
If no such machine exists, then is undecidable.
Recognizable and Decidable
A language is recognizable if there is a machine that accepts exactly the strings in the language.
For , the machine eventually accepts.
For , the machine may reject or run forever.
So recognizable means we can eventually confirm yes-instances, but we may fail to confirm no-instances.
A language is decidable if both yes and no cases are handled in finite time.
| Property | Yes case | No case |
|---|---|---|
| recognizable | eventually accept | reject or loop |
| decidable | eventually accept | eventually reject |
Every decidable language is recognizable, but not every recognizable language is decidable.
The halting language:
$$ \mathrm{HALT}_{\mathrm{TM}}
{\langle M,w\rangle : M \text{ halts on } w} $$
is recognizable but undecidable.
Reductions
A reduction transforms one problem into another.
Suppose we have two languages:
and
A many-one reduction from to is a computable function:
such that:
We write:
This means that problem can be translated into problem .
The direction matters. If:
and is decidable, then is decidable.
So if is known to be undecidable and:
then must also be undecidable.
Otherwise, a decider for would give a decider for .
Proving Undecidability by Reduction
To prove that a problem is undecidable, we usually do this:
- Start with a known undecidable problem .
- Build a computable transformation .
- Show:
- Conclude that is undecidable.
This is a standard pattern. It lets us reuse one hard impossibility result many times.
Example: Emptiness of Turing Machine Languages
Define:
$$ E_{\mathrm{TM}}
{\langle M\rangle : L(M)=\varnothing} $$
This problem asks whether a machine accepts no strings at all.
We will show that is undecidable.
The idea is to reduce from the acceptance problem:
$$ A_{\mathrm{TM}}
{\langle M,w\rangle : M \text{ accepts } w} $$
Given an input:
construct a new machine as follows.
On input :
- Ignore .
- Simulate on .
- If accepts , accept .
Now observe:
If accepts , then accepts every input . So:
In particular:
If does not accept , then accepts no input. So:
Therefore:
This gives a reduction from to the complement of . It shows that deciding emptiness would let us decide acceptance, which is impossible.
So is undecidable.
Example: Equivalence of Machines
Define:
$$ EQ_{\mathrm{TM}}
{\langle M_1,M_2\rangle : L(M_1)=L(M_2)} $$
This problem asks whether two Turing machines accept exactly the same language.
It is undecidable.
One way to see this is to reduce emptiness to equivalence.
Let be a fixed machine that rejects every input. Then:
Given a machine , ask whether:
This is exactly the question whether:
So if were decidable, then would be decidable.
But is undecidable. Therefore:
is undecidable.
Rice’s Theorem
Many undecidability results about Turing machines are instances of one general theorem.
Rice’s theorem says that every nontrivial semantic property of Turing-machine languages is undecidable.
A property is semantic if it depends only on the language accepted by the machine, not on the machine’s internal code.
A property is nontrivial if some machines have it and some machines do not.
Examples of semantic properties:
| Property | Question |
|---|---|
| emptiness | is ? |
| finiteness | is finite? |
| universality | is ? |
| contains a word | does contain ? |
| regularity | is regular? |
Each of these properties is undecidable by Rice’s theorem, provided we ask the question for arbitrary Turing machines.
Rice’s theorem does not apply to purely syntactic properties. For example:
This is decidable by inspecting the machine description.
The theorem concerns what the machine computes, not how the machine is written.
Totality
Another important undecidable problem is totality.
Define:
$$ \mathrm{TOTAL}_{\mathrm{TM}}
{\langle M\rangle : M \text{ halts on every input}} $$
This asks whether a machine is total as a function or decision procedure.
It is undecidable.
The intuition is simple. If we could decide whether halts on every input, then we could solve many termination questions. But arbitrary termination behavior is already undecidable.
Totality is even harder than the ordinary halting problem in some formal classifications, but the key point here is that no algorithm can decide it for all machines.
Decidable Islands
Undecidability does not mean every problem is hopeless.
Many restricted problems are decidable. For example:
- emptiness for finite automata is decidable
- equivalence for deterministic finite automata is decidable
- membership for context-free grammars is decidable
- type checking for many programming languages is decidable
- termination for simple loop-free programs is decidable
The boundary matters. Turing machines are powerful enough to express arbitrary computation. Once a model reaches that level of power, many global questions about its behavior become undecidable.
Why Reductions Matter
Reductions organize undecidable problems.
They let us say that one problem is at least as hard as another:
If is impossible to decide, and reduces to , then is also impossible to decide.
This gives computability theory a structure. Problems are not merely labeled decidable or undecidable. They are compared by how much computational difficulty they contain.
Undecidability results show that there are precise limits to algorithmic reasoning. The issue is not lack of cleverness or lack of hardware. Some decision problems cannot be solved by any algorithm.