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