0% found this document useful (0 votes)
175 views84 pages

Properties of CFG

Context-free languages are closed under union, concatenation, and Kleene star operations but not intersection or complement. The pumping lemma states that for any string w in a context-free language generated by a grammar G that is longer than a certain length based on G, w can be broken down into sections u, v, x, y, z such that uvxyz = w and for any i ≥ 0, uviyiz is also in the language. This allows strings of all possible lengths to be generated by pumping the repeated section v or y.

Uploaded by

Neeraj Yadav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
175 views84 pages

Properties of CFG

Context-free languages are closed under union, concatenation, and Kleene star operations but not intersection or complement. The pumping lemma states that for any string w in a context-free language generated by a grammar G that is longer than a certain length based on G, w can be broken down into sections u, v, x, y, z such that uvxyz = w and for any i ≥ 0, uviyiz is also in the language. This allows strings of all possible lengths to be generated by pumping the repeated section v or y.

Uploaded by

Neeraj Yadav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 84

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
Bb
S  AB
A  aBb
B  Sb
Bb

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
Bb
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 Bb
b

S    abbaaBbbbbbb  abbaabbbbbbb
S    abbaabbbbbbb

Therefore, the string

abbaabbbbbbb

is also generated by the grammar


We know: Bb
B    aBbbb
S    abbaBbbb
We also know this string is generated:

S    abbaBbbb 
 abbaabbbb
We know: Bb
B    aBbbb
S    abbaBbbb
Therefore, this string is also generated:

S    abbaBbbb 
 abbaaBbbbbbb 
 abbaabbbbbbb
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
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
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 
* 
* uvvvvAy  yyyz *

* uvvvvxy  yyyz

i i
uv xy z
Therefore, any string of the form

i i
uv xy z i0

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: wa b c
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


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
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
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
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
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
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
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!!!
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
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
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
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
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
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
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  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
wa 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
wa 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
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
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  k 2  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
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  k 2  k  1
m k1 k 2 mk 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
wa 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
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
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


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
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
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

You might also like