160 likes | 217 Vues
Nonregularity Proofs. Regular Languages: Grand Unification. (Parallel Simulation) (Rabin and Scott’s work). (Collapsing graphs; Structural Induction) (S. Kleene’s work). (Construction) (Solving linear equations). Role of various representations for Regular Languages.
E N D
Nonregularity Proofs L10PLemma
Regular Languages: Grand Unification (Parallel Simulation) (Rabin and Scott’s work) (Collapsing graphs; Structural Induction) (S. Kleene’s work) (Construction) (Solving linear equations) L10PLemma
Role of various representations for Regular Languages • Closure under complementation. (DFAs) • Closure under union, concatenation, and Kleene star. (NFA-ls, Regular expression.) • Consequence: Closure under intersection by De Morgan’s Laws. • Relationship to context-free languages. (Regular Grammars.) • Ease of specification. (Regular expression.) • Building tokenizers/lexical analyzers. (DFAs) L10PLemma
Consider pairs of strings: IfL were regular,then there exists a DFA M accepting L with the following property: L10PLemma
CLAIM: JUSTIFICATION: Otherwise, from the definition of DFA, which contradicts the earlier conclusion. In order to satisfy the machine M must have a unique state for every i. Thus, M must have infinite number of states, if L is regular. This violates the definition of DFA. So, L must be non-regular. L10PLemma
Using Closure Properties • Regular languages are closed under set-intersection. • Note that regularity is a property of a collection, and not a property of an individual string in the collection. L1=bit strings with even parity L2=bit strings with number of 1’s divisible by 3 L=bit strings with number of 1’s a multiple of 6 L10PLemma
If R is a regular language and C is context-free, then may not be regular. • Proof: • Show that • is not regular. • Proof: If L were regular, ought to be regular. However, is known to be non-regular. Hence, L cannot be regular. L10PLemma
DIGRESSION • If R is a regular language and C is context-free, then can be regular. • Proof: • L = {/\, ab, ba, aabb, abab, abba, baba, bbaa, …} • a*b* = {/\, a, b, aa, ab, bb,…, aabb,…} • C = {/\, ab, aabb, …} • intersect(a*b*, C) =intersect(L, a*b*) = C • union(a*b*, C) = a*b* ; union(L, C) = L L10PLemma
Prelude to Pumping Lemma • Is 46551 divisible by 46? • Is 46554 divisible by 46? • Is 46552 divisible by 46? Necessary vs sufficient condition L10PLemma
Pumping Lemma for Regular Languages • It is a necessary condition. • Every regular language satisfies it. • If a language violates it, it is not regular. • RL => PL not PL => not RL • It is not a sufficient condition. • Not every non-regular language violates it. • not RL =>? PL or not PL (no conclusion) L10PLemma
Basic Idea: b a q0 a q1 b b a q2 q3 a,b L10PLemma
Note, So, L10PLemma
Fundamental Observation • Given a “sufficiently” long string, the states of a DFA must repeat in an accepting computation. These cycles can then be used to predict (generate) infinitely many other strings in (of) the language. Pigeon-Hole Principle L10PLemma
Pumping Lemma (Theorem 7.3.3) • Let L be a regular language that is accepted by a DFA M with k states. Let z be any string in L with . Then z can be decomposed as uvw with L10PLemma
For all sufficiently long strings (z) These exists non-null prefix (uv) and substring (v) For all repetitions of the substring (v), we get strings in the language. L10PLemma
Proving non-regularity • If there exists an arbitrarily long string s L, and for each decomposition s = uvw, there exists an i such that , then L is non-regular. Negation of the necessary condition: L10PLemma