# What is a recursive and recursively enumerable language?

Let us understand the concept of recursive language before learning about the recursively enumerable language in the theory of computation (TOC).

Recursive Language

A language L is recursive (decidable) if L is the set of strings accepted by some Turing Machine (TM) that halts on every input.

Example

When a Turing machine reaches a final state, it halts. We can also say that a Turing machine M halts when M reaches a state q and a current symbol ‘a’ to be scanned so that δ(q, a) is undefined.

There are TMs that never halt on some inputs in any one of these ways, So we make a distinction between the languages accepted by a TM that halts on all input strings and a TM that never halts on some input strings.

Recursive Enumerable Language

A language L is recursively enumerable if L is the set of strings accepted by some TM.

If L is a recursive enumerable language then −

If w ∈ L then a TM halts in a final state,

If w ∉ L then a TM halts in a non-final state or loops forever.

If L is a recursive language then −

If w ∈ L then a TM halts in a final state,

If w ∉ L then TM halts in a non-final state.

Recursive Languages are also recursive enumerable

Proof − If L is a recursive then there is TM which decides a member in language then −

• M accepts x if x is in language L.

• M rejects on x if x is not in language L.

According to the definition, M can recognize the strings in language that are accepted on those strings.