====== 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í.