170 likes | 357 Views
DR. Torng. Closure Properties for CFL’s Kleene Closure Union Concatenation CFL’s versus regular languages regular languages subset of CFL. Closure Properties for CFL’s. Kleene Closure. CFL closed under Kleene Closure. Let L be an arbitrary CFL Let G 1 be a CFG s.t. L(G 1 ) = L
E N D
DR. Torng • Closure Properties for CFL’s • Kleene Closure • Union • Concatenation • CFL’s versus regular languages • regular languages subset of CFL
Closure Properties for CFL’s Kleene Closure
CFL closed under Kleene Closure • Let L be an arbitrary CFL • Let G1 be a CFG s.t. L(G1) = L • G1 exists by definition of L1 in CFL • Construct CFG G2 from CFG G1 • Argue L(G2) = L* • There exists CFG G2 s.t. L(G2) = L* • L* is a CFL
L L* G1 G2 CFG’s Visualization • Let L be an arbitrary CFL • Let G1 be a CFG s.t. L(G1) = L • G1 exists by definition of L1 in CFL • Construct CFG G2 from CFG G1 • Argue L(G2) = L* • There exists CFG G2 s.t. L(G2) = L* • L* is a CFL CFL
A Algorithm Specification • Input • CFG G1 • Output • CFG G2 such that L(G2) = CFG G1 CFG G2
Construction • Input • CFG G1 = (V1, S, S1, P1) • Output • CFG G2 = (V2, S, S2, P2) • V2 = V1 union {T} • T is a new symbol not in V1 or S • S2 = T • P2 = P1 union ??
Closure Properties for CFL’s Kleene Closure Examples
Input grammar: V = {S} S = {a,b} S = S P: S → aa | ab | ba | bb Output grammar V = S = {a,b} Start symbol is P: Example 1 V2 = V1 union {T} T is a new symbol not in V1 or SS2 = TP2 = P1 union {T → ST | l}
Input grammar: V = {S, T} S = {a,b} Start symbol is T P: T → ST | l S → aa | ab | ba | bb Output grammar V = S = {a,b} Start symbol is P: Example 2 V2 = V1 union {T} T is a new symbol not in V1 or SS2 = TP2 = P1 union {T → ST | l}
Construction for Set Union • Input • CFG G1 = (V1, S, S1, P1) • CFG G2 = (V2, S, S2, P2) • Output • CFG G3 = (V3, S, S3, P3) • V3 = V1 union V2 union {T} • Variable renaming to insure no names shared between V1 and V2 • T is a new symbol not in V1 or V2 or S • S3 = T • P3 =
Construction for Set Concatenation • Input • CFG G1 = (V1, S, S1, P1) • CFG G2 = (V2, S, S2, P2) • Output • CFG G3 = (V3, S, S3, P3) • V3 = V1 union V2 union {T} • Variable renaming to insure no names shared between V1 and V2 • T is a new symbol not in V1 or V2 or S • S3 = T • P3 =
CFL Closure Properties • What have we just proven • CFL’s are closed under Kleene closure • CFL’s are closed under set union • CFL’s are closed under set concatenation • What can we conclude from these 3 results? • It follows that regular languages are a subset of CFL’s
Regular languages subset of CFL • Similar to reg-exp to NFA-λ construction from module 22 • Base Case: • {}, {l}, {a}, {b} are regular languages over {a,b} • P={}, P={S → l}, P={S → a}, P={S → b} • Inductive Case: • If L1 and L2 are are regular languages, then L1*, L1L2, L1 union L2 are regular languages • Use previous constructions to see that these resulting languages are also context-free
Other CFL Closure Properties • We will show that CFL’s are NOT closed under many other set operations • Examples include • set complement • set intersection • set difference
H Equal ? CFL REC RE All languages over alphabet S H Language class hierarchy REG
Nested language examples • Prove the following languages are CFLs • {anbncmdm | m,n ≥ 0} • {anbmcmdn | m,n ≥ 0} • {am+nbmcn | m,n ≥ 0} • What happens if we change bounds above to 1 instead of 0?