Pumpovací lemma ( růstové lemma , pumping lemma ; anglicky pumping lemma ) je důležitým tvrzením teorie automatů , které v mnoha případech umožňuje ověřit, zda je daný jazyk automat . Protože všechny konečné jazyky jsou automaty, má smysl provádět tuto kontrolu pouze pro nekonečné jazyky. Výraz „pumpování“ v názvu lemmatu odráží možnost opakovaného opakování nějakého podřetězce v libovolném řetězci vhodné délky v libovolném jazyce nekonečného automatu.
Existuje také růstové lemma pro bezkontextové jazyky , ještě obecnější tvrzení je růstové lemma pro indexové jazyky .
Pro jazyk nekonečného automatu nad abecedou existuje přirozené číslo , takže pro každé slovo délky alespoň existují slova taková, že , a pro každé nezáporné celé číslo je řetězec slovem jazyka .
Zápis v kvantifikátorech:
.Nechť jazyk automatu obsahuje nekonečný počet řetězců a předpokládejme, že je rozpoznán deterministickým konečným automatem se stavy . Pro kontrolu závěru lemmatu zvolíme libovolný řetězec tohoto jazyka, který má délku .
Pokud konečný automat rozpozná , pak je řetězec tímto automatem povolen, to znamená, že v automatu existuje cesta délky od počátečního do jednoho z koncových stavů, označená symboly řetězce . Tato cesta nemůže být jednoduchá, musí procházet přesně stavem, kdežto automat stavy má . To znamená, že tato cesta prochází alespoň dvakrát stejným stavem automatu , to znamená, že na této cestě je cyklus s opakujícím se stavem. Nechť je to opakující se stav .
Rozdělme řetězec na tři části, takže , kde je podřetězec, který přechází ze stavu zpět do stavu , a je podřetězec, který přechází ze stavu do konečného stavu. Všimněte si, že obojí a může být prázdné, ale podřetězec nemůže být prázdný. Pak je ale zřejmé, že automat musí povolit i řetězec , protože opakovaný podřetězec opět sleduje cyklickou cestu od do , stejně jako řetězec a jakýkoli tvar .
Tato úvaha představuje důkaz čerpacího lemmatu.
Další forma tohoto lemmatu, kterou je někdy vhodnější použít k prokázání, že určitý jazyk je neautomatický, pro jazyk nad abecedou je následující – pokud platí:
pak je jazyk neautomatický.
K prokázání, že jazyk je neautomatický, lze také použít skutečnost, že průnik regulárních jazyků je pravidelný. Je tedy problematické přímo aplikovat pumpovací lemma na jazyk pravidelných závorkových struktur v abecedě , ale jeho průnik s jazykem dává jazyk , jehož neautomatickost triviálně vyplývá z pumpovacího lemmatu.