Properties
of
Context-Free
languages
Union
Context-free languages
are closed under: Union
L1 is context free
L1 L2
L2 is context free is context-free
Example
Language Grammar
n n
L1 {a b } S1 aS1b |
R
L2 {ww } S2 aS2 a | bS2b |
Union
n n R S S1 | S 2
L {a b } {ww }
In general:
For context-free languages L1, L2
with context-free grammars G1, G2
and start variables S1, S 2
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 | S 2
Concatenation
Context-free languages
are closed under: Concatenation
L1 is context free
L1L2
L2 is context free is context-free
Example
Language Grammar
n n
L1 {a b } S1 aS1b |
R
L2 {ww } S2 aS2 a | bS2b |
Concatenation
n n R S S1S 2
L {a b }{ww }
In general:
For context-free languages L1, L2
with context-free grammars G1, G2
and start variables S1, S 2
The grammar of the concatenation L1L2
has new start variable S
and additional production S S1S 2
Star Operation
Context-free languages
are closed under: Star-operation
L is context free *
L is context-free
Example
Language Grammar
n n
L {a b } S aSb |
Star Operation
n n
L {a b } * S1 SS1 |
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 |
Negative Properties
of
Context-Free
Languages
Intersection
Context-free languages
are not closed under: intersection
L1 is context free
L1 L2
L2 is context free not necessarily
context-free
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
Complement
Context-free languages
are not closed under: complement
L is context free L not necessarily
context-free
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
Context-free
languages
and
Regular Languages
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
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
NPDA M1 DFA M2
a, b c a
q1 q2 p1 p2
transition transition
NPDA M
q1, p1 a , b c
q2 , p2
transition
NPDA M1 DFA M2
q0 p0
initial state initial state
NPDA M
q0 , p0
Initial state
Therefore: L( M1) L( M 2 ) is context-free
(since M is NPDA)
L1 L2 is context-free
The Pumping Lemma
for
Context-Free
Languages
Take an infinite context-free language
Generates an infinite number
of different strings
Example: S AB
A aBb
B Sb
Bb
S AB
A aBb
B Sb
Bb
A derivation: Variables are repeated
S AB aBbB abbB
abbSb abbABb abbaBbBb
abbabbBb abbabbbb
Derivation tree string abbabbbb
S
A B
a B b S b
b A B
a B b b
b
Derivation tree string abbabbbb
S
A B
a B b S b
b A B
a B b b
repeated b
B Sb ABb B
aBbBb aBbbb S b
A B
a B b b
b
Bb
Repeated Part B
S b
A B
a B b b
B aBbbb
Another possible derivation B
S b
A B
B aBbbb a B b b
S b
A B
a B b b
B aBbbb aaBbbbbbb
S
A B
a B b S b
b A B
B aBbbb
a B b b
S abbaBbbb
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
S
A B
a B b S b
b A B
a B b b
S b
A B
a B b b Bb
b
S abbaaBbbbbbb abbaabbbbbbb
S abbaabbbbbbb
Therefore, the string
abbaabbbbbbb
is also generated by the grammar
We know: Bb
B aBbbb
S abbaBbbb
We also know this string is generated:
S abbaBbbb
abbaabbbb
We know: Bb
B aBbbb
S abbaBbbb
Therefore, this string is also generated:
S abbaBbbb
abbaaBbbbbbb
abbaabbbbbbb
We know: Bb
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
We know: Bb
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
Therefore, knowing that
abbabbbb
is generated by grammar G,
we also know that
i i
abba(a ) b(bbb) bbb
is generated by G
In general:
We are given an infinite
context-free grammar G
Assume G has no unit-productions
no -productions
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
u , v, x, y, z : strings of terminals
S
String w uvxyz
u z
Last repeated variable A
v y
repeated A
x
S
Possible
derivations: u z
A
S uAz
v y
A vAy A
A x
x
We know:
S uAz A vAy A x
This string is also generated:
*
S uAz uxz
0 0
uv xy z
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
We know:
S uAz A vAy A x
This string is also generated:
* * *
S uAz uvAyz uvvAyyz uvvxyyz
2 2
uv xy z
We know:
S uAz A vAy A x
This string is also generated:
* *
S uAz uvAyz uvvAyyz
* *
uvvvAyyyz uvvvxyyyz
3 3
uv xy z
We know:
S uAz A vAy A x
This string is also generated:
* uAz
S * uvAyz
* uvvAyyz *
* uvvvAyyyz
*
* uvvvvAy yyyz *
* uvvvvxy yyyz
i i
uv xy z
Therefore, any string of the form
i i
uv xy z i0
is generated by the grammar G
Therefore,
knowing that uvxyz L(G )
i i
we also know that uv xy z L(G )
S
u z
A
v y
A
x
Observation: | vxy | m
Since A is the last repeated variable
S
u z
A
v y
A
x
Observation: | vy | 1
Since there are no unit or productions
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
Applications
of
The Pumping
Lemma
Non-context free languages
n n n
{a b c : n 0}
Context-free languages
n n
{a b : n 0}
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
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
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: wa b c
n n n
L {a b c : n 0}
m m m
wa b c
We can write: w uvxyz
with lengths | vxy | m and | vy | 1
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
Pumping Lemma says:
i i
uv xy z L for all i0
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
We examine all the possible locations
of string vxy in w
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
Case 1: Repeating v and y
k 1
mk m m
aaaaaa...aaaaaa bbb...bbb ccc...ccc
u 2 2 z
v xy
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
2 2
Case 1: From Pumping Lemma: uv xy z L
k 1
mk m m
aaaaaa...aaaaaa bbb...bbb ccc...ccc
u 2 2 z
v xy
n n n
L {a b c : n 0}
m m m
wa 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!!!
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 1: v contains only a
k1 k 2 1 y contains only b
m k1 m k2 m
aaa...aaaaaaa bbbbbbb...bbb ccc...ccc
u 2 2 z
v xy
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k 2 1
m k1 m k2 m
aaa...aaaaaaa bbbbbbb...bbb ccc...ccc
u 2 2 z
v xy
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k 2 1
2 2 m k1 m k2 m
However: uv xy z a b c L
Contradiction!!!
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
Case 4: Possibility 2: v contains a and b
k1 k 2 k 1 y contains only b
m k1 k 2 mk m
aaa...aaaaabbaabb bbbbbbb...bbb ccc...ccc
u 2
v xy 2 z
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
k1 k 2 k 1
m k1 k 2 mk m
aaa...aaaaabbaabb bbbbbbb...bbb ccc...ccc
u 2
v xy 2 z
n n n
L {a b c : n 0}
m m m
wa b c
w uvxyz | vxy | m | vy | 1
2 2
Case 4: From Pumping Lemma: uv xy z L
However: k1 k 2 k 1
2 2 m k1 k 2 m k m
uv xy z a b a b c L
Contradiction!!!
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
n n n
L {a b c : n 0}
m m m
wa 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
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)
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