Recursively Enumerable
and
Recursive Languages
Courtesy Costas Busch - RPI
1
Definition:
A language is recursively enumerable
if some Turing machine accepts it
Courtesy Costas Busch - RPI
2
Let
L be a recursively enumerable language
and
M the Turing Machine that accepts it
For string
w:
if
w L
then
M halts in a final state
if
w L
then
M halts in a non-final state
or loops forever
Courtesy Costas Busch - RPI
3
Definition:
A language is recursive
if some Turing machine accepts it
and halts on any input string
In other words:
A language is recursive if there is
a membership algorithm for it
Courtesy Costas Busch - RPI
4
Let
L be a recursive language
and
M the Turing Machine that accepts it
For string
w:
if
w L
then
M halts in a final state
if
w L
then
M halts in a non-final state
Courtesy Costas Busch - RPI
5
We will prove:
1. There is a specific language
which is not recursively enumerable
(not accepted by any Turing Machine)
2. There is a specific language
which is recursively enumerable
but not recursive
Courtesy Costas Busch - RPI
6
Non Recursively Enumerable
Recursively Enumerable
Recursive
Courtesy Costas Busch - RPI
7
A Language which
is not
Recursively Enumerable
Courtesy Costas Busch - RPI
8
We want to find a language that
is not Recursively Enumerable
This language is not accepted by any
Turing Machine
Courtesy Costas Busch - RPI
9
Consider alphabet
Strings:
{a}
a, aa, aaa, aaaa,
1
a a
2
a
3
Courtesy Costas Busch - RPI
a
4
10
Consider Turing Machines
that accept languages over alphabet
{a}
They are countable:
M1, M 2 , M 3 , M 4 ,
Courtesy Costas Busch - RPI
11
Example language accepted by M i
L( M i ) {aa, aaaa, aaaaaa}
L( M i ) {a , a , a }
2
4
6
Alternative representation
1
a
a
L( M i ) 0
1
2
a
3
0
4
a
1
0
a
Courtesy Costas Busch - RPI
5
a
6
1
a
7
0
12
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
Courtesy Costas Busch - RPI
a
4
13
Consider the language
L {a : a L( M i )}
i
i
L consists from the 1’s in the diagonal
Courtesy Costas Busch - RPI
14
1
2
3
4
a
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
a
a
L {a , a ,}
3
4
Courtesy Costas Busch - RPI
15
Consider the language
L
L {a : a L( M i )}
i
i
L {a : a L( M i )}
i
L
i
consists of the 0’s in the diagonal
Courtesy Costas Busch - RPI
16
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
L {a , a ,}
1
2
Courtesy Costas Busch - RPI
17
Theorem:
Language
L is not recursively enumerable
Courtesy Costas Busch - RPI
18
Proof:
Assume for contradiction that
L is recursively enumerable
There must exist some machine
that accepts L
Mk
L( M k ) L
Courtesy Costas Busch - RPI
19
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
Question: M k M1 ?
Courtesy Costas Busch - RPI
20
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
1
Answer:
M k M1
a L( M k )
1
a L ( M1 )
Courtesy Costas Busch - RPI
21
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
Question: M k M 2 ?
Courtesy Costas Busch - RPI
22
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
2
Answer:
Mk M2
a L( M k )
2
a L( M 2 )
Courtesy Costas Busch - RPI
23
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
Question: M k M 3 ?
Courtesy Costas Busch - RPI
24
1
a
a
2
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
3
a
4
3
Answer:
M k M3
a L( M k )
3
a L( M 3 )
Courtesy Costas Busch - RPI
25
Similarly:
Mk Mi
for any
i
Because either:
a L( M k )
i
a L( M i )
i
a L( M k )
i
or
Courtesy Costas Busch - RPI
a L( M i )
i
26
Therefore, the machine
M k cannot exist
Therefore, the language L
is not recursively enumerable
End of Proof
Courtesy Costas Busch - RPI
27
Observation:
There is no algorithm that describes
L
(otherwise L would be accepted by
some Turing Machine)
Courtesy Costas Busch - RPI
28
Non Recursively Enumerable
L
Recursively Enumerable
Recursive
Courtesy Costas Busch - RPI
29
A Language which is
Recursively Enumerable
and not Recursive
Courtesy Costas Busch - RPI
30
We want to find a language which
Is recursively
enumerable
There is a
Turing Machine
that accepts
the language
But not
recursive
The machine
doesn’t halt
on some input
Courtesy Costas Busch - RPI
31
We will prove that the language
L {a : a L( M i )}
i
i
Is recursively enumerable
but not recursive
Courtesy Costas Busch - RPI
32
1
2
3
4
a
a
L( M1)
0
1
0
1
L( M 2 )
1
0
0
1
L( M 3 )
0
1
1
1
L( M 4 )
0
0
0
1
a
a
L {a , a ,}
3
4
Courtesy Costas Busch - RPI
33
Theorem:
The language
L {a : a L( M i )}
i
i
is recursively enumerable
Courtesy Costas Busch - RPI
34
Proof:
We will give a Turing Machine that
accepts L
Courtesy Costas Busch - RPI
35
Turing Machine that accepts
For any input string
L
w
wa
• Find Turing machine M i
• Compute i , for which
i
(using an enumeration procedure
for Turing Machines)
• Simulate
• If
M i on input a
i
M i accepts, then accept w
End of Proof
Courtesy Costas Busch - RPI
36
Observation:
Recursively enumerable
i
i
L {a : a L( M i )}
Not recursively enumerable
i
i
L {a : a L( M i )}
(Thus, also not recursive)
Courtesy Costas Busch - RPI
37
Theorem:
The language
L {a : a L( M i )}
i
i
is not recursive
Courtesy Costas Busch - RPI
38
Proof:
Assume for contradiction that
Then
L is recursive
L is recursive:
Take the Turing Machine
M that accepts L
M halts on any input:
If
If
M accepts then reject
M rejects then accept
Courtesy Costas Busch - RPI
39
Therefore:
L is recursive
But we know:
L is not recursively enumerable
thus, not recursive
CONTRADICTION!!!!
Courtesy Costas Busch - RPI
40
Therefore,
L
is not recursive
End of Proof
Courtesy Costas Busch - RPI
41
Non Recursively Enumerable
L
Recursively Enumerable
L
Recursive
Courtesy Costas Busch - RPI
42
Turing acceptable languages
and
Enumeration Procedures
Courtesy Costas Busch - RPI
43
We will prove:
(weak result)
• If a language is recursive then
there is an enumeration procedure for it
(strong result)
• A language is recursively enumerable
if and only if
there is an enumeration procedure for it
Courtesy Costas Busch - RPI
44
Theorem:
if a language L is recursive then
there is an enumeration procedure for it
Courtesy Costas Busch - RPI
45
Proof:
Enumeration Machine
~
M
M
Enumerates all
strings of input alphabet
Courtesy Costas Busch - RPI
Accepts
L
46
If the alphabet is {a, b} then
~
M can enumerate strings as follows:
a
b
aa
ab
ba
bb
aaa
aab
......
Courtesy Costas Busch - RPI
47
Enumeration procedure
Repeat:
~
M
generates a string
w
M checks if w L
YES: print
NO:
ignore
w to output
w
End of Proof
Courtesy Costas Busch - RPI
48
Example:
~
M
a
b
aa
ab
ba
bb
aaa
aab
......
L {b, ab, bb, aaa,....}
L(M )
Enumeration
Output
b
b
ab
ab
bb
aaa
bb
aaa
......
......
Courtesy Costas Busch - RPI
49
Theorem:
if language L is recursively enumerable then
there is an enumeration procedure for it
Courtesy Costas Busch - RPI
50
Proof:
Enumeration Machine
~
M
M
Enumerates all
strings of input alphabet
Courtesy Costas Busch - RPI
Accepts L
51
If the alphabet is {a, b} then
~
M can enumerate strings as follows:
a
b
aa
ab
ba
bb
aaa
aab
Courtesy Costas Busch - RPI
52
NAIVE APPROACH
Enumeration procedure
Repeat:
~
M
generates a string
w
M checks if w L
YES: print
w to output
NO: ignore w
Problem: If w L
machine M
may loop forever
Courtesy Costas Busch - RPI
53
BETTER APPROACH
~
M
Generates first string
w1
M executes first step on w1
~
M
Generates second string
w2
M executes first step on w2
second step on
Courtesy Costas Busch - RPI
w1
54
~
M
Generates third string
w3
M executes first step on w3
second step on
w2
third step on
w1
And so on............
Courtesy Costas Busch - RPI
55
Step
in
string
w1
w2
w3
w4
1
1
1
1
2
2
2
2
3
3
3
3
Courtesy Costas Busch - RPI
56
If for any string wi
machine M halts in a final state
then it prints wi on the output
End of Proof
Courtesy Costas Busch - RPI
57
Theorem:
If for language L
there is an enumeration procedure
then L is recursively enumerable
Courtesy Costas Busch - RPI
58
Proof:
Input Tape
w
Machine that
accepts L
Enumerator
for L
Compare
Courtesy Costas Busch - RPI
59
Turing machine that accepts
For input string
L
w
Repeat:
• Using the enumerator,
generate the next string of
L
• Compare generated string with
w
If same, accept and exit loop
End of Proof
Courtesy Costas Busch - RPI
60
We have proven:
A language is recursively enumerable
if and only if
there is an enumeration procedure for it
Courtesy Costas Busch - RPI
61
© Copyright 2026 Paperzz