You are on page 1of 58

More Applications

of
The Pumping Lemma
Linz 6th, Section 8.1
Example 8.2, { w w | w∈Σ*}
Example 8.3, { an! | 0 ≤ n}
Example 8.4, {an*n bn| 0 ≤ n} 1
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 2
Linz 6th, section 8.1, example 8.2, page 217
{ w w | w∈Σ*}

w = a m bm am bm

3
Non-context free languages

n n n {ww : w  {a, b}}


{a b c : n  0}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

4
Theorem: The language
L = {ww : w  {a, b}*}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

5
L = {ww : w  {a, b}*}

Assume for contradiction that L


is context-free

Since L is context-free and infinite


we can apply the pumping lemma

6
L = {ww : w  {a, b}*}

Pumping Lemma gives a magic number m


such that:

Pick any string of L with length at least m

m m m m
we pick: a b a b L

7
L = {ww : w  {a, b}*}

m m m m
We can write: a b a b = uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
8
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz

We examine all the possible locations


m m m m
of string vxy in a b a b

9
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 1: vxy is within the first a
k1 k2
v=a y=a k1 + k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u vx y z
10
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 1: vxy is within the first a
k1 k2
v=a y=a k1 + k 2  1

m + k1 + k 2 m m m
a .......... ...... a b ...... b a ...... a b ...... b
u v2 x y 2 z
11
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 1: vxy is within the first a

m + k1 + k2 m m m 2 2
a b a b = uv xy z  L

k1 + k 2  1

12
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 1: vxy is within the first a

m + k1 + k2 m m m 2 2
a b a b = uv xy z  L

2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!! 13
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 2: v is in the first a
m
y is in the first b
k1 k2
v=a y=b k1 + k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u v x y z 14
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 2: v is in the first a
m
y is in the first b
k1 k2
v=a y=b k1 + k 2  1

m + k1 m + k2 m m
a .......... .. a b .......... .. b a ...... a b ...... b
u v 2 x
y 2 z 15
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 2: v is in the first a
m
y is in the first b
m + k1 m + k2 m m 2 2
a b a b = uv xy z  L

k1 + k 2  1

16
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 2: v is in the first a
m
y is in the first b
m + k1 m + k2 m m 2 2
a b a b = uv xy z  L
2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!! 17
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
k1 k2 k3
v=a b y=b k1 , k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u v xy z 18
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
k1 k2 k3
v=a b y=b k1 , k 2  1

m k2 k1 m + k3 m m
a ...... a b ... b a ... a b ......... b a ...... a b ...... b
u v 2 x y 2 z 19
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
m k2 k1 m + k3 m m 2 2
a b a b a b = uv xy z  L

k1 , k 2  1

20
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
m k 2 k1 k3 m m 2 2
a b a b a b = uv xy z  L
2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!! 21
L = {ww : w  {a, b}*}
m m m m | vxy | m | vy | 1
a b a b = uvxyz
m
Case 4: v in the first a
m m
y Overlaps the first a b

Analysis is similar to case 3

m m m m
a ...... a b ...... b a ...... a b ...... b
uv x y z 22
Other cases: m m m m
vxy is within a b a b
or
m m m m
a b a b
or
m m m m
a b a b

Analysis is similar to case 1:


m m m m
a b a b 23
More cases: m m m m
vxy overlaps a b a b
or
m m m m
a b a b

Analysis is similar to cases 2,3,4:

m m m m
a b a b
24
There are no other cases to consider

Since | vxy | m, it is impossible


vxy to overlap: m m m m
a b a b
nor
m m m m
a b a b
nor
m m m m
a b a b
25
In all cases we obtained a contradiction

Therefore: The original assumption that

L = {ww : w  {a, b}*}


is context-free must be wrong

Conclusion: L is not context-free


26
Linz 6th, section 8.1, example 8.3, page 217
{ an! | 0 ≤ n}

27
Non-context free languages
n n n {ww : w  {a, b}}
{a b c : n  0}
n!
{a : n  0}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

28
Theorem: The language
n!
L = {a : n  0}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

29
n!
L = {a : n  0}

Assume for contradiction that L


is context-free

Since L is context-free and infinite


we can apply the pumping lemma

30
n!
L = {a : n  0}
Pumping Lemma gives a magic number m
such that:

Pick any string of L with length at least m

m!
we pick: a L

31
n!
L = {a : n  0}

m!
We can write: a = uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
32
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

We examine all the possible locations


m!
of string vxy in a

There is only one case to consider


33
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

m!
a .......... ..... a
u v x y z

k1 k2 1  k1 + k 2  m
v=a y=a
34
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

m!+ k1 + k 2
a .......... .......... ....... a
u v2 x y 2 z

k1 k2 1  k1 + k 2  m
v=a y=a
35
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

m!+ k k = k1 + k 2
a .......... .......... ....... a
u v2 x y 2 z

k1 k2 1 k  m
v=a y=a
36
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

m!+ k 2 2
a = uv xy z

1 k  m

37
Since 1  k  m , for m  2 we have:
m!+ k  m!+ m
 m!+ m!m
= m!(1 + m)
= ( m + 1)!

m! m!+ k  (m + 1)!


38
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

m! m!+ k  (m + 1)!

m!+ k 2 2
a = uv xy z  L

39
n!
L = {a : n  0}
m! | vxy | m | vy | 1
a = uvxyz

2 2
However, from Pumping Lemma: uv xy z  L

m!+ k 2 2
a = uv xy z  L
Contradiction!!! 40
We obtained a contradiction

Therefore: The original assumption that


n!
L = {a : n  0}
is context-free must be wrong

Conclusion: L is not context-free


41
Linz 6th, section 8.1, example 8.4, page 218
{an*n bn| 0 ≤ n}

42
Non-context free languages
n n n {ww : w  {a, b}}
{a b c : n  0}
n2 n n!
{a : n  0}
{a b : n  0}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

43
Theorem: The language
n2 n
L = {a b : n  0}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

44
2
n n
L = {a b : n  0}
Assume for contradiction that L
is context-free

Since L is context-free and infinite


we can apply the pumping lemma

45
2
n n
L = {a b : n  0}
Pumping Lemma gives a magic number m
such that:

Pick any string of L with length at least m

we pick: m2 m
a b L

46
2
n n
L = {a b : n  0}
2
m m
We can write: a b = uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
47
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

We examine all the possible locations

vxy m2 m
of string in a b

48
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1
m
Most complicated case: v is in a
m
y is in b

2 m
m
a .......... .......... . a b ...... b
u v x y z
49
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

k1 k2
v=a y=b 1  k1 + k 2  m
2 m
m
a .......... .......... . a b ...... b
u v x y z
50
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
v=a y=b 1  k1 + k 2  m
2 m
m
a .......... .......... . a b ...... b
u v x y z
51
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
v=a y=b 1  k1 + k 2  m
2
m − k1 m − k 2
a .......... ..... a b ... b
u 0 x 0z
v y 52
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
v=a y=b 1  k1 + k 2  m

m 2 − k1 m − k 2 0 0
a b = uv xy z

53
k1  0 and k 2  0 1  k1 + k 2  m

2 2
( m − k 2 )  ( m − 1)
2
= m − 2m + 1
2
 m − k1

2 2
m − k1  (m − k2 )
54
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

2 2
m − k1  (m − k2 )

2
m − k1 m − k 2 0 0
a b = uv xy z  L

55
2
n n
L = {a b : n  0}
2
m m
a b = uvxyz | vxy | m | vy | 1

0 0
However, from Pumping Lemma: uv xy z  L

2
m − k1 m − k 2 0 0
a b = uv xy z  L

Contradiction!!!
56
When we examine the rest of the cases
we also obtain a contradiction

57
In all cases we obtained a contradiction

Therefore: The original assumption that


n2 n
L = {a b : n  0}
is context-free must be wrong

Conclusion: L is not context-free


58

You might also like