This is an old revision of the document!


11. Closure properties for Context-Free Languages

Given the following specs, construct the lexer DFA as presented in Lecture 14:

  • PAIRS: $ (10 | 01)* $
  • ONES: $ 1+ $
  • NO_CONSEC_ONE: $ (1 | \epsilon)(01 | 0)* $

Separate the following input strings into lexemes:

a) 010101

Solution a)

Solution a)

Although the entire string is matched by PAIRS and NO_CONSEC_ONE, PAIRS is defined first, thus it will be the first picked.
PAIRS “010101”

b) 1010101011

Solution b)

Solution b)

First we have a maximal match on “101010101” for regex NO_CONSEC_ONE. The remaining string, “1”, is matched by both ONES and NO_CONSEC_ONE, but ONES is defined first.
NO_CONSEC_ONE “101010101”
ONES “1”

c) 01110101001

Solution c)

Solution c)

PAIRS “01”
ONES “11”
NO_CONSEC_ONES “0101001”

d) 01010111111001010

Solution d)

Solution d)

PAIRS “010101”
ONES “11111”
NO_CONSEC_ONES “001010”

e) 1101101001111100001010011001

Solution e)

Solution e)

ONES “11” PAIRS “01101001”
ONES “1111”
NO_CONSEC_ONES “0000101001”
PAIRS “1001”

11.1.1. Intersection is not a closure property.

Solution 11.1.1

Solution 11.1.1

Take:

$ L_1 = \{ a^{n} b^{n} c^{m} \ | \: n, m \in \mathbb{N} \} $

$ L_2 = \{ a^{m} b^{n} c^{n} \ | \: n, m \in \mathbb{N} \} $

$ \Rightarrow L_1 \bigcap L_2 = \{ a^{n} b^{n} c^{n} \ | \: n \in \mathbb{N} \} $ is not context free

11.1.2. Complement is not a closure property.

Solution 11.1.2

Solution 11.1.2

Suppose Complement is a closure property $\Rightarrow$ complements of CFLs are CFLs, we will prove in 11.2.2 that Union is a closure property.

Take, $ L_1, L_2 \in CFL \Rightarrow \overline{\overline{L_1} \bigcup \overline{L_2}} = L_1 \bigcap L_2 \in CFL $

This would imply $ L_1 \bigcap L_2 $ is a CFL, and at 11.1.1 we have proven that intersection is not a closure property.

Contradiction!

11.1.3. Difference is not a closure property.

Solution 11.1.3

Solution 11.1.3

Suppose Difference is a closure property.

Take, $ \Sigma^*, L_1 \in CFL \Rightarrow \Sigma^* \backslash L_1 = \overline{L_1}\in CFL $

This would imply $ \overline{L_1} $ is a CFL, and at 11.2.1 we have proven that intersection is not a closure property.

Contradiction!

11.2.1. Concat is a closure property.

11.2.2. Union is a closure property.

11.2.3. Kleene Star is a closure property.

11.2.4. Reverse is a closure property.

Solution 11.2.4

Solution 11.2.4

If \( G \) is a grammar, let \( H \) be its reverse, so for production \( A \to w \) in \( G \) we have \( A \to w^R \) in \( H \).

Then by induction we show that the original grammar \( G \) generates a string iff the reverse grammar \( H \) generates the reverse of the string. Formally: \( A \Rightarrow{*}_G w \iff A \Rightarrow{*}_H w^R \).

1. Basis:

 In zero steps, we have \( A \Rightarrow{0}_G A \iff A \Rightarrow{0}_H A \).

2. Induction:

 Assuming \( A \Rightarrow{*}_G w_1 B w_2 \iff A \Rightarrow{*}_H w_2^R B w_1^R \),  
 we can apply any production \( B \to u \) in \( G \) (and in \( H \) in reverse) and obtain:  
 \( A \Rightarrow{*}_G w_1 u w_2 \)  
 \( A \Rightarrow{*}_H w_2^R u^R w_1^R \),  
 where indeed \( w_2^R u^R w_1^R \) is the reverse of \( w_1 u w_2 \).

11.2.5. Intersection with a regular language is a closure property.

11.2.6. Difference with a regular language is a closure property.