I have troubles in solving/proving this problem. Any ideas please?
L = {an bm | n > m} is not regular language.
Yes, the problem is tricky at first few try and deserve vote-up.
Pumping Lemma a necessary property of regular language is tool for formal proof that language is not regular language.
Formal definition: Pumping lemma for regular languages
Let L be a regular language. Then there exists an integer p ≥ 1 depending only on L such that every string w in L of length at least p (p is called the "pumping length") can be written as w = xyz (i.e., w can be divided into three sub-strings), satisfying the following conditions:
- |y| ≥ 1
- |xy| ≤ p
- for all i ≥ 0, xyiz ∈ L
Suppose, if you choose string W = an bm where (n + m) ≥ p and n > m + 1. Choice of W is valid but this choice you are not able to show that language is not regular language. Because with this W you always have at-least one choice of y=a to pump new strings in language by repeating a for all values of i (for i =0 and i > 1).
Before I writing my solution to proof the language is not regular. Please understand following points and notice: I made bold every string w and all i in formal definition of pumping lemma above.
read: what pumping lemma formal definition says
Proof: using pumping lemma
Step (1): Choose string W = an bm where (n + m) ≥ p and n = m + 1.
Is this choice of W is valid according to pumping lemma?
Yes, such W is in language because number of a = n > number of b =m . W is in language and sufficiently large >= p.
Step (2): Now chose a y to generate new string for all i >= 0.
And no choice is possible for y this time! Why?
First, it is essay to understand that we can't have b symbol in y because it will either generate new strings out of pattern or in resultant string total number of b will be more than total number of a symbols.
Second, we can't chose y = some a's because with i=0 you would get a new string in which number of a s will be less then number b s that is not possible in language.(remember number of a in W was just one more then b so removing any a means in resultant string N(a)=N(b) that is not acceptable because n>m)
So in we could find some W those are sufficiently large but using that we can't generate new string in language that contradict with pumping lemma property of regular language hence then language {an bm | n > m} is not a regular language indeed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With