Lecture
In mathematics, logic and computer science, a recursively enumerable language is a type of formal language, also known as partially decidable or Turing-recognizable. In the Chomsky hierarchy it is known as a type-0 language. The class of all recursively enumerable languages is called RE.
There are three main equivalent definitions of the concept of a recursively enumerable language.
All regular, context-free, context-sensitive and recursive languages are recursively enumerable.
Post's theorem shows that RE, together with its complement co-RE, corresponds to the first level of the arithmetical hierarchy.
Recursively enumerable languages are closed under the following operations. Let L and P be two recursively enumerable languages; then the following languages are also recursively enumerable:
Note that recursively enumerable languages are not closed under set difference or complement. The set difference L\P may or may not be recursively enumerable. If L is recursively enumerable, then the complement of L is recursively enumerable if and only if L is also recursive.
Closure of recursive languages under various operations is a property of programming languages that can describe computable functions using recursion. Let us consider some operations that can be applied to recursive languages:
Union: If L1 and L2 are recursive languages, then their union 2L1∪L2 is also a recursive language. This follows from the fact that the union of two recursive sets can also be described using recursion.
Intersection: If L1 and L2 are recursive languages, then their intersection 2L1∩L2 is also a recursive language. This requires creating additional rules describing the conditions under which strings belong to both L1 and L2.
Concatenation: If L1 and L2 are recursive languages, then their concatenation 2L1⋅L2 is also a recursive language. The rules of recursive concatenation can be defined using recursive functions.
Kleene Closure: If L is a recursive language, then its Kleene closure L∗ is also a recursive language. This is due to the ability to describe repeating patterns using recursion.
Set Difference: If L1 and L2 are recursive languages, then their difference L1−L2 is also a recursive language, provided that the rules of the difference are defined using recursive rules.
These operations make it possible to build new recursive languages from existing ones. Closure under these operations is due to the fact that the rules for these operations can be formulated using recursion, which is a characteristic feature of recursive languages.
The set of halting Turing machines is recursively enumerable but not recursive. Indeed, one can run a Turing machine and accept if the machine halts, hence the set is recursively enumerable. On the other hand, the problem is undecidable.
Some other recursively enumerable languages that are not recursive include:
Entscheidungsproblem (decision problem)
Comments