Consider the language L = {0i1j2j33i |
i and j are ≥ 1}. You can show L is context free. It turns out Half(L) is not
context free, but to prove it, it helps to intersect first with a regular language.
Remember that if L were a CFL, then L intersected with any regular language would
also be a CFL. Added 5/5: Actually, if you are clever about how you select z, you
can use the pumping lemma directly on Half(L). You do not have to intersect with a regular
language first.