Это устройство, призванное доказать, что данный язык не может принадлежать к определенному классу.
Давайте рассмотрим язык сбалансированных круглых скобок (означающих символы '(' и ')', включая все строки, которые сбалансированы в обычном значении, и ни одну из них, которые нет). Мы можем использовать лемму о накачке, чтобы показать, что это не регулярно.
(Язык - это набор возможных строк. Синтаксический анализатор - это своего рода механизм, который мы можем использовать, чтобы узнать, находится ли строка на языке, поэтому он должен быть в состоянии отличить строку на языке от строки вне язык. Язык является "обычным" (или "контекстно-независимым", или "контекстно-зависимым" или чем-то еще), если есть обычный (или какой-либо другой) синтаксический анализатор, который может его распознать, различая строки на языке и строки не в язык.)
LFSR Consulting предоставила хорошее описание. Мы можем изобразить синтаксический анализатор для обычного языка в виде конечного набора прямоугольников и стрелок, где стрелки представляют символы и прямоугольники, соединяющие их (действующие как «состояния»). (Если это сложнее, то это не обычный язык.) Если мы можем получить строку длиннее, чем количество ящиков, это означает, что мы прошли через одну ячейку более одного раза. Это означает, что у нас есть цикл, и мы можем проходить его столько раз, сколько захотим.
Следовательно, для обычного языка, если мы можем создать произвольно длинную строку, мы можем разделить ее на xyz, где x - это символы, которые нам нужны, чтобы добраться до начала цикла, y - фактический цикл, а z - это то, что мы необходимо сделать строку действительной после цикла. Важно то, что общая длина x и y ограничена. В конце концов, если длина больше, чем количество ящиков, очевидно, что мы прошли через другой ящик, делая это, и поэтому есть цикл.
Итак, в нашем сбалансированном языке мы можем начать с написания любого количества левых скобок. В частности, для любого данного парсера мы можем написать больше левых скобок, чем прямоугольников, и поэтому парсер не может определить, сколько там левых скобок. Следовательно, x - некоторое количество левых скобок, и это фиксировано. y - также некоторое количество левых пар, и оно может увеличиваться бесконечно. Можно сказать, что z - некоторое количество правых скобок.
Это означает, что у нас может быть строка из 43 левых скобок и 43 правых скобок, распознаваемых нашим анализатором, но парсер не может определить это по строке из 44 левых скобок и 43 правых скобок, чего нет в нашем языке, поэтому парсер не может разобрать наш язык.
Поскольку любой возможный обычный синтаксический анализатор имеет фиксированное количество полей, мы всегда можем написать больше левых скобок, чем это, и, согласно лемме о перекачке, мы можем добавить больше левых скобок таким образом, что парсер не может определить. Следовательно, сбалансированный язык скобок не может быть проанализирован обычным синтаксическим анализатором и, следовательно, не является регулярным выражением.