CFG ko CNF mein convert karo jisme b variables hain. Pumping length p=2b+1 choose karo.
Yeh step kyun? CNF parse tree ko binary banata hai, isliye hum tree height se leaf count ko cleanly bound kar sakte hain. p ko strictly greater than 2b lena Step 2 mein zaroori strict inequality guarantee karta hai.
w∈L lo jisme ∣w∣≥p=2b+1 ho, toh ∣w∣>2b. Ek binary parse tree jisme 2b se zyada leaves hain, uski height >b honi chahiye (kyunki height ≤b mein at most 2b leaves hoti hain). Isliye koi root-to-leaf path at least b+1 variable nodes se guzarta hai.
Yeh step kyun? Lambi string ⇒ 2b se zyada leaves ⇒ strictly tall tree. Yeh strict ">2b" exactly wahi reason hai jiske liye humne p=2b+1 set kiya.
Us path mein ≥b+1 variable nodes hain lekin sirf b distinct variables exist karte hain, isliye pigeonhole se path par do nodes par same variableA hai. Do lowest aisi occurrences choose karo.
Yeh step kyun? Lowest pair choose karne se lower subtree chhota rehta hai — isse condition ∣vxy∣≤p milti hai.
UpperA ko substring vxy derive karne do aur lowerA ko substring x derive karne do. Tab poori string split hoti hai w=u(vxy)z=uvxyz, jahan upper A deta hai A⇒∗vAy⇒∗vxy.
Yeh step kyun? Recursive structure A⇒∗vAy exactly woh loop hai jo hum repeat kar sakte hain.
Teeno conditions justify karna:
∣vy∣≥1: CNF mein ek node A→BC do children produce karta hai, toh upper A ka subtree strictly larger hota hai lower A ke subtree se; extra symbols exactly v aur y hain, toh woh dono empty nahi ho sakte. (CNF mein unit/epsilon rules nahi hote jo A⇒A cause karein.)
∣vxy∣≤p: humne do lowest repeated variables choose kiye, toh upper A rooted subtree ki height ≤b+1 hai, isliye at most 2b+1 leaves hain; lowest repeat choose karna isse us bound ke andar rakhta hai jo p set karne ke liye use hui hai (standard treatments p=2b+1 lete hain taaki ∣vxy∣≤p exact ho — key point yeh hai ki lower subtree sirf b par depend karne wale ek constant se bounded hai).
uvixyiz∈L: loop subtree ko dikhaye gaye tarike se repeat/remove karke.
Height ≤b wala binary tree at most 2b leaves hold karta hai; sirf ∣w∣>2b height >b force karta hai aur isliye ek repeated variable, toh hum p=2b+1 set karte hain. :::
Proof game mein p, w, split, aur i kaun choose karta hai?
Adversary p aur split choose karta hai; tum w aur i choose karte ho. :::
∣vxy∣≤p kyun matter karta hai anbncn ke not CFL hone ke liye prove karne mein?
Yeh vxy ko at most do letter blocks touch karne par force karta hai, toh pumping counts unbalance kar deta hai. :::
Kya pumping lemma prove kar sakta hai ki language IS context-free hai?
Nahi — yeh sirf prove karta hai ki language NOT context-free hai (necessary, sufficient nahi). :::
L={anbncn} ke not CFL hone ke liye achi witness string?
w=apbpcp, phir i=2 pump karo. :::
{ww} ke not CFL hone ke liye achi witness string?
0p1p0p1p. :::
Path par do LOWEST repeated variables kyun choose karte hain?
Lower subtree size bound karne ke liye, ∣vxy∣≤p guarantee karne ke liye. :::
Recall Feynman: 12-saal ke bachche ko samjhao
Ek family tree imagine karo jo words banata hai. Agar word bahut lamba hai, tree bahut tall hai, aur kahin neeche jaate waqt ek naam repeat hona hi padega (kitne hi naam hote hain!). Jahan bhi naam repeat hota hai, tumne ek loop dhundh liya — jaise ek verse jo tum 0, 1, 2, ya 100 baar ga sakte ho. Toh language ki har super-long word mein ek part hota hai jise tum repeat kar sakte ho, aur repeat left AUR right dono par ek saath kuch add karta hai (kyunki tree branch karta hai). Agar tumhe ek lambi word milti hai jahan koi bhi repeat rules tode bina add nahi ho sakta, language itni smart hai ki aisi tree se nahi ban sakti — woh not context-free hai.