A language is said to be computably enumerable if there is some machine that is:

  • Sound: if then
  • Complete: if then
Theorem: The Halting problem is computably enumerable.

Proof:

  1. Construct the following sound and complete machine :
  2. Note the following relationship:
  3. By the definition of our Universal Turing Machine we have that:
    • The right-to-left direction is soundness
    • The left-to-right direction is completeness
Theorem: The non-emptiness problem is C.E.

Proof:

  1. Let be an enumeration of all possible input words from .
  2. Construct the following algorithm :
    1. For each :
      1. For each :
        1. Run on for steps
        2. If accepts then return True
  3. Note the following relationship:
  4. By definition of , we have that
    • The right-to-left direction is soundness
    • The left-to-right direction is completeness

Co-computable Enumerability

A language is said to be co-computably enumerable if it’s complement is computably enumerable.

Theorem: if and are both C.E., then is decidable.

Proof:

  1. Suppose that (i) is C.E. and (ii) is C.E.
  2. By (i), let be a machine that is sound and complete w.r.t. By (ii), let be a machine that is sound and complete w.r.t.
  3. Construct a machine which runs and in parallel
Theorem: The non-Halting problem is not C.E.

Proof:

  1. We have that:
  2. However, we have that is undecidable but C.E.:
  3. Therefore, must not be C.E. as required: