2. Union
Context-free languages
are closed under: Union
L1 is context free
L1 L2
L2 is context free is context-free
3. Example
Language Grammar
n n
L1 {a b } S1 aS1b |
R
L2 {ww } S2 aS2a | bS2b |
Union
n n R S S1 | S2
L {a b } {ww }
4. In general:
For context-free languages L1, L2
with context-free grammars G1, G2
and start variables S1, S2
It is assumed that variable sets of G1 and G2 are
disjoint
The grammar of the union L1 L2
has new start variable S
and additional production S S1 | S2
5. Concatenation
Context-free languages
are closed under: Concatenation
L1 is context free
L1L2
L2 is context free is context-free
6. Example
Language Grammar
n n
L1 {a b } S1 aS1b |
R
L2 {ww } S2 aS2a | bS2b |
Concatenation
n n R S S1S2
L {a b }{ww }
7. In general:
For context-free languages L1, L2
with context-free grammars G1, G2
and start variables S1, S2
The grammar of the concatenation L1L2
has new start variable S
and additional production S S1S2
8. Star Operation
Context-free languages
are closed under: Star-operation
L is context free *
L is context-free
9. Example
Language Grammar
n n
L {a b } S aSb |
Star Operation
n n
L {a b } * S1 SS1 |
10. In general:
For context-free language L
with context-free grammar G
and start variable
S
The grammar of the star operation L *
has new start variable S1
and additional production S1 SS1 |
12. Intersection
Context-free languages
are not closed under: intersection
L1 is context free
L1 L2
L2 is context free not necessarily
context-free
13. Example
n n m n m m
L1 {a b c } L2 {a b c }
Context-free: Context-free:
S AC S AB
A aAb | A aA |
C cC | B bBc |
Intersection
n n n
L1 L2 {a b c } NOT context-free
14. Complement
Context-free languages
are not closed under: complement
L is context free L not necessarily
context-free
15. Example
n n m n m m
L1 {a b c } L2 {a b c }
Context-free: Context-free:
S AC S AB
A aAb | A aA |
C cC | B bBc |
Complement
n n n
L1 L2 L1 L2 {a b c }
NOT context-free
17. The intersection of
a context-free language and
a regular language
is a context-free language
L1 context free
L1 L2
L2 regular context-free
18. Machine M1 Machine M2
NPDA for L1 DFA for L2
context-free regular
Construct a new NPDA machine M
that accepts L1 L2
M simulates in parallel M1 and M 2
19. NPDA M1 DFA M2
a, b c a
q1 q2 p1 p2
transition transition
NPDA M
q1, p1 a, b c
q2 , p2
transition
20. NPDA M1 DFA M2
q0 p0
initial state initial state
NPDA M
q0 , p0
Initial state
21. Therefore: L ( M1 ) L( M 2 ) is context-free
(since M is NPDA)
L1 L2 is context-free
30. S
A B
a B b S b
b A B
B aBbbb
a B b b
S abbaBbbb
31. S
A B
a B b S b
b A B
B aBbbb
a B b b
S b
A B
a B b b
S abbaBbbb abbaaBbbbbbb
32. S
A B
a B b S b
b A B
a B b b
S b
A B
a B b b B b
b
S abbaaBbbbbbb abbaabbbbbbb
33. S abbaabbbbbbb
Therefore, the string
abbaabbbbbbb
is also generated by the grammar
34. We know: B b
B aBbbb
S abbaBbbb
We also know this string is generated:
S abbaBbbb
abbaabbbb
35. We know: B b
B aBbbb
S abbaBbbb
Therefore, this string is also generated:
S abbaBbbb
abbaaBbbbbbb
abbaabbbbbbb
36. We know: B b
B aBbbb
S abbaBbbb
Therefore, this string is also generated:
S abbaBbbb
abba(a ) B(bbb)bbb
2 2
abba(a ) B(bbb) bbb
2 2
abba(a ) b(bbb) bbb
37. We know: B b
B aBbbb
S abbaBbbb
Therefore, this string is also generated:
S abbaBbbb
i i
abba(a ) B(bbb) bbb
i i
abba(a ) b(bbb) bbb
38. Therefore, knowing that
abbabbbb
is generated by grammar G,
we also know that
i i
abba(a) b(bbb) bbb
is generated by G
39. In general:
We are given an infinite
context-free grammar G
Assume G has no unit-productions
no -productions
40. Take a string w L (G )
with length bigger than
m > (Number of productions) x
(Largest right side of a production)
Consequence:
Some variable must be repeated
in the derivation of w
41. u , v, x, y, z : strings of terminals
String w uvxyz S
u z
Last repeated variable A
v y
repeated A
x
43. We know:
S uAz A vAy A x
This string is also generated:
*
S uAz uxz
0 0
uv xy z
44. We know:
S uAz A vAy A x
This string is also generated:
* *
S uAz uvAyz uvxyz
1 1
The original w uv xy z
45. We know:
S uAz A vAy A x
This string is also generated:
* * *
S uAz uvAyz uvvAyyz uvvxyyz
2 2
uv xy z
46. We know:
S uAz A vAy A x
This string is also generated:
* *
S uAz uvAyz uvvAyyz
* *
uvvvAyyyz uvvvxyyyz
3 3
uv xy z
47. We know:
S uAz A vAy A x
This string is also generated:
S * uAz * uvAyz * uvvAyyz *
* uvvvAyyyz *
* uvvvvAy yyyz *
* uvvvvxy yyyz
i i
uv xy z
50. S
u z
A
v y
A
x
Observation: | vxy | m
Since A is the last repeated variable
51. S
u z
A
v y
A
x
Observation: | vy | 1
Since there are no unit or productions
52. The Pumping Lemma:
For infinite context-free language L
there exists an integer m such that
for any string w L, | w| m
we can write w uvxyz
with lengths | vxy | m and | vy | 1
and it must be:
i i
uv xy z L, for all i 0
55. Theorem: The language
n n n
L {a b c : n 0}
is not context free
Proof: Use the Pumping Lemma
for context-free languages
56. n n n
L {a b c : n 0}
Assume for contradiction that L
is context-free
Since L is context-free and infinite
we can apply the pumping lemma
57. n n n
L {a b c : n 0}
Pumping Lemma gives a magic number m
such that:
Pick any string w L with length | w | m
m m m
We pick: w a b c
58. n n n
L {a b c : n 0}
m m m
w a b c
We can write: w uvxyz
with lengths | vxy | m and | vy | 1
59. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Pumping Lemma says:
i i
uv xy z L for all i 0
60. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
We examine all the possible locations
of string vxy in w
61. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
m
Case 1: vxy is within a
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
62. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 1: v and y consist from only a
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
63. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 1: Repeating v and y
k 1
m k m m
aaaaaa...aaaaaa bbb...bbb ccc...ccc
u 2 2 z
v xy
64. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 1: From Pumping Lemma: uv xy z L
k 1
m k m m
aaaaaa...aaaaaa bbb...bbb ccc...ccc
u 2 2 z
v xy
65. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 1: From Pumping Lemma: uv xy z L
k 1
2 2 m k m m
However: uv xy z a b c L
Contradiction!!!
66. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
m
Case 2: vxy is within b
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
67. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 2: Similar analysis with case 1
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
68. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
m
Case 3: vxy is within c
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
69. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 3: Similar analysis with case 1
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
70. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
m m
Case 4: vxy overlaps a and b
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
71. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 1: v contains only a
y contains only b
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
72. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 1: v contains only a
k1 k2 1 y contains only b
m k1 m k2 m
aaa...aaaaaaa bbbbbbb...bbb ccc...ccc
u 2 2 z
v xy
73. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k2 1
m k1 m k2 m
aaa...aaaaaaa bbbbbbb...bbb ccc...ccc
u 2 2 z
v xy
74. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k2 1
2 2 m k1 m k2 m
However: uv xy z a b c L
Contradiction!!!
75. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 2: v contains a and b
y contains only b
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
76. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 2: v contains a and b
k1 k2 k 1 y contains only b
m k1 k 2 m k m
aaa...aaaaabbaabb bbbbbbb...bbb ccc...ccc
u 2
v xy 2 z
77. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k2 k 1
m k1 k 2 m k m
aaa...aaaaabbaabb bbbbbbb...bbb ccc...ccc
u 2
v xy 2 z
78. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
However: k1 k2 k 1
2 2 m k1 k2 m k m
uv xy z a b a b c L
Contradiction!!!
79. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 3: v contains only a
y contains a and b
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
80. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 3: v contains only a
y contains a and b
Similar analysis with Possibility 2
81. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
m m
Case 5: vxy overlaps b and c
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
82. n n n
L {a b c : n 0}
m m m
w a b c
w uvxyz | vxy | m | vy | 1
Case 5: Similar analysis with case 4
m m m
aaa...aaa bbb...bbb ccc...ccc
u vxy z
83. There are no other cases to consider
(since | vxy | m , string vxy cannot
m m m
overlap a , b and c at the same time)
84. In all cases we obtained a contradiction
Therefore: The original assumption that
n n n
L {a b c : n 0}
is context-free must be wrong
Conclusion: L is not context-free