Transcript Chapter 8
CS 3240 – Chapter 8
Is anbncn context-free?
CS 3240 - Properties of Context-Free Languages
2
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
3
How can you tell by looking at a CFG whether
its language is infinite or not?
CS 3240 - Properties of Context-Free Languages
4
S → aaB
A → bBb | λ
B → Aa
Consider the derivation:
S ⇒ aaB ⇒aaAa ⇒ aabBba ⇒ aabAaba
⇒ aabbBbaba ⇒ aabbAababa …
CS 3240 - Properties of Context-Free Languages
5
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
6
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
7
If a complete binary has depth d, how many
leaves does it have?
CS 3240 - Properties of Context-Free Languages
8
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
9
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
Intuitively: We’ve already used up the
stack to coordinate the anbn prefix
Must consider all cases for a proof
CFLPL-8.PDF
Use the pumping lemma with apbpapbp
(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
13
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 | S2
S1 => …
S2 => …
S => S1S2
S1 => …
S2 => …
Rename the old start variable to S1
S => S1S | λ
S1 => …
Let L1 = anbncm
The concatenation of anbn and 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
Let R be a regular language and L a contextfree language
The R∩L is context-free
Why?
CS 3240 - Properties of Context-Free Languages
18
a,λ
b,X
±s
s/X
f/λ
+f
Φ
f/λ
a
b
±A
B
C
B
A
D
C
D
A
D
C
B
CS 3240 - Properties of Context-Free Languages
19
a,λ
b,X
± sA
s/X; B
f/λ; C
sB
s/X; A
f/λ; D
fC
;D
f/λ; A
fD
;C
f/λ; B
+ fA
;B
f/λ; C
fB
;A
f/λ; D
CS 3240 - Properties of Context-Free Languages
20
jail
CS 3240 - Properties of Context-Free Languages
21
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)
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 nondeterministic, they have no deterministic
equivalent to “flip”
But… what does this say about deterministic
CFLs?
CS 3240 - Properties of Context-Free Languages
23
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
24
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
DCFLs always have an associated CFG that is
unambiguous
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
Unanswerable questions
Answerable 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?
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
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
31
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
32
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
33
S ➞ aA | SB
A ➞ baB | λ
B ➞ bB | bA
Mark on left:
S ➞ aA | SB
A ➞ baB | λ
B ➞ bB | bA
Mark A’s on right:
S ➞ aA | SB
A ➞ baB | λ
B ➞ bB | bA
A was marked on left. DONE.
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
34