270 likes | 393 Vues
Non-context-free languages present unique challenges in formal language theory. This guide explores various aspects of non-CFLs, including the Pumping Lemma, which helps demonstrate that certain languages cannot be classified as context-free. Through examples like {a^n b^n | n > 0} and analyses of the pumping conditions, we clarify fundamental differences between regular languages and CFLs. We also discuss methods for proving that specific languages are not context-free by employing the pumping lemma, aiding comprehension of complex language structures.
E N D
Non Context-free Languages • Non context-free languages • Examples and Intuition • Pumping lemma for CFL’s • Pumping condition • No proof of pumping lemma • Applying pumping lemma to prove that some languages are not CFL’s
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? • Why can’t we construct a PDA to accept 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 m > 0 such that for all strings x in L of length at least m there exist strings u, v, w such that x = uvw and |uv| ≤ m and |v| ≥ 1 and For all i ≥ 0, uviw is in L A language L satisfies the CFL pumping condition if: there exists an integer m > 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| ≤ m and |vy| ≥ 1 and For all i ≥ 0, uviwyiz 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 m > 0 such that • for all strings x in L of length at least m • there exist strings u, v, w, y, z such that • x = uvwyz and • |vwy| ≤ n and • |vy| ≥ 1 and • For all i ≥ 0, uviwyiz is in L
v and y can be pumped 1) x in L2) x = uvwyz3) For all i ≥ 0, uviwyiz 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 • uviwyiz is in L for all i ≥ 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 m > 0 such that • for all strings x in L of length at least m • x must be in L and have sufficient length • there exist strings u, v, w, y, z such that • x = uvwyz and • |vwy| ≤ m and • v and y are contained within m characters of x • Note: these are NOT necessarily the first m characters of x • |vy| ≥ 1 and • v and y cannot both be l, • One of them might be l, but not both • For all i ≥ 0, uviwyiz 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 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 m there exist strings u, v, w, y, z such that x = uvwyz and |vwy| ≤ m and |vy| ≥ 1 and For all i ≥ 0, uviwyiz 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| ≤ m and |vy| ≥ 1 There exists a i ≥ 0 such that uviwyiz 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| ≤ m and |vy| ≥ 1 There exists a i ≥ 0 such that uviwyiz 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| ≤ m and |vy| ≥ 1 Argue that uviwyiz is not in L for some i ≥ 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 i ≥ 0 such that uviwyiz 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 m characters in x • For TWOCOPIES, choose x = ambmambm rather than ambamb • Guarantees v and y cannot be in more than 2 blocks of x • Try i=0 or i=2 • i=0 • This reduces number of occurrences of v and y • i=2 • This increases number of occurrences of v and y
Summary • 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 • Choosing a good string x is first key step • Choosing a good i is second key step • Typically have several cases for v, w, y