10

The language $L = \{0^{2n} \space |\space n \ge 0 \}$ is obviously regular – for example, it matches the regular expression $(00)^*$. But the following pumping lemma argument seems to show it's not regular. What's gone wrong?

I've found a way of splitting an input $s$ as $xyz$ satisfying the requirements of the pumping lemma but it's not true that $xy^iz\in L$ for all $i$. Doesn't that mean the language isn't regular?

In more detail, the pumping lemma for regular languages says that, if a language $L$ is regular, there exists pumping length $p \ge 1$ such that any string $s\in L$ with $|s|> p$ can be written as $s = xyz$ such that:

  1. $\lvert y \rvert \ge 1$
  2. $\lvert xy \rvert \le p$
  3. $xy^iz\in L$ for all $i \ge 0$.

So, let's take $s = 0^{2p}$ and write it as $s=\epsilon\, 0 \, 0^{2p-1}$ (i.e., $x = \epsilon$, $y = 0$, $z = 0^{2p-1}$). This satisfies 1. and 2. But, taking $i=0$, we get $xy^iz = \epsilon\, 0^0\,0^{2p-1} = 0^{2p-1}$, which isn't in $L$ because its length is odd. So it looks like the language isn't regular after all.


This is intended as a reference question illustrating a common mistake in the use of the pumping lemma for regular langauges. Thanks to Ariel for spotting the issue in the original version of the question.

David Richerby
  • 81,689
  • 26
  • 141
  • 235
flashburn
  • 1,223
  • 1
  • 12
  • 22
  • 4
    The pumping lemma states that for words greater than some length $p$ there exists such decomposition. You have shown a specific decomposition that does not work, but take any word of length greater than 2 and $y=0^2$. (God have mercy on my soul for responding) – Ariel Aug 03 '15 at 20:15
  • There are pretty good guides in previous posts, e.g., https://cs.stackexchange.com/questions/1031/how-to-prove-that-a-language-is-not-regular – Ran G. Aug 03 '15 at 22:25
  • 3
    @RanG. That post is an excellent guide on how to prove that a language isn't regular but we do seem to get somewhat frequent questions where somebody has tried to apply the pumping lemma and made exactly this mistake. I think it's more helpful to point out what the mistake is in such a proof (e.g., by marking as a dupe of this question) than it is to say, "Here's how to do it properly; you figure out waht the difference between your approach and the correct one is." – David Richerby Aug 03 '15 at 22:28
  • 3
    @DavidRicherby you are right, this question is not about showing non-regularity using pumping. The most common mis-use of the lemma is misunderstanding the quantifiers, and the guide at the question I mentioned tries to address that issue (e.g., by writing in bold letters: all ways to partition it, etc.) – Ran G. Aug 03 '15 at 22:32
  • The lemma ensures there is some splitting that works if the language is regular. To prove it is not regular, you have to prove that no splitting works. – vonbrand Aug 04 '15 at 01:25
  • Is this really a common mistake, or rather a specific instance of misreading the lemma, as @RanG. notes? (That is, is this really reference-question material?) An example of a non-regular language that has the Pumping lemma may be better. – Raphael Aug 04 '15 at 06:26
  • @Raphael It's a mistake I feel I've seen multiple times. I don't think it's the world's greatest reference question but I think it's useful. – David Richerby Aug 04 '15 at 09:25

1 Answers1

8

The problem is in the quantifiers. The pumping lemma says that any string $s$ with $|s|\geq p$ can be written as $xyz$ such that the three properties hold. It doesn't say that every way of writing it as $xyz$ that makes the first two properties hold also makes the third one hold.

For the language $\{0^{2n}\mid n\geq 0\}$, we proceed as follows. First, note that we must have $p\geq 2$, since if $p=1$, we're forced to take $x=\epsilon$, $y=0$, $z=0^{2p-1}$ and you already showed in the question that this doesn't work. So, with $p\geq 2$, we can write $s = 0^{2p}$ as $s=\epsilon\,00\,0^{2(p-1)}$ ($x=\epsilon$, $y=00$, $z=0^{2(p-1)}$). We have $|\epsilon00| \leq p$, $|00|>1$ and $(00)^i\,0^{2(p-1)}\in L$ for all $i\geq 0$. Thus, there exists some way of decomposing the string as $xyz$ that satisfies all the properties, even though the first decomposition you thought of didn't work.

To show that a language isn't regular, you need to show that every decomposition into $xyz$ that satisfies the first two properties fails to satisfy the third one. It's not enough to just show that one decomposition doesn't work.

To understand why the pumping lemma is the way it is, it helps to think about the proof. If a language is regular, it is accepted by some DFA. That DFA has some number of states: call it $p$. By the pigeonhole principle, whenever that DFA reads a string longer than $p$, it must visit some state twice: say state $q$. Now, $x$ is the part of the input read upto (and including) the first visit to $q$, $y$ is the part read after the first visit and upto and including the second (which must be at least one character) and $z$ is the rest. But now you can see that $xz$ must be accepted: $x$ takes you from the start state to $q$ and $z$ takes you from $q$ to an accepting state. Likewise, $xy^iz$ must be accepted for any positive $i$, since each repetition of $y$ takes you from $q$ back to $q$. Note that the decomposition of the input into $x$, $y$ and $z$ is entirely determined by the automaton which is, in turn, determined (but not uniquely) by the language. So you don't get to choose the decomposition: if the langauge is regular, some decomposition exists; to show that a language is not regular, you must show that every decomposition fails.

David Richerby
  • 81,689
  • 26
  • 141
  • 235
  • This is a good explanation but I'm getting lost after reading http://cs.stackexchange.com/a/1051/10511. Take a look at item 4. He is taking about considering all the way to split the string into 3 substrings. The way I read it is that it is that I should be able to pump it every way I split the string assuming I'm given a regular language. So where is the error? This really bugs me that I don't understand it. To the point that I can't get normal sleep at night. – flashburn Aug 04 '15 at 03:31
  • 1
    @flashburn If it's supposed to be non-regular, no splitting can work. Here we find one that works, so we can't show it's non-regular using this lemma. – Raphael Aug 04 '15 at 06:27
  • @flashburn I've added an explanation about why the pumping lemma is true, which might help you to understand, by showing where the requirements of the lemma come from. – David Richerby Aug 04 '15 at 09:40
  • 1
    @flashburn Also, if your studies are stressing you out so much you can't sleep properly, you should have a chat with your university's counselling service. The pumping lemma's kind of important but your health and wellbeing are much more important. – David Richerby Aug 04 '15 at 09:42
  • 2
    Not to mention that proper sleep, nutrition and exercise will make your mind work much better, @flashburn. See also here. – Raphael Aug 04 '15 at 09:52
  • Thanks for the concern guys. I really appreciate it. But I've been out of school for some time now. I remember liking Automata, Grammars and Computability theory class but struggling with it. I got an A+, but it was because of a curve. I clearly remember struggling with a pumping lemma. Right now I'm taking a free online compiler class and there was a question requiring this lemma. I decided to use this opportunity to "nail" the pumping lemma. – flashburn Aug 04 '15 at 12:28