Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Background Information for the Pumping Lemma for Context-Free Languages Definition: Let G = (V, T, P, S) be a CFL. If every production in P is of the.

Similar presentations


Presentation on theme: "1 Background Information for the Pumping Lemma for Context-Free Languages Definition: Let G = (V, T, P, S) be a CFL. If every production in P is of the."— Presentation transcript:

1 1 Background Information for the Pumping Lemma for Context-Free Languages Definition: Let G = (V, T, P, S) be a CFL. If every production in P is of the form A – > BC orA – > a where A, B and C are all in V and a is in T, then G is in Chomsky Normal Form (CNF). Example: (not quite!) S – > AB | BA | aSb A – > a B – > b Theorem: Let L be a CFL. Then L – {ε} is a CFL. Theorem: Let L be a CFL not containing {ε}. Then there exists a CNF grammar G such that L = L(G).

2 2 CNF: A – > BC A – > a Definition: Let T be a tree. Then the height of T, denoted h(T), is defined as follows: –If T consists of a single vertex then h(T) = 0 –If T consists of a root r and subtrees T 1, T 2, … T k, then h(T) = max i {h(T i )} + 1 Lemma: Let G be a CFG in CNF. In addition, let w be a string of terminals where A=>*w and w has a derivation tree T. If T has height h(T)  1, then |w|  2 h(T)-1. Proof: By induction on h(T) (exercise: T is a binary tree). Corollary: Let G be a CFG in CNF, and let w be a string in L(G). If |w|  2 k, where k  0, then any derivation tree for w using G has height at least k+1. Proof: Follows from the lemma.

3 3 Lemma: Let G be a CFG in CNF. In addition, let w be a string of terminals where A=>*w and w has a derivation tree T. If T has height h(T)  1, then |w|  2 h(T)-1. a aa a a a h(T)=5 |w| = 6 in this case, maximum possible = 2 4 last branch is always single A->a |w|  2 h(T)- 1

4 4 Pumping Lemma for Context-Free Languages Pumping Lemma: Let G = (V, T, P, S) be a CFG in CNF, and let n = 2 |V|. If z is a string in L(G) and |z|  n, then there exist substrings u, v, w, x and y in T* such that z=uvwxy and: –|vx|  1(i.e., |v| + |x|  1, or, non-null) –|vwx|  n(the loop in generating this substring) –uv i wx i y is in L(G), for all i  0 –Note: u could be of any length, so, vwx is not a prefix unlike that (uv of uvw) in RL pumping lemma

5 5 Proof: Since |z|  n = 2 k, where k = |V|, it follows from the corollary that any derivation tree for z has height at least k+1. By definition such a tree contains a path of length at least k+1. Consider the longest such path in the tree T: S t yield of this tree T is string z Such a path has: –Length of path t is |t|  k+1 (i.e., number of edges in the path t is  k+1) –At least k+2 nodes on the path t –1 terminal, at the end of the path t –At least k+1 non-terminals

6 6 Since there are only k non-terminals in the grammar, and since k+1 appear on this long path, it follows that some non-terminal (and perhaps many) appears at least twice on this path. Consider the first non-terminal (from bottom) that is repeated, when traversing the path from the leaf to the root. S Second occurrence of non-terminal A AFirst occurrence A t This path, and the non-terminal A will be used to break up the string z.

7 7 Generic Description: S A u v wx y Example: S EF CDAF cdGGf FAg In this case u = cd and y =ffaWhere are v, w, and x?

8 8 Cut out the subtree rooted at A: S A uyS =>* uAy (1) Example: S EF CDAF cdfS =>* cdAf

9 9 Consider the subtree rooted at A: A G G A F A g vx f a Cut out the subtree rooted at the first occurrence of A: A A G G A F A g vxf A =>* vAx(2)A =>* fAg

10 10 Consider the smallest subtree rooted at A: A a w A =>* w(3) A =>* a Collectively (1), (2) and (3) give us: S =>* uAy(1) =>* uvAxy(2) =>* uvwxy(3) =>* zsince z=uvwxy

11 11 In addition, (2) also tells us: S =>* uAy(1) =>* uvAxy(2) =>* uv (vAx) xy// by using the rules that make A ->* vAx =>* uv 2 Ax 2 y(2) =>* uv 2 wx 2 y(3) More generally: S =>* uv i wx i yfor all i>=1 And also: S =>* uAy(1) =>* uwy(3) // by A ->* w Hence: S =>* uv i wx i yfor all i>=0

12 12 Consider the statement of the Pumping Lemma: –What is n? n = 2 k, where k is the number of non-terminals in the grammar. –Why is |v| + |x|  1? A vwx Since the height of this subtree is  2, the first production is A->V 1 V 2. Since no non- terminal derives the empty string (in CNF), either V 1 or V 2 must derive a non-empty v or x. More specifically, if w is generated by V 1, then x contains at least one symbol, and if w is generated by V 2, then v contains at least one symbol. –At least, A->AV, or A->VA, and V->a

13 13 –Why is |vwx|  n? Observations: The repeated variable was the first repeated variable on the path from the bottom, and therefore (by the pigeon-hole principle) the path from the leaf to the second occurrence of the non-terminal has length at most k+1. Since the path was the largest in the entire tree, this path is the longest in the subtree rooted at the second occurrence of the non-terminal. Therefore the subtree has height  k+1. From the lemma, the yield of the subtree has length  2 k =n. A vwx

14 Use of CFL Pumping Lemma 14

15 15 Closure Properties for Context-Free Languages Theorem: The CFLs are closed with respect to the union, concatenation and Kleene star operations. Proof: (details left as an exercise) Let L 1 and L 2 be CFLs. By definition there exist CFGs G 1 and G 2 such that L 1 = L(G 1 ) and L 2 = L(G 2 ). –For union, show how to construct a grammar G 3 such that L(G 3 ) = L(G 1 ) U L(G 2 ). –For concatenation, show how to construct a grammar G 3 such that L(G 3 ) = L(G 1 )L(G 2 ). –For Kleene star, show how to construct a grammar G 3 such that L(G 3 ) = L(G 1 )*.

16 16 Theorem: The CFLs are not closed with respect to intersection. Proof: (counter example) Let L 1 = {a i b i c j | i,j  0} and L 2 = {a i b j c j | i,j  0} Note that both of the above languages are CFLs. If the CFLs were closed with respect to intersection then would have to be a CFL. But this is equal to: {a i b i c i | i  0} which is not a CFL.

17 17 Lemma: Let L 1 and L 2 be subsets of Σ *. Then. Theorem: The CFLs are not closed with respect to complementation. Proof: (by contradiction) Suppose that the CFLs were closed with respect to complementation, and let L 1 and L 2 be CFLs. Then: would be a CFL But by the lemma: a contradiction.

18 18 Theorem: Let L be a CFL and let R be a regular language. Then is a CFL. Proof: (exercise – sort of) Question: Is regular? Answer: Not always. Let L = {a i b i | i >= 0} and R = {a i b j | i,j >= 0}, then which is not regular.


Download ppt "1 Background Information for the Pumping Lemma for Context-Free Languages Definition: Let G = (V, T, P, S) be a CFL. If every production in P is of the."

Similar presentations


Ads by Google