====== Pumping lemma ======
===== Lemma =====
Nechť //L// je regulární jazyk. Pak existuje //n// ∈ **N** takové, že libovolné slovo //w ∈ L// délky alespoň //n// lze psát ve tvaru //w = xyz//, kde |//xy//| ≤ //n//, //y// ≠ //ε// a //xyiz ∈ L// pro každé //i// ∈ **N**0.
===== Šablona =====
Tohle nedokazuje, že by jazyk //L// byl regulárním (to pumping lemma stejně neumí)! Jen usnadňuje důkaz že jím není.
Nechť //n// je libovolné.
Volíme //w// = FIXME náležící //L//, platí |//w//| ≥ //n//.
Pro každé //x//, //y//, //z// náležící Σ* existuje //w// = //xyz//, |//xy//| ≤ //n//, //y// ≠ //ε// platí:
* //x// = FIXME
* //y// = FIXME
* //z// = FIXME
Pro //i// = FIXME platí: //xyiz// = FIXME ∉ //L// protože, FIXME.
Z pumping lemmy plyne, že //L// není regulární.
My volíme //w// (musí záviset na //n//) a pumpovací konstantu //i// (//i// ≠ 1). Rozdělení na //xyz// volí "nepřítel".
===== Příklad =====
//L// = {//aibja2i// | 0 ≤ //i//, 0 ≤ //j// ≤ 5}
Nechť //n// je libovolné.
Volíme //w// = //anb4a2n// náležící //L//, platí |//w//| ≥ //n//.
Pro každé //x//, //y//, //z// náležící Σ* existuje //w// = //xyz//, |//xy//| ≤ //n//, //y// ≠ //ε// platí:
* //x// = //am//
* //y// = //an−m//
* //z// = //b4a2n//
Pro //i// = 2 platí: //xyiz// = //a2n−mb4a2n// ∉ //L// protože, //2n − m ≠ 2n//.
Obdobně to nebude platit ani pro libovolná jiná rozdělení //x//, //y//, //z//.
Z pumping lemmy plyne, že //L// není regulární.