Recursively Enumerable and Recursive Languages
Recursively Enumerable and Recursive Languages
and
Recursive Languages
1
Definition:
A language is recursively enumerable
if some Turing machine accepts it
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
In other words:
A language is recursive if there is
a membership algorithm for it
4
Let L be a recursive language
and M the Turing Machine that accepts it
For string w:
5
We will prove:
6
Non Recursively Enumerable
Recursively Enumerable
Recursive
7
A Language which
is not
Recursively Enumerable
8
We want to find a language that
is not Recursively Enumerable
9
Consider alphabet {a}
10
Consider Turing Machines
that accept languages over alphabet {a}
M1, M 2 , M 3 , M 4 ,
11
Example language accepted by M i
Alternative representation
1 2 3 4 5 6 7
a a a a a a a
L( M i ) 0 1 0 1 0 1 0
12
1 2 3 4
a a 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
13
Consider the language
i i
L {a : a L( M i )}
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 4
L {a , a ,}
15
Consider the language L
i i
L {a : a L( M i )}
i i
L {a : a L( M i )}
16
1 2 3 4
a a 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
1 2
L {a , a ,}
17
Theorem:
Language L is not recursively enumerable
18
Proof:
L( M k ) L
19
1 2 3 4
a a 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
Question: M k M1 ?
20
1 2 3 4
a a 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
1
a L( M k )
Answer: M k M1
1
a L ( M1 ) 21
1 2 3 4
a a 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
Question: M k M 2 ?
22
1 2 3 4
a a 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
2
a L( M k )
Answer: Mk M2
2
a L( M 2 ) 23
1 2 3 4
a a 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
Question: M k M 3 ?
24
1 2 3 4
a a 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
3
a L( M k )
Answer: M k M3
3
a L( M 3 ) 25
Similarly: Mk Mi for any i
Because either:
i i
a L( M k ) a L( M k )
or
i i
a L( M i ) a L( M i )
26
Therefore, the machine M k cannot exist
End of Proof
27
Observation:
28
Non Recursively Enumerable
L
Recursively Enumerable
Recursive
29
A Language which is
Recursively Enumerable
and not Recursive
30
We want to find a language which
i i
L {a : a L( M i )}
Is recursively enumerable
but not recursive
32
1 2 3 4
a a 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
3 4
L {a , a ,}
33
Theorem:
i i
The language L {a : a L( M i )}
is recursively enumerable
34
Proof:
35
Turing Machine that accepts L
For any input string w
i
• Compute i , for whichwa
• Find Turing machine M i
(using an enumeration procedure
for Turing Machines)
i
• Simulate M i on input a
• If M i accepts, then accept w
End of Proof
36
Observation:
Recursively enumerable
i i
L {a : a L( M i )}
37
Theorem:
i i
The language L {a : a L( M i )}
is not recursive
38
Proof:
Assume for contradiction that L is recursive
Then L is recursive:
Take the Turing Machine M that accepts L
M halts on any input:
If M accepts then reject
If M rejects then accept
39
Therefore:
L is recursive
But we know:
CONTRADICTION!!!!
40
Therefore, L is not recursive
End of Proof
41
Non Recursively Enumerable
L
Recursively Enumerable
L
Recursive
42
Turing acceptable languages
and
Enumeration Procedures
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
44
Theorem:
if a language L is recursive then
there is an enumeration procedure for it
45
Proof:
Enumeration Machine
~ M
M
Enumerates all
Accepts L
strings of input alphabet
46
If the alphabet is {a, b} then
~
M can enumerate strings as follows:
a
b
aa
ab
ba
bb
aaa
aab
......
47
Enumeration procedure
Repeat:
~ generates a string w
M
M checks if w L
YES: print w to output
NO: ignore w
End of Proof
48
Example: L {b, ab, bb, aaa,....}
~ Enumeration
M L(M ) Output
a
b b b
aa
ab ab ab
ba
bb bb bb
aaa aaa aaa
aab
...... ...... ......
49
Theorem:
50
Proof:
Enumeration Machine
~ M
M
Enumerates all
Accepts L
strings of input alphabet
51
If the alphabet is {a, b} then
~
M can enumerate strings as follows:
a
b
aa
ab
ba
bb
aaa
aab
52
NAIVE APPROACH
Enumeration procedure
Repeat:
~ generates a string w
M
M checks if w L
w to output
YES: print
NO: ignore w
Problem: If w L
machine M may loop forever
53
BETTER APPROACH
~ Generates first string w
M 1
And so on............
55
w1 w2 w3 w4
1 1 1 1
Step
in 2 2 2 2
string
3 3 3 3
56
If for any string wi
machine M halts in a final state
then it prints wi on the output
End of Proof
57
Theorem:
If for language L
there is an enumeration procedure
then L is recursively enumerable
58
Proof:
Input Tape
w
Machine that
accepts L
Enumerator
Compare
for L
59
Turing machine that accepts L
For input string 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
60
We have proven:
61