Create Presentation
Download Presentation

Download Presentation

Properties of Context-Free Languages

Download Presentation
## Properties of Context-Free Languages

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**CS 3240 – Chapter 8**Properties of Context-Free Languages**Query**• Is anbncn context-free? CS 3240 - Properties of Context-Free Languages**Non-Context-Free Languages**• anbncn is not context-free • Neither is ww • although wwR is! • We will develop a pumping lemma for context-free languages • (oh joy! :-) • as before, can only be used to show that a language is not CF CS 3240 - Properties of Context-Free Languages**Properties of Infinite CF Languages**• How can you tell by looking at a CFG whether its language is infinite or not? CS 3240 - Properties of Context-Free Languages**An Infinite CFL**• S → aaB • A → bBb | λ • B → Aa • Consider the derivation:S ⇒ aaB ⇒aaAa ⇒ aabBba ⇒ aabAaba⇒ aabbBbaba ⇒ aabbAababa … CS 3240 - Properties of Context-Free Languages**Infinite CFLs**• Grammars for infinite CFL must reuse a variable in some derivation • S ⇒* uAz ⇒* uvAyz • That is, A ⇒* vAy • u,v,y,z,are derivable strings of characters and variables • We can repeat the same choices for A again: • S ⇒* uAz ⇒* uvAyz ⇒* uvvAyyz • And again and again… (finally stopping with x) • S ⇒*uvnAynz ⇒* uvnxynz • So for any sufficiently long string, s, we have • s = uvnxynz ⇒ CS 3240 - Properties of Context-Free Languages**What Will Force a Variable Repeat?**• Hint: think of derivation trees, and the relationship between the depth and the number of leaves in a tree CS 3240 - Properties of Context-Free Languages**Reminder: Binary Trees**• If a complete binary has depth d, how many leaves does it have? CS 3240 - Properties of Context-Free Languages**And My Point?**• Consider a path from the root of a tree (S) to a leaf. • It is all variables, except for the leaf • The longer the string, the deeper the path • Eventually a variable must be repeated! CS 3240 - Properties of Context-Free Languages**The Pumping Lemma for CFLs**• Based on a repeated variable (a type of loop) • For sufficiently-long strings (≥ p = 2v), some variable will be a descendant of itself in the parse • Every string of sufficient length from an infinite CFL can be written as uvxyz, and pumped as uvixyiz, i ≥ 0: • |v| + |y| > 0 • |vxy| <= p**anbnan is not context-free**• Intuitively: We’ve already used up the stack to coordinate the anbn prefix • Must consider all cases for a proof • CFLPL-8.PDF**ww is not Context Free**• Use the pumping lemma with apbpapbp**Closure Properties of CFLsSection 8.2**• (N)CFLs are closed under: • Union • Concatenation • Kleene Star • “Regular Intersection” (CF ∩ R = CF) • (N)CFLs are not closed under: • intersection • complement CS 3240 - Properties of Context-Free Languages**Union of CFLs**• Let S1 be the start symbol for L1, and S2 for L2 • Just have a new start symbol point to the OR of the old ones: • S => S1 | S2S1 => …S2 => …**Concatenation of CFLs**• S => S1S2S1 => …S2 => …**Kleene Star of CFLs**• Rename the old start variable to S1 • S => S1S | λS1 => …**Intersection of CFLs**• Let L1 = anbncm • The concatenation of anbnand cm • Let L2 = anbmcm • The concatenation of an and bmcm • These are both context-free • L1∩ L2 = anbncn • We already showed this is not context free**“Regular” Intersection**• Let R be a regular language and L a context-free language • The R∩Lis context-free • Why? CS 3240 - Properties of Context-Free Languages**Regular Intersection Exampleanbn ∩ EVEN-EVEN**CS 3240 - Properties of Context-Free Languages**Combine the TablesIn the Usual Way**CS 3240 - Properties of Context-Free Languages**Resulting Intersection**jail CS 3240 - Properties of Context-Free Languages**Complement of CFLs**• Proof by contradiction, derived from the formula for intersection:L1∩ L2 = (L1' + L2')'Since the intersection is not closed, but union is, then the complement cannot be. • (Otherwise we could compute the intersection, which in general is not CF)**Complement of CFLsAnother Look**• Non-determinism is the problem • Remember NFAs? • To find the complement, we needed to first convert to a DFA, then flip the states • Since some CFLs are inherently non-deterministic, they have no deterministic equivalent to “flip” • But… what does this say about deterministic CFLs? CS 3240 - Properties of Context-Free Languages**Closure Properties of DCFLs**• DCFLs are closed under: • Complement! • Concatenation • Kleene Star • “Regular Intersection” (CF ∩ R = CF) • DCFLs are not closed under: • Intersection • Union! CS 3240 - Properties of Context-Free Languages**DCFLs not Closed under Union!**• Consider:L1 = {aibjck | i = j}L2 = {aibjck | j = k} • Each of these is DCF • (Easy to show – your 7.1 homework was similar) • The union is not! • It requires non-determinism • It’s still context-free, but not Deterministic CF**Another Interesting FactFYI**• DCFLs always have an associated CFG that is unambiguous**Closure Properties of CFLsSummary**• Closed under Union, Concatenation, Kleene Star • Not closed under intersection, complement • CFL ∩ Regular = CFL • DCFLs are closed under complement • But not union! • Swap those two**Decidability**• Unanswerable questions • Answerable questions**Undecidable Questions**• Do 2 arbitrary CFGs generate the same language? • Is a CFG ambiguous? • Is a given NCFL’s complement also CF? • Is the intersection of 2 given CFLs CF? • Do 2 CFLs have a common word?**Decidable Questions**• Is a non-terminal ever used in a productive derivation? • Draw the connectivity graph ✔ • Does a CFG generate any words? • Substitute each “terminating production” (RHS is all terminals) throughout and see what happens • “back substitution method” • Is a CFL finite or infinite? • Procedure to detect useful, repeated variables**ExampleIs a string generated?**S → aA | bB | λ A → a | aCA | bDA | bBa | aAa B → b | aAb | aCB | bDB | bBb C → aCC | bDC D → aCD | bDD First remove useless variables… CS 3240 - Properties of Context-Free Languages**ExampleIs a string generated?**S → aA | bB | λ A → a | bBa | aAa B → b | aAb | bBb Pick a non-empty, terminal rule: A → a Back-substitute that rule: S → aa | bB | λ A → a | bBa | aaa B → b | aab | bBb Keep going until we have S → <terminal string>, or we can’t continue. We have S → aa. STOP. CS 3240 - Properties of Context-Free Languages**ExampleIs the language infinite?**S → aA | bB | λ A → a | bBa | aAa B → b | aAb | bBb All variables are useful. Let’s see if A is repeated, for instance. First, mark all A’s on the right: S → aA | bB | λ A → a | bBa | aAa B → b | aAb | bBb Now mark all variables affected on the left: S → aA | bB | λ A → a | bBa | aAa B → b | aAb | bBb Since A was marked on the left, it is repeated. CS 3240 - Properties of Context-Free Languages**ExampleTest for non- emptiness, infinite-ness**S ➞ aA | SB Mark on left: A ➞ baB | λ B ➞ bB | bA S ➞ aA | SB A ➞ baB | λ Mark A’s on right: B ➞ bB | bA S ➞ aA | SB A was marked on left. DONE. A ➞ baB | λ B ➞ bB | bA Now mark corresponding variables on left: S ➞ aA | SB A ➞ baB | λ B ➞ bB | bA Repeat marking on right: S ➞ aA | SB A ➞ baB | λ B ➞ bB | bA CS 3240 - Properties of Context-Free Languages