Most UNIX regular expressions have, besides the usual **
,+
,?*
operators a backslash operator where \1,\2,...
match whatever's in the last parentheses, so for example *L=(a*)b\1*
matches the (non regular) language *a^n b a^n*
.
On one hand, this seems to be pretty powerful since you can create (a*)b\1b\1
to match the language *a^n b a^n b a^n*
which can't even be recognized by a stack automaton. On the other hand, I'm pretty sure *a^n b^n*
cannot be expressed this way.
I have two questions:
*a^n b^n*
cannot be expressed this way?In the theory of formal languages, the pumping lemma may refer to: Pumping lemma for regular languages, the fact that all sufficiently long strings in such a language have a substring that can be repeated arbitrarily many times, usually used to prove that certain languages are not regular.
Explanation: Pumping lemma is used to prove a language is regular or not. So, option (D) is correct.
Pumping Lemma is used as a proof for irregularity of a language. Thus, if a language is regular, it always satisfies pumping lemma. If there exists at least one string made from pumping which is not in L, then L is surely not regular. The opposite of this may not always be true.
You're probably looking for
and of course follow their citations forward and backward to find more literature on this subject.
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