300 likes | 486 Vues
This module explores the CFL (Context-Free Language) Pumping Lemma, highlighting its significance and how it differs from the regular language pumping lemma. It presents an overview of proof techniques and applications, illustrating examples of non-regular languages. The section analyzes why certain languages cannot be generated by context-free grammars and discusses the modified pumping condition for CFLs. Through various examples and intuitive explanations, learners can grasp how the lemma can be applied to demonstrate whether a language is context-free or not.
E N D
Module 33 • Non-context free languages • Intuition and Examples • CFL Pumping Lemma • Comparison to regular language pumping lemma • What it means • Proof overview • Applications
Examples • What are some examples of nonregular languages? • Can we build on any of these languages to create a non context-free language?
Intuition • Try and prove that these languages are CFL’s and identify the stumbling blocks • Why can’t we construct a CFG to generate this language? • Compare to similar CFL languages to try and identify differences.
What’s different about CFL’s than regular languages? * • In regular languages, a single substring “pumps” • Consider the language of even length strings over {a,b} • We can identify a single substring which can be pumped • In CFL’s, multiple substrings can “pump” • Consider the language {anbn | n > 0} • No single substring can be pumped and allow us to stay in the language • However, there do exist pairs of substrings which can be pumped resulting in strings which stay in the language • This results in a modified pumping condition
A language L satisfies the regular language pumping condition if: there exists an integer n > 0 such that for all strings x in L of length at least n there exist strings u, v, w such that x = uvw and |uv| ≤ n and |v| ≥ 1 and For all k ≥ 0, uvkw is in L A language L satisfies the CFL pumping condition if: there exists an integer n > 0 such that for all strings x in L of length at least n there exist strings u, v, w, y, z such that x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 and For all k ≥ 0, uvkwykz is in L Modified Pumping Condition
“Pumping Languages” All languages over {a,b} Pumping Lemma • All CFL’s satisfy the CFL pumping condition CFL’s
Pumping Implications CFL • We can use the pumping lemma to prove a language L is not a CFL • Show L does not satisfy the CFL pumping condition • We cannot use the pumping lemma to prove a language is context-free • Showing L satisfies the pumping condition does not guarantee that L is context-free
Pumping Lemma What does it mean?
Pumping Condition • A language L satisfies the CFL pumping condition if: • there exists an integer n > 0 such that • for all strings x in L of length at least n • there exist strings u, v, w, y, z such that • x = uvwyz and • |vwy| ≤ n and • |vy| ≥ 1 and • For all k ≥ 0, uvkwykz is in L
v and y can be pumped 1) x in L2) x = uvwyz3) For all k ≥ 0, uvkwykz is in L • Let x = abcdefg be in L • Then there exist 2 substrings v and y in x such that v and y can be repeated (pumped) in place any number of times and the resulting string is still in L • uvkwykz is in L for all k ≥ 0 • For example • v = cd and y = f • uv0wy0z = uwz =abeg is in L • uv1wy1z = uvwyz = abcdefgis in L • uv2wy2z = uvvwyyz = abcdcdeffgis in L • uv3wy3z = uvvvwyyyz = abcdcdcdefffg is in L • …
What the other parts mean • A language L satisfies the CFL pumping condition if: • there exists an integer n > 0 such that • related to number of variables in CNF grammar G • for all strings x in L of length at least n • x must be in L and have sufficient length • there exist strings u, v, w, y, z such that • x = uvwyz and • |vwy| ≤ n and • v and y are contained within n characters of x • these are NOT necessarily the first n characters of x • |vy| ≥ 1 and • v and y cannot both be l, • One of them might be l, but not both • For all k ≥ 0, uvkwykz is in L
Example • Let L be the set of palindromes over {a,b} • Let x = aabaa • Let n = 3 • What are the possibilities for v and y ignoring the pumping constraint? • Which ones satisfy the pumping lemma?
Pumping Lemma Proof
Proof • For any CFL L, consider a CNF grammar G with m variables s.t. L(G) = L – {λ} • Let n = 2m • Consider any string x in L of length at least n, and let T be a parse tree for x • How short can the longest path of T be? • Must have length at least m+1. • From the last m+1 variables in the longest path of T, identify two variables that are identical. • Formulate u, v, w, y, and z based on these choice.
Illustration: k=2 S S A S A A A A u v y z u v w y z A u v y z A v w y slide originally from Chris Umans, Cal Tech
Illustration: k=0 S S A S A A A u z u v w y z x u z slide originally from Chris Umans, Cal Tech
Pumping Lemma Applying it to prove a specific language L is not context-free
How we use the Pumping Lemma • We choose a specific language L • For example, {ajbjcj | j > 0} • We show that L does not satisfy the pumping condition • We conclude that L is not context-free
A language L satisfies the CFL pumping condition if: there exists an integer n > 0 such that for all strings x in L of length at least n there exist strings u, v, w, y, z such that x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 and For all k ≥ 0, uvkwykz is in L A language L does not satisfy the CFL pumping condition if: for all integers n of sufficient size there exists a string x in L of length at least n such that for all strings u, v, w, y, z such that x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 There exists a k ≥ 0 such that uvkwykz is not in L Showing L “does not pump”
A language L does not satisfy the CFL pumping condition if: for all integers n of sufficient size there exists a string x in L of length at least n such that for all strings u, v, w, y, z such that x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 There exists a k ≥ 0 such that uvkwykz is not in L Proof that L = {aibici | i>0} does not satisfy the CFL pumping condition Let n be the integer from the pumping lemma Choose x = anbncn Consider all strings u, v, w, y, z s.t. x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 Argue that uvkwykz is not in L for some k ≥ 0 Argument must apply to all possible u,v,w,y,z Continued on next slide Example Proof
Proof that L = {aibici | i>0} does not satisfy the CFL pumping condition Let n be the integer from the pumping lemma Choose x = anbncn Consider all strings u, v, w, y, z s.t. x = uvwyz and |vwy| ≤ n and |vy| ≥ 1 Argue that uvkwykz is not in L for some k ≥ 0 Argument must apply to all possible u,v,w,y,z Continued next column Identify possible cases for vwy What is impossible for vwy? Case 1 vwy contains no a’s Case 2 vwy contains no c’s Must argue uvkwykz is not in L for bothcases described above Can use different values of k Continued on next slide Example Proof Continued
Identify possible cases for vwy What is impossible for vwy? Case 1 vwy contains no a’s Case 2 vwy contains no c’s Must argue uvkwykz is not in L for bothcases described above Can use different values of k Continued next column Case 1: vwy contains no a’s vy contains at least 1 b or c follows from vwy contains no a’s and |vy| ≥ 1 uwz is not in L uwz has n a’s follows from fact vwy contains no a’s and x originally had n a’s uwz has fewer than n b’s or fewer than n c’s follows from vy contains at least 1 b or c and x originally only had n b’s and n c’s Continued next slide Example Proof Continued
Case 1: vwy contains no a’s vy contains at least 1 b or c follows from vwy contains no a’s and |vy| ≥ 1 uwz is not in L uwz has n a’s follows from fact vwy contains no a’s and x originally had n a’s uwz has fewer than n b’s or fewer than n c’s follows from vy contains at least 1 b or c and x originally only had n b’s and n c’s Continued next column Case 2: vwy contains no c’s vy contains at least uv2wy2z is not in L uv2wy2z has n c’s follows from fact vwy contains no c’s and x originally had n c’s uv2wy2z has more than n a’s or more than n b’s follows from vy contains at least 1 a or b and x originally has n a’s and n b’s Continued next slide Example Proof Continued
For all possible u, v, w, y, z, we have shown there exists a k ≥ 0 such that uvkwykz is not in L Note, we used a different value of k for each case (though we didn’t have to) Therefore L does not satisfy the CFL pumping condition There L is not a CFL Case 2: vwy contains no c’s vy contains at least uv2wy2z is not in L uv2wy2z has n c’s follows from fact vwy contains no c’s and x originally had n c’s uv2wy2z has more than n a’s or more than n b’s follows from vy contains at least 1 a or b and x originally has n a’s and n b’s Continued next column Example Proof Completed
Other example languages • TWOCOPIES = {ww | w is in {a,b}* } • abbabb is in TWOCOPIES but abaabb is not • EQUAL3 = the set of strings over {a, b, c} such that the number of a’s equals the number of b’s equals the number of c’s • {aibjck | i < j < k}
Pumping Lemma Two rules of thumb
Two Rules of Thumb • Try to use blocks of at least n characters in x • For TWOCOPIES, choose x = anbnanbn rather than anbanb • Guarantees v and y cannot be in more than 2 blocks of x • Try k=0 or k=2 • k=0 • This reduces number of occurrences of v and y • k=2 • This increases number of occurrences of v and y
Summary • Examples of some non-CFL’s • We use the Pumping Lemma to prove a language is not a CFL • Note, does not work for all non CFL languages • Can be strengthened to Ogden’s Lemma (in book) • Choosing a good string x is first key step • Choosing a good k is second key step • Typically have several cases for v, w, y