Applications of Regular Closure
The intersection of a context-free language and a regular language is a context-free language Regular Closure context free regular context-free
An Application of Regular Closure Prove that: is context-free
We know: is context-free
We also know: is regular is regular
context-free regular (regular closure) is context-free is context-free
Another Application of Regular Closure Prove that: is not context-free
Impossible!!! If is context-free Then context-free regular (regular closure) Then context-free regular context-free Impossible!!! Therefore, is not context free
Decidable Properties of Context-Free Languages
Membership Question: for context-free grammar find if string Membership Algorithms: Parsers Exhaustive search parser CYK parsing algorithm
Empty Language Question: for context-free grammar find if Algorithm: Remove useless variables Check if start variable is useless
Infinite Language Question: for context-free grammar find if is infinite Algorithm: 1. Remove useless variables 2. Remove unit and productions 3. Create dependency graph for variables 4. If there is a loop in the dependency graph then the language is infinite
Example: Infinite language Dependency graph
The Pumping Lemma for Context-Free Languages
Take an infinite context-free language Generates an infinite number of different strings Example:
Variables are repeated A derivation:
Derivation tree string
Derivation tree string repeated
Repeated Part
Another possible derivation
Therefore, the string is also generated by the grammar
We know: We also know this string is generated:
We know: Therefore, this string is also generated:
We know: Therefore, this string is also generated:
We know: Therefore, this string is also generated:
Therefore, knowing that is generated by grammar , we also know that is generated by
In general: We are given an infinite context-free grammar Assume has no unit-productions no -productions
> Take a string with length bigger than (Number of productions) x (Largest right side of a production) Consequence: Some variable must be repeated in the derivation of
String Last repeated variable repeated
Possible derivations:
We know: This string is also generated:
We know: This string is also generated: The original
We know: This string is also generated:
We know: This string is also generated:
We know: This string is also generated:
Therefore, any string of the form is generated by the grammar
Therefore, knowing that we also know that
Observation: Since is the last repeated variable
Observation: Since there are no unit or productions
The Pumping Lemma: For infinite context-free language there exists an integer such that for any string we can write with lengths and it must be:
Applications of The Pumping Lemma
Non-context free languages
Theorem: The language is not context free Proof: Use the Pumping Lemma for context-free languages
Assume for contradiction that is context-free Since is context-free and infinite we can apply the pumping lemma
Pumping Lemma gives a magic number such that: Pick any string with length We pick:
We can write: with lengths and
Pumping Lemma says: for all
We examine all the possible locations of string in
Case 1: is within
Case 1: and consist from only
Case 1: Repeating and
Case 1: From Pumping Lemma:
Case 1: From Pumping Lemma: However: Contradiction!!!
Case 2: is within
Case 2: Similar analysis with case 1
Case 3: is within
Case 3: Similar analysis with case 1
Case 4: overlaps and
Case 4: Possibility 1: contains only contains only
Case 4: Possibility 1: contains only contains only
Case 4: From Pumping Lemma:
Case 4: From Pumping Lemma: However: Contradiction!!!
Case 4: Possibility 2: contains and contains only
Case 4: Possibility 2: contains and contains only
Case 4: From Pumping Lemma:
Case 4: From Pumping Lemma: However: Contradiction!!!
Case 4: Possibility 3: contains only contains and
Case 4: Possibility 3: contains only contains and Similar analysis with Possibility 2
Case 5: overlaps and
Case 5: Similar analysis with case 4
There are no other cases to consider (since , string cannot overlap , and at the same time)
In all cases we obtained a contradiction Therefore: The original assumption that is context-free must be wrong Conclusion: is not context-free