the pumping lemma game
Using the pumping lemma to prove non-regularity is best pictured as a two-player game, because the lemma is a chain of 'for all ... there exists ... for all' quantifiers, and proving its contrapositive means winning that game as the challenger. You are trying to show NO pumping length can possibly work; an imaginary adversary defends the claim that the language is regular. If you have a forced win for every choice the adversary makes, the language is not regular.
The moves, in order: (1) The adversary picks a pumping length p — you must beat ANY p, so treat p as an arbitrary unknown. (2) YOU pick a single string w in the language with |w| ≥ p, chosen cleverly so its structure is rigid (for a^n b^n the killer choice is w = a^p b^p). (3) The adversary splits w = xyz obeying |y| ≥ 1 and |xy| ≤ p — but since |xy| ≤ p and w starts with p a's, y must consist only of a's, so the adversary has no good options. (4) YOU pick a pump count i that breaks membership: pumping i = 2 turns a^p b^p into a^{p+|y|} b^p, which has more a's than b's, so it is NOT in the language. Contradiction; the language is not regular.
The two crucial discipline points are these: you do NOT choose p (the adversary does, so your argument must survive every p), and you DO choose w and i (so pick the most constrained string you can, and the pump count that most obviously breaks it). Mixing these up — choosing your own p, or letting the adversary choose w — is the single most common way a pumping proof goes wrong.
Prove a^n b^n is not regular. Adversary gives p. You pick w = a^p b^p. Any split with |xy| ≤ p has y = a^k for some k ≥ 1. You pump to i = 0 (or i = 2): x y^0 z = a^{p-k} b^p has fewer a's than b's, so it is not in the language. You win for every p, so it is not regular.
Adversary chooses p and the split; you choose the string and the pump count.
Winning the game proves NON-regularity only; you cannot 'lose' your way into proving a language IS regular. If your chosen string can be pumped no matter what, that just means you picked a weak string — try a more constrained one or switch to Myhill-Nerode.