I got this question wrong on my test and was wondering if someone could explain it, showing the steps taken to come to the conclusion. Any help would be appreciated.
In the PL proof for L_neq = {0^i1^j | i < j} given an m-state DFA, someone picks the string 0^(m/2)1^(m/2+1). They then pick y = 0 and show that by pumping, we can arrive at the string 0^(m/2+1)1^(m/2+1) which is outside L_neq. Is this proof correct? Why or why not?
Further, if this proof is wrong, write down a correct proof.
Thanks
When using the pumping lemma, while you are allowed to choose the string to pump (let's call it w), you are not allowed to choose how to split w into three parts xyz. Instead, what you need to do is show that for any way that w could be split into xyz, there is some choice of i such that xyiz such that xyiz ∉ Lneq. So while you are correct that if y = 0 then the string can be taken out of Lneq, you cannot guarantee that y = 0. Instead, you'd need to show that for any choice of y such that |xy| ≤ m and |y| > 0, you can take the string out of the language.
As a hint, try the string 0m1m. Now, for any choice of y, since |xy| ≤ m, you know that y must have the form 0j for some natural number j > 0. Your argument then can be used to show that xyiz is no longer in Lneq.
For another resource on the pumping lemma and how these proofs work, feel free to check out these lecture slides I used earlier this quarter in a theory of computation course. They walk through a few pumping lemma examples, and (importantly) show off the adversarial model for thinking about these proofs.
Hope this helps!