Память как мера расстояния до пола

Глава 15.1 провела центральный разрез вычисления: ограниченная остановка разрешима (Element-сторона), безграничная — role-limit. Но между разрешимым полом и неразрешимым верхом нет голой стены: пространство между ними градуировано, и параметр градуировки — память.

Наша система читает это так:

сколько памяти вправе занять вычисление — это и есть мера того, как далеко оно стоит от Element-пола.

Фиксированная конечная память — сам пол: всё, что распознаётся ею, разрешимо. Каждый добавленный ресурс памяти — стек, ограниченная лента, неограниченная лента — ступень вверх, к role-limit-верху (halting, 15.3). Эта глава кладёт пол (конечный автомат), находит его потолок (стена-голубятня), делает один шаг вверх конкретно (язык и порождающая его грамматика) и затем прочитывает всю иерархию Хомского как один градиент Element / role-limit, размеченный памятью — формализуя нижнюю ступень и читая всю лестницу как градиент.

Конечный автомат — Element-пол

Конечный автомат есть конечное множество состояний , переход , предикат принятия и стартовое состояние. Распознавание слова — это прочесть его символы по одному, ведя состояние по . Решающее здесь — слово конечное: состояний конечно, и это фиксированная конечная память; прогон завершается за шагов; вопрос «принимает ли автомат ?» разрешим — прогнать и прочитать бит принятия.1

Это и есть Element-пол вычисления: конечно-актуальное, терминирующее, разрешимое, 0-аксиомное. Язык регулярен, когда его распознаёт какой-нибудь конечный автомат — то есть когда конечной памяти достаточно. Пол ведёт себя как добротный Element-класс: регулярные языки замкнуты относительно дополнения, пересечения и объединения (последние два — прямым произведением автоматов, где память есть пара состояний). Никакой тени неразрешимости: вся трудность придёт ровно тогда, когда конечной памяти перестанет хватать.

Лемма о накачке: стена конечной памяти

У пола есть потолок, и причина его — чистая голубятня. Пусть у автомата ровно состояний. Прогоним достаточно длинное слово: среди не менее чем посещённых состояний два обязаны совпасть — какое-то состояние посещается дважды. Между двумя визитами автомат прошёл петлю, вернувшую его в то же состояние; а петлю можно повторить («накачать») сколько угодно раз, и автомат всякий раз окажется в том же конечном состоянии — значит, накачанные слова все вместе либо принимаются, либо отвергаются.2

Читается это прямо: конечная память не умеет считать без границы — она вынуждена зацикливаться. Свойство накачки не трюк, а подпись ограниченной памяти (голубятня по состояниям). И оно размечает край пола: всякий язык, требующий различать неограниченно много «счётов», лежит за этим краем.

Язык за стеной; первый шаг вверх — стек

Свидетель за стеной — язык : букв , затем букв . Чтобы его принять, машина обязана проверить, что число равно числу , то есть сосчитать — а не ограничено. Конечной памяти не хватит. Доказывается это безусловно, без всякой «длины накачки»: для любого автомата с любым конечным прогоним префиксы ; по голубятне два разных префикса () приводят в одно и то же состояние — и тогда автомат не различает и :

Поэтому ни один конечный автомат не распознаёт .3 Здесь — расширенный переход (прогон по слову).

Важна относительность: есть role-limit по отношению к конечной памяти, а не абсолютно. Добавим один ресурс — стек (память «последним вошёл — первым вышел») — и считать уже можно: класть метку на каждом , снимать на каждом , принять, если стек опустел ровно. И действительно, контекстно-свободен — он порождается грамматикой

В нашей системе эта грамматика записана как индуктивный предикат и проверена в обе стороны: она порождает ровно .4

Так делается доказанная ступень: . Язык лежит в верхнем классе (его порождает контекстно-свободная грамматика), но доказуемо не в нижнем (DFA нет) — настоящее строгое включение, проверенное машинно (0 аксиом). Характеризация контекстно-свободных через магазинный автомат — стандартное чтение, отдельно не формализованное.

Лестница Хомского как градиент Element / role-limit

Сложив ступени, получаем лестницу, где каждая ступень добавляет память:

КлассПамятьМесто в градиенте
регулярныеконечное управлениеElement-пол: членство разрешимо
контекстно-свободные стекдоказанная ступень (через )
контекстно-зависимые ограниченная лентаярус выше (LBA; не формализован)
рекурсивно-перечислимыеполная лентаверх: членство сводится к остановке (полуразрешимо; 15.3)

В обычных учебниках иерархия Хомского — таксономия форматов грамматик. В нашей системе она один градуированный градиент Element / role-limit, и параметр градуировки — память. Низ — разрешимый Element-пол; верх — halting role-limit; каждая ступень добавляет ресурс памяти и поднимается по градиенту. «Насколько неразрешимо для данного класса памяти» «как далеко над полом». Иерархия оказывается тонкой структурой центрального разреза 15.1: между «ограниченно-разрешимо» и «безгранично-role-limit» лежит не стена, а градуированная лестница.

Честная граница яруса. Машинно проверён нижний ярус (0 аксиом): разрешимость пола (membership_decidable), его замкнутость, стена-голубятня, DFA-нерегулярность и первая строгая ступень . Остальная лестница (контекстно-свободныеконтекстно-зависимыерекурсивно-перечислимые), эквивалентность Клини (регулярные выраженияDFA) и характеризация контекстно-свободных магазинным автоматом — стандартное математическое чтение, отдельно не формализованы; неразрешимость верха (REhalting) — это диагональ 15.3.

Разбор E/R/R: лестница как градиент ролей

Правила (L5). Упорядоченный переход (шаг автомата) и правила порождения грамматики () конституируют язык; стена-голубятня — производное правило, размечающее край пола.

Роли (L4). Память есть роль: конечное управление, стек, ограниченная лента, полная лента — ресурсы-роли, которые вычисление вправе нести. А класс языка (регулярный, контекстно-свободный, …) — роль-ярус иерархии: место, которое язык занимает в градиенте.

{

Элементы (L1P4). Конкретные слова, индуктивная грамматика CFG_anbn, конкретные автоматы, конечные прогоны. Не элемент: конечный автомат для — он реифицировал бы неограниченный счёт в фиксированную память (голубятня запрещает).}

КомпонентЧто фиксируетE/R/R-категория
переход ; правила грамматики ; стена-голубятняконституцию и край языкаПравило (L5)
память (управление / стек / лента); класс языка как ярусресурс и место в градиентеРоль (L4)
слова; грамматика CFG_anbn; автоматы; прогоныконечно-актуальные носителиЭлемент (L1P4)

Диагностика P4. Лестница есть градиент role-limit’ов: «чего ступень не может» есть role-limit относительно её памяти; пол — Element (разрешим); подъём — добавление памяти — приближение к абсолютному role-limit (halting). В частности, — не абсолютный role-limit, а role-limit относительно конечной памяти: добавь стек — и он становится Element следующего яруса (отсюда осторожность: нерегулярное невычислимое). Требовать от конечной памяти распознать — значит реифицировать role-limit в Element-пол: смешение уровней, которое запрещает голубятня.

Что глава подготовила

Пол положен (конечная память — разрешимое членство), потолок найден (голубятня / накачка), первая ступень пройдена конкретно ( порождается грамматикой , но не распознаётся никаким DFA — значит ), и вся иерархия Хомского прочитана как один градиент Element / role-limit, размеченный памятью. Весь доказанный слой главы 0-аксиомен и машинно проверен: DFA / NFA, регулярный Element-пол, накачка / голубятня, нерегулярность и первая строгая ступень. Верхние ярусы названы честно как стандартное чтение, а не выданы за проверенное.

Самый верх лестницы — членство в рекурсивно-перечислимом языке — полуразрешимо и сводится к остановке (): это ровно тот role-limit, чей двигатель — диагональ неподвижной точки. Глава 15.3 открывает этот двигатель: одна диагональ, ведущая halting, Райса, Кантора и Колмогорова.



Часть: Часть XV. Вычисления и граница финитизации · Том: «Математика»

Навигация: ← Глава 1. Вычисление как финитизация · Глава 3. Одна диагональ: halting, Райс, Кантор, Колмогоров →

Footnotes

  1. Механика конечных автоматов — src/stdlib/Automata.v (DFA/NFA). Element-пол — src/cs/RegularElementFloor.v (9 Qed, 0 аксиом): run (прогон автомата по слову), accepts (принятие), membership_decidable (разрешимость членства), complement_spec; замкнутость по пересечению и объединению — через произведение автоматов (dprod, run_prod, intersection_spec, union_spec). ↩

  2. src/cs/PumpingRoleLimit.v (11 Qed, 0 аксиом): повторно посещённое состояние есть петля (loop_pump), накачка сохраняет конечное состояние (pump_preserves); язык — word_a, word_b, In_L; счётчики букв cF/cT и баланс anbn_balanced (если , то ). ↩

  3. Безусловное отсутствие DFA — src/cs/PumpingPigeonhole.v (4 Qed, 0 аксиом): голубятня на состояниях-префиксах (gpref, gpref_collision) даёт no_dfa_for_ anbn_ unconditional. ↩

  4. src/cs/ChomskyHierarchy.v (8 Qed, 0 аксиом): CFG_anbn (правила ), CFG_anbn_iff_In_L (грамматика порождает РОВНО ), regular_recognized (формально: «некоторый DFA распознаёт»), regular_ subsetneq_ context_free (строгое включение). ↩