The pumping lemma for linear languages #
A linear language L has a constant p such that every w ∈ L with |w| ≥ p
can be written w = u v x y z with v y nonempty, |u v y z| ≤ p (the pumped
pieces and outer pieces are confined to the two ends), and u vⁱ x yⁱ z ∈ L
for all i.
The decisive difference from the context-free pumping lemma is the bound: here
the outer material u v y z is bounded, forcing v to lie near the start of
w and y near its end.
Pigeonhole core. Given a "root" colouring landing in a finite set S, a
monotone "count" with bounded increments starting at 0, and a depth N whose
count is at least S.card * (c+1), there are two depths i < j with the same
root, strictly increasing count, and cnt j ≤ (S.card + 1) * (c + 1).
A derivation C ⇒* β can be performed inside a terminal context p · q.
Iterating a self-embedding derivation C ⇒* v · C · x pumps both ends.
Pumping lemma for linear languages. Every linear language L has a constant
p such that any w ∈ L with |w| ≥ p factors as w = u v x y z with v y
nonempty, the outer material u v y z bounded by p, and u vⁱ x yⁱ z ∈ L for all i.