[Overview] [Previous]
[Next]
The Pumping Lemma
Here's what the pumping lemma says:
- If an infinite language is regular, it can be defined by a dfa.
- The dfa has some finite number of states (say, n).
- Since the language is infinite, some strings of the language
must have length > n.
- For a string of length > n accepted by the dfa,
the walk through the dfa must contain a cycle.
- Repeating the cycle an arbitrary number of times must yield
another string accepted by the dfa.
The pumping lemma for regular languages is another way of
proving that a given (infinite) language is not regular.
(The pumping lemma cannot be used to prove that a given
language is regular.)
The proof is always by contradiction.
A brief outline of the technique is as follows:
- Assume the language L is regular.
- By the pigeonhole principle, any sufficiently long string
in L must repeat some state in the dfa; thus, the walk
contains a cycle.
- Show that repeating the cycle some number of times
("pumping" the cycle) yields a string that is not in L.
- Conclude that L is not regular.
Why this is hard:
- We don't know the dfa (if we did, the language would be regular!).
Thus, we have do the proof for an arbitrary dfa that accepts L.
- Since we don't know the dfa, we certainly don't know the cycle.
Why we can sometimes pull it off:
- We get to choose the string (but it must be in L).
- We get to choose the the number of times to "pump."
Copyright © 1996 by David Matuszek
Last modified Feb 18, 1996