This page assumes you have read the parent Pumping Lemma for CFLs note and got stuck on the notation. Here we build every symbol from the ground up, in an order where each idea leans only on the ones before it. Two symbols the parent leans on heavily — the pumping length p and the variable count b — are only named here; both are fully defined in Section 5 once we have the tree picture to explain them.
Picture it as beads on a wire: each bead is a symbol, the wire read left-to-right is the string.
Figure s01 — what it shows: the string aabbb drawn as five coloured beads on a horizontal wire, with its length ∣w∣=5 called out. It defines string and length visually so "counting beads" becomes literal.
Why we need this: the pumping lemma constantly says things like "∣w∣≥p" (the string is at least p beads long — we define the pumping length p in Section 5) and "∣vy∣≥1" (at least one bead among these pieces). Every one of those is just counting beads.
When the parent note writes w=uvxyz, it is saying: cut the string w into five consecutive pieces named u,v,x,y,z and glue them back — nothing is added or lost, they are just labels for five stretches of the same wire.
Figure s02 — what it shows: the wire cut into five coloured blocks u,v,x,y,z in order, with the two pump pieces v and y flagged by arrows. It defines the five-piece split and marks which pieces get spun.
Why the topic needs it: the loop is written A⇒∗vAy, i.e. "starting from A, after several steps you reach a string that still contains A, with v on its left and y on its right." That is a picture of a variable reproducing itself with extra material around it — the spinnable engine.
Figure s03 — what it shows: a parse tree with root S, the outer pieces u,z, then the same variable A appearing twice on one downward path, with v,x,y below. It pictures the repeated-variable loop that pumping exploits.
Picture doubling: 1 root, up to 2 at the next level, 4, 8, … so height h reaches at most 2h leaves.
Figure s04 — what it shows: three levels of a binary tree with node counts 1,2,4 labelled per level, illustrating the doubling that gives "at most 2h leaves at height h". It justifies why long strings force tall trees.
Why the topic needs it: "Long string (∣w∣≥p) ⇒ more than 2b leaves ⇒ tall tree ⇒ a variable must repeat" is the entire skeleton, and it rides on this doubling bound.
Why it matters here: "A→BC" gives exactly two children, so the parse tree becomes binary — that is what unlocks the clean 2h leaf bound in Section 5, and it also guarantees the upper subtree is strictly bigger than the lower one (giving ∣vy∣≥1).
The diagram below renders (in any Mermaid-aware Obsidian view) as a flowchart whose boxes are the foundations of Sections 1–7 and whose arrows mean "you need the lower idea before the higher one makes sense." Read it bottom-up, following arrows into the final "Pumping Lemma" box; it is literally the reading order of this page. Trace one path at a time: raw strings feed grammars, grammars draw parse trees, CNF makes those trees binary so the doubling bound bites, and pigeonhole then forces the repeat that is the pumping lemma. If any box looks unfamiliar, jump back to its section before reading the parent proof.
If your viewer does not render Mermaid, read the arrow list as plain prerequisites: alphabet/string → pieces and → language → grammar → derivation arrows → parse trees; separately grammar → Chomsky Normal Form → binary-tree height/leaves; then parse trees and CNF both feed binary-tree height/leaves → pigeonhole → Pumping Lemma, with pieces and pushdown automata also feeding the final lemma.
Counts of letters: i the a's, j the b's, k the c's — identical roles for different letters.
What does w=uvxyz mean operationally?
Cut w into five consecutive pieces and glue them back — just labels for five stretches.
What is the middle window and its bound?
The consecutive pieces vxy glued together; the lemma requires ∣vxy∣≤p, so the pumped region is at most p consecutive beads.
Why five pieces for CFLs but three for regular languages?
Grammars branch, dropping repeated material on both left (v) and right (y); regular DFAs repeat only one middle piece.
What is a language L?
A set of strings; w∈L means w is a valid string of L.
What makes a grammar context-free?
Every rule replaces a single variable, independent of surrounding context.
What is the meta-string β?
A placeholder for any string of mixed terminals and variables (a derivation snapshot).
Difference between ⇒ and ⇒∗?
⇒ is one rule step; ⇒∗ is zero or more steps chained.
How do you read the generated string off a parse tree?
Take the leaves (childless bottom nodes) in left-to-right order; that sequence is the string.
Max leaves of a binary tree of height h, and how is height counted?
At most 2h leaves; height = number of edges on the longest root-to-leaf path (a lone node has height 0).
What are b and p?
b is the number of distinct variables; p=2b+1 is the pumping length.
What two rule shapes are allowed in CNF (plus the one exception)?
A→BC and A→a; the only exception is S→ε for the start symbol when ε is in the language.
Why convert to CNF before the proof?
It makes the parse tree binary, unlocking the clean 2h leaf bound and a strict left/right split.
State the Pigeonhole Principle in one line.
More items than boxes forces some box to hold at least two.
In the lemma, what plays "items" and "boxes"?
Items = variable nodes on a long path; boxes = the b distinct variable names.
Recall Ready check
If you can answer every line above without peeking, you are ready for the parent note's derivation. If any felt shaky, reread that section before tackling p=2b+1.