COT4210

Prof. Rene Peralta
Lecture 3.
  • A language L is computable (also called "recursive", or "decidable") if there exists a halting Turing machine (or C program) which distinguishes between words in L and words not in L .
  • There exists a bijection between the power set of N and the set of predicates (binary-valued functions) on N .
  • Thus the set of languages (and therefore the set of computational problems) is uncountable.
  • The set of Turing machines is countable.
  • Thus almost every language is undecidable .
  • A language L is recursively enumerable if there exists a Turing machine M which "outputs" L . This means that if you run M then any word in L will eventually be output.
  • The set of recursively enumerable languages is countable, as is any set of "finitely specified" languages. Thus, the above cardinality argument cannot be used to show there exists undecidable yet finitely specifiable languages. However: the set of halting Turing machines is recursively enumerable but not recursive .
  • Thus there exist r.e. sets (languages) with are not recursive. We discussed some implications of the above result on the "order" in which such sets can be output by a Turing machine. In particular, it is impossible to output such sets in lexicographic order.