Да, это должно быть конечно. Представьте, что у вас есть этот бесконечный набор возможных совпадений, и ваш вклад есть 011
. Сможете ли вы когда-нибудь отказаться от этого? Вы когда-нибудь закончили матчи, чтобы проверить?
Есть ли язык, который по этому определению не был бы регулярным ? Как насчет набора всех пар программ и входов, так что данная программа останавливается на данном входе?
Теперь, если у вас была программа, которая перечисляла строки на языке в лексикографическом порядке -
Обновить
Чтобы пояснить немного на основе отзывов в комментариях, причина, по которой не все языки этой формы являются регулярными, по определению. Если, например, вы ищете доказательство теоремы Клини, это зависит от того факта, что регулярное выражение должно быть конечным, чтобы доказать, что оно порождает конечный автомат.
Почему мы определяем «обычный» язык таким образом? Поскольку каждый формальный язык является подмножеством строк в алфавите, и каждый набор строк может быть выражен как объединение синглетонов, поэтому, если бы мы назвали любой набор строк «обычным» языком, обычный язык был бы просто синонимом для язык . Это не очень полезное определение, тем более что мы не можем реализовать его на аппаратном или программном уровне. Мы нигде не можем хранить произвольный бесконечный список или строить машину с бесконечным состоянием.
Как я уже говорил, если у вас есть способ перечислить все строки в языке по порядку, вы можете построить решающее значение из этого (принять, когда вы видите эту точную строку, отклонить, если вы встретите строку, которая идет после той, которую вы ищите) и наоборот (для каждой строки по порядку, пропустите ее через решатель и выведите ее тогда и только тогда, когда она принята). Таким образом, если бы мы считали каждый перечисляемый язык регулярным , каждый разрешимый язык был бы «регулярным», и нам потребовался бы новый термин для языков, распознаваемых конечными автоматами и их эквивалентными кодировками в качестве конечных выражений.