Idea

The halting problem is a decision procedure for deciding whether a Turing machines halts on an input string . It was proven by Turing that such a problem is undecidable.

Definition

be defined as iff terminates on input , where is the set of Turing machines on an input language .

Undecidability

is recursively enumerable but not decidable.
The proof essentially goes:

  1. Fix to be an injective computable encoding.
  2. Suppose for a contradiction that you have a decider for the language .
  3. Construct a TM that given an input machine runs on .
  4. If returns then loop, otherwise halt (it doesn’t matter what is returned).
  5. Now run on . This terminates iff iff doesn’t terminate.
  6. Contradiction. Hence no such deciding TM can exist.
    This proves that the set of decidable problems is a strict subset of the recursively enumerable languages.