I have a little confusion in checking whether the given language is regular or not using pumping lemma.
Suppose we have to check whether:
L. The language accepting even number of
0
's in regular or not?
We know that it is regular because we can construct a DFA for L. But I want to prove this with pumping lemma.
Now suppose, I take a String w= "0000"
:
Now will divide the string as x = 0
, y = 0
, and z = 00
. Now on applying pumping lemma for i = 2
, I will get the string "00000"
, which is not present in my language so by pumping lemma its prove that the language is not regular. But it is accepted by DFA ?
Any help will be greatly appreciated
Thank you
You are not completely clear about pumping lemma.
What pumping lemma say:
Formal definition: Pumping lemma for regular languages
Let
L
be a regular language. Then there exists an integerp
≥ 1
depending only onL
such that every stringw
inL
of length at leastp
(p
is called the"pumping length"
) can be written asw
=xyz
(ie,w
can be divided into three substrings), satisfying the following conditions:
|
y
| ≥ 1
| ≥ 1
|
xy
| ≤
| ≤
p
- for all
i
≥ 0
,xy
i
z
∈
L
But what this statement says is that:
If a language is really a regular language then there must be some way to generate( pump ) new strings from all sufficiently large strings .
Sufficiently large string means, a string in language that is of the length ≥ P .
So it may not be possible to generate new string from small strings even if language is Regular Language
Some way means, if language is really a regular and our choice of w
is correct. Then there should be at lest one way to break w
in three parts xyz
such that by repeating(pumping) y
for any number of times we can generate new strings in the language.
correct choice of w
means: w
in language and sufficiently large ≥ P
note : in second point, there may be a chance that even if you breaks w
correctly into xyz
according to formal definition still some new generated strings are not in language. As you did .
And in this situation you are to retry with some other possible choice of y
.
In you chosen string w
= " 0000 " you can break w
such that y = 00
. And with this choice of y
you would always find a new generated string in in Language that is "even number of zeros"
One mistake you are doing in your proof that you are doing for a specific string 0000. You should proof for all w
≥ P . So still your proof is incomplete
Read my this answer IN CONTEXT OF PUMPING LEMMA FOR REGULAR LANGUAGES
In that answer, I have explained that breaking w
into xyz
and pumping y
means finding looping part and repeating looping part to generate new strings in language.
When we proof that some language is regular; then actually we don't know where is the looping part so we try with all possible choices that satisfies pumping lemma's rule 1,2 & 3.
And Pumping lemma says that if language is regular and infinite them there must be a loop in the DFA and every sufficiently large string in language passes through looping part (according to pigeonhole principle ) of DFA (and hence y
can't be null. That's rule-1 in above formal definition).
Think, loop can be at initial position or at end and so x
and z
can be null strings.
But actually we don't know where loop falls in DFA so we try with all possible ways.
To proof a language is regular : You are to proof that for all sufficiently long strings ( w ) in language there is at-least one way ( y ) to generate new strings in the language by repeating looping part any number ( i ) of times.
To proof a language is not regular :You are to find at least one sufficiently long strings ( w ) in language such that there no choice for any way 'y' so that its possible to generate new strings with all possible repetition ( i ).
To proof using Pumping Lemma:
+-------------------------+--------------------------+----------------+--------------+
| | Sufficient large W in L | y | i >=0 |
+-------------------------+--------------------------+----------------+--------------+
| language is regular | For all W (all W can use | At-least one | For all i>=0 |
| | to generate new W' in L) | | |
+-------------------------+--------------------------+----------------+--------------+
| language is NOT regular | Find Any W (at-least 1 | With all (Show | At-least one |
| | W that can't generates | no possible Y | i |
| | new W' in L | exists) | |
+-------------------------+--------------------------+----------------+--------------+
CAUTION: : The Rule always not works to proof 'Weather a Language is Regular?'
Pumping Lemma necessary but not sufficient condition for a language to be regular. A language possible that satisfies these conditions may still be non-regular.
Reference
To proof a language is regular you have some necessary and sufficient conditions for a language to be regular.
Although the accepted answer is complete in its own way, I had to add a few things. I have a very playful way to exploit the pumping lemma to be able to prove that a given language is not a Regular language. Just to have a context to talk about, let me state the lemma:
Pumping Lemma for Regular Languages:
For any regular language L, there exists an integer k.
Such that for all x ∈ L with |x| ≥ k, there exists u, v, w ∈ Σ∗, such that x = uvw, and
(1) |uv| ≤ k
(2) |v| ≥ 1
(3) for all i ≥ 0: u(v^i)w ∈ L
The k is called the Pumping lemma constant
. Let me come straight to the point and show you how to go about proving a language L is not regular.
Now to start the game you need two players here. One is the Reader( R
) and the other is the Adversary( A
).
Input: A language L
The Goal of R
: Somehow prove the language L is not regular by some contradiction.
The Goal of A
: Somehow be prepared enough to face the arguments of R
and do not let him/her create a contradiction.
Now let us start the argument.
A
: The language L is not Irregular because none could show the contradiction using pumping lemma with a certain pumping constant k. (Each language is mapped to only one integer k)
R
: Let me assume what you say. If language L is regular then it must satisfy the conditions of the pumping lemma. So, let me choose a suitable string x ∈ L (|x| >= k), such that it helps me create a contradiction later.
A
: Challenged by the R
, A
tries its best to find at least one suitable partitioning u, v and w of the string x, such that
x = uvw and |uv| <= k and |v| > 0
R
: With any possible partition given by A
, wins the the argument if able to show an integer i >= 0 such that
u(v^i)w ∉ L
Because now the R
has shown that the Language L has at least one string x which doesn't have any partition(u, v, w) such that it satisfies the pumping lemma. The contradiction happened because our assumption that L is regular is FALSE
. Therefore the language L is proven to be not regular.
If the R
is not able to show the above, this is not a Proof of the language being Regular. It just means that L can be a Regular or Irregular language which just happens to satisfy the pumping lemma conditions.
Always remember, the pumping lemma is if
( L
is regular), then
Statements. The vice-versa is not necessarily TRUE
. Although it might be TRUE
in some cases.
Therefore the pumping lemma is useful only if you want to prove that a language is not regular.
(Source: Theory of Computation(NPTEL): Prof. Somenath Biswas(IIT Kanpur)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.