# CS 3240: Languages and Computation Properties of Context-Free Languages.

## Presentation on theme: "CS 3240: Languages and Computation Properties of Context-Free Languages."— Presentation transcript:

CS 3240: Languages and Computation Properties of Context-Free Languages

Properties of CFGs

Chomsky Normal Form

In Summary

Conversion to Chomsky Normal Form

Recall: Pumping Lemma for Regular Languages q1q1 qkqk qjqj For every regular language L, there is a finite pumping length p, such that for any string s  L and |s|  p, we can write s=xyz with: 1) x y i z  L for every i  {0,1,2,…} 2) |y|  1 3) |xy|  p

Pumping Lemma for CFL Theorem: For every context-free language L, there is a pumping length p, such that for any string s  L and |s|  p, we can write s=uvxyz with 1) u v i x y i z  L for every i  {0,1,2,…} 2) |vy|  1 3) |vxy|  p Note that 1) implies that uxz  L (take i=0), requirement 2) says that v,y cannot be the empty strings ε and condition 3) is useful in proving non-CFL.

Pumping a Parse Tree A A uvxyz If s = uvxyz  L is long, then its parse-tree is tall. Hence, there is a path on which a variable A repeats itself. We can pump this A–A part. S

uvxyz  L A A uvxyz By repeating the A–A part we get… S

uv 2 xy 2 z  L A u v x y z R A A v x y … while removing the A–A gives… S

uxz  L A uz In general: uv i xy i z  L for all i=0,1,2,… S x

Using Pumping Lemma “Proof by contradiction. Assume that L is context free. Let p be the pumping length of L and take s  L. By the pumping lemma it is possible to write s=uvxyz (with |vy|  1 and |vxy|  p) such that uv i xy i z  L for all i  0. However… Thus the pumping lemma does not hold for s. Contradiction. The language L is not context-free.” Show that pumping up or down s gives strings that are not in L. Be careful to consider all v,x,y possibilities. Here you have to be clever in picking the right s.

Example I: Pumping a n b n c n Proof by contradiction; assume L = {a n b n c n | n  0} is CF. According to the pumping lemma there is a pumping length p such that for s = a p b p c p  L, we can write s = uvxyz = a p b p c p, with uv i xy i z  L for all i  0. Two options for 1  |vxy|  p: 1) vxy = a*b*, then the string uv 2 xy 2 z has not enough letters c, hence uv 2 xy 2 z  L 2) vxy = b*c*, then the string uv 2 xy 2 z has not enough letters a, hence uv 2 xy 2 z  L Contradiction: the pumping lemma does not hold, hence L is not context free.

Example II: (Pumping down) Prove that C = {a i b j c k | 0  i  j  k } is not context-free. Let p be the pumping length, and s = a p b p c p  C. Pumping lemma: s = uvxyz, such that uv i xy i z  C for every i  0. Two options for 1  |vxy|  p: 1) vxy = a*b*, then the string uv 2 xy 2 z has not enough letters c, hence uv 2 xy 2 z  C 2) vxy = b*c*, then the string uv 0 xy 0 z = uxz has too many letters a, hence uv 0 xy 0 z  C Contradiction: The pumping lemma does not hold for this string a p b p c p, hence C is not context-free.

Example III: ww Prove that the language D = { ww : w  {0,1}* } is not CF. You must be careful when picking the strings s  D… Let p be the pumping length, take s=0 p 1 p 0 p 1 p. Options for s=uvxyz with 1  |vxy|  p: 1. If vxy is to the left of the middle of 0 p 1 p 0 p 1 p, then second half of uv 2 xy 2 z starts with a “1”. 2. If vxy is to the right of the middle of 0 p 1 p 0 p 1 p, then first half of hence uv 2 xy 2 z ends with a “0”. 3. If x is in the middle of 0 p 1 p 0 p 1 p, then pumped down uxz equals 0 p 1 i 0 j 1 p  D (because i or j < p)

Additional Notes on CFL Let A 1 and A 2 be two context-free languages, then the union A 1  A 2 is also context free. However, the intersection A 1  A 2 is not necessarily context free The complement Ā 1 =  *–A 1 are not necessarily context free either

Closure properties of CFLs

Closure under reversal

CFL not closed under intersection!

Decision Problems for CFL

Make a chain of everywhere a variable occurs From each production send a link to a counter counting how many variables in the prod have not yet been found to produce When a variable is found to be generating decrement Counter accordingly When counter reaches 0 the head variable is generating

Undecidable problems for CFL