К содержанию
Фонтум Формальная логика Урок 20 / 24 Все уроки

Главная · Курсы · Формальная логика · Программа курса · Модуль VI. Что можно и чего нельзя · урок 20 из 24

Разрешимость

Для высказываний программа есть, для кванторов её не существует. И это доказано

Разрешимость означает, что есть алгоритм, который за конечное время отвечает «следует / не следует» для любой формулы. Логика высказываний разрешима: таблица истинности и есть такой алгоритм. Логика предикатов неразрешима. Это доказали Чёрч и Тьюринг в 1936 году, и это предел, а не недоработка.

Open Logic Project, разделы о разрешимости. Чёрч и Тьюринг, 1936. Кук, 1971 · 24 мин · обновлено 06.09.2026

После урока вы сможете

  • Понимать, что такое разрешающая процедура и почему логика высказываний разрешима
  • Считать цену перебора: каждая новая переменная удваивает таблицу
  • Читать «неразрешима» как «доказано, что способа нет», а не «пока не придумали»
  • Объяснять полуразрешимость: ответ «да» придёт обязательно, ответ «нет» может не прийти

Аня написала программу: на вход она берёт аргумент логики высказываний, а на выход даёт «следует» или «не следует». Устроена программа просто: она строит таблицу истинности и ищет строку, где все посылки истинны, а заключение ложно. Нашла, значит не следует. Не нашла, значит следует.

Боря просит расширить программу на кванторы: «Все», «некоторые», модуль V. Логика ведь та же самая, только богаче. Просьба звучит скромно, а упирается она в один из главных результатов логики прошлого века.

Ответ придётся дать неприятный: такой программы не существует. Не «Аня не справится». Не «пока никто не придумал». Доказано, что её нет и быть не может, и доказано в 1936 году, двумя людьми независимо друг от друга. Этот урок про границу между «машине поручить можно» и «машине поручить нельзя», а ещё про то, во что обходится даже разрешённая сторона границы.

Логика высказываний: программа есть

Начнём с хорошей половины. Разбор по шагам: вот что делает программа Ани, и ни один шаг не пропускаю.

Шаг 1. Собрать все буквы, встречающиеся в посылках и заключении. Пусть их n.
Шаг 2. Выписать все строки, то есть все наборы значений этих букв. Строк ровно 2ⁿ.
Шаг 3. В каждой строке посчитать значение каждой посылки и заключения, идя по столбцам, от простого к сложному.
Шаг 4. Просмотреть строки и поискать провальную: все посылки истинны, заключение ложно.
Шаг 5. Нашли, значит ответ «не следует», и строка предъявляется как контрпример. Не нашли, значит ответ «следует».

Заметьте, чего в этом описании нет: ни изобретательности, ни удачи, ни догадки. Каждый шаг делается механически, а число шагов известно заранее, и работа кончится обязательно, каким бы ни был вход. Способ, устроенный так, называется разрешающей процедурой, а свойство задачи, для которой такой способ существует, называется разрешимостью. Итог первой половины урока короткий: логика высказываний разрешима.

Заодно тут окончательно закрыта асимметрия из урока 3: раньше контрпример умели искать, но не умели доказывать, что его нет. Теперь умеют. Перебрали все строки, значит перебрали все случаи, и отсутствие провальной строки есть доказательство, а не отчёт о неудачных поисках. Стоит отметить и то, чего программе не требуется: она не знает, что такое дождь, экзамен и Мурка. Ей хватает устройства формулы, а устройство и есть то единственное, что проверяет логика. Урок 2 объявил это словами, а здесь оно стало программой.

Цена: каждая переменная удваивает таблицу

Разрешимость есть обещание, что ответ будет, а про то, когда он будет, обещания нет. Считаем: строк 2ⁿ.

Десять переменных дают 1024 строки. Двадцать дают больше миллиона. Тридцать дают больше миллиарда. Смотрите на рост: прибавили десять переменных и получили работы примерно в тысячу раз больше.

Это единственное место в курсе, где большое число не признак неудачного примера, а сам предмет разговора. На бумаге предел наступает раньше, чем кажется: таблица на пять переменных занимает 32 строки, и страница уже занята плотно. Отсюда и вырос модуль IV: вывод в двенадцать шагов помещается на пол-листа и заменяет таблицу, которую никто не станет выписывать.

Разница между двумя способами не в надёжности: оба дают правильный ответ, и урок 18 объяснил почему. Система корректна и полна, значит выводимое и следующее совпадают. Разница в цене. Таблица не требует умения и требует времени. Вывод требует умения и экономит время.

переменныхстрок в таблице3810102420больше миллиона30больше миллиардаПолоски не в масштабе: миллиард рядом с восьмёркой не нарисовать.В этом и весь смысл картинки.
Рост таблицы: десять лишних переменных дают работы примерно в тысячу раз больше

Задача о выполнимости

У той же таблицы есть близкий родственник, и вопрос задают чуть иначе: не «следует ли», а «бывает ли», то есть существует ли строка, в которой формула истинна? Урок 9 называл такие высказывания выполнимыми: в столбце есть хотя бы одна истина, значит, высказывание выполнимо. Это задача о выполнимости, по-английски SAT. По существу работа та же, и цена та же: строк 2ⁿ.

Связь между двумя вопросами прямая: аргумент неправилен ровно тогда, когда бывает случай с истинными посылками и ложным заключением. А это и есть выполнимость набора из всех посылок и отрицания заключения. Одна задача в двух видах.

В 1971 году Стивен Кук доказал для неё NP-полноту, и задача о выполнимости стала первой задачей, для которой это доказано. Что такое NP-полнота, объясняет теория сложности, и разговор этот выходит далеко за рамки курса. Здесь достаточно одного наблюдения: место, где логика высказываний упирается в цену перебора, оказалось важным далеко за пределами логики.

Логика первого порядка: программы не существует

Теперь плохая половина.

Вопрос ставится так же: есть ли механический способ определить, следует ли φ из Γ, когда в языке есть кванторы? Ответ укладывается в два слова: способа нет. Доказали это в 1936 году Чёрч и Тьюринг, независимо друг от друга.

Слова «способа нет» надо читать буквально. Утверждение сделано не о тогдашних машинах и не о нынешних, а обо всех возможных механических способах сразу, включая те, которых никто ещё не придумал. Заметьте, насколько такое утверждение непривычно по виду. Обычно доказывают, что нечто существует: вот способ, вот он работает. Здесь доказано обратное: перебрать все возможные программы нельзя, значит рассуждать о них приходится разом, и это отдельная работа.

Почему знакомый приём здесь не годится, видно и без доказательства: таблица истинности для кванторов не строится. В логике высказываний случаев конечное число: 2ⁿ строк, и все они выписываются, а для кванторов пришлось бы перебирать наборы объектов, а их число ничем не ограничено. Это ещё не доказательство неразрешимости: доказательство Чёрча и Тьюринга устроено иначе и в курс не входит. Но видно, почему простой ход не срабатывает.

Полуразрешимость

И всё-таки не всё потеряно: кое-что машине поручить можно, и устроено это «кое-что» непривычно. Логика первого порядка полуразрешима. Разберём медленно, потому что с первого раза не укладывается.

Пусть φ действительно следует из Γ, тогда машина рано или поздно найдёт вывод. Почему найдёт, уже известно из урока 19. Логика первого порядка полна: если следует, то выводимо, значит, вывод существует. А раз он существует, его можно найти перебором. Выводов данной длины конечное число: машина перебирает сначала все короткие, потом всё более длинные, и нужный рано или поздно встретится.

Теперь другой случай. Пусть φ из Γ не следует, тогда вывода нет, и перебор не кончится никогда. Машина будет работать, работать и работать, а сказать «я всё перебрала, вывода нет» она не сможет: перебирать ей всегда есть что дальше. Вот и вся асимметрия. Ответ «да» приходит обязательно, хотя неизвестно когда. Ответ «нет» может не прийти вовсе.

И самое неприятное: глядя на работающую машину, нельзя понять, в каком мы случае. Она ещё ищет или искать нечего? По виду это одно и то же. Практический вывод отсюда простой и невесёлый: машине можно поручить поиск доказательства, а вердикт «доказательства не существует» поручить ей нельзя.

на заметкуАсимметрия вернулась, но в другую сторону

В уроке 3 было так: найденный контрпример опровергает окончательно, а ненайденный не доказывает ничего. Здесь всё зеркально: найденный вывод подтверждает окончательно, а ненайденный не опровергает ничего. Общее у двух случаев одно: сильным оказывается результат, который можно предъявить, а слабым тот, который состоит из неудачи поиска. Разница в том, что для логики высказываний эту слабость удалось снять перебором, а для кванторов снять нельзя.

Ключи в тёмной комнате

Аналогия. Похоже на поиск ключей в тёмной комнате: если ключи там, рано или поздно нащупаешь. Если их там нет, будешь искать бесконечно, и по самому поиску одно от другого не отличишь.

Где аналогия ломается. В комнате конечное число мест, и, обыскав все, можно честно объявить: ключей нет. С выводами так не выйдет: их бесконечно много, и «обыскать все» нельзя никогда. Именно поэтому отрицательного ответа не бывает, а вовсе не потому, что машина недостаточно старается.

Если унести из аналогии одну комнату, останется впечатление, что дело в терпении. Дело не в терпении, и это главное, что стоит запомнить.

Три вопроса об одной системе

К одному и тому же набору правил можно подойти с тремя разными вопросами. Их стоит развести: путают их постоянно.

Первый: не врёт ли система? Всё ли выводимое действительно следует. Это корректность, урок 18.

Второй: не упускает ли система? Всё ли следующее выводимо. Это полнота, тот же урок.

Третий: можно ли поручить проверку машине? Есть ли способ получить ответ за конечное число механических шагов. Это разрешимость, урок сегодняшний.

Первые два вопроса про соотношение двух знаков, ⊢ и ⊨, а третий совсем другого рода: он про существование процедуры. Связи между ними нет, и лучше всего это видно на примере. Логика первого порядка полна и при этом неразрешима: одно свойство есть, другого нет, значит, из полноты разрешимость не вытекает. Логика высказываний имеет оба свойства сразу, и отсюда легко решить, будто это одно и то же. Не одно.

Где интуиция даёт другой ответ

Слово «неразрешима» интуиция читает как «пока не разрешили». Прочтение неверное. Разница та же, что между «я не нашёл» и «его не существует» из урока 3, только на этот раз доказана вторая, сильная часть. Чёрч и Тьюринг доказали не то, что подходящей программы нет сегодня. Они доказали, что её не может быть никогда.

Такие утверждения встречаются реже, чем кажется, и стоят дорого. Обычно наука говорит «не нашли». Здесь сказано «нет», и это доказано.

Вторая ловушка того же рода: разрешимость легко спутать с практичностью. Логика высказываний разрешима, и при этом таблица на тридцать переменных содержит больше миллиарда строк. Разрешимость обещает конечное число шагов, но не обещает, что их немного, и вообще ничего не говорит о том, дождётесь ли вы ответа.

Что можно и чего нельзя: итог модуля

Соберём модуль в короткий список.

Логика высказываний. Полна. Разрешима: таблица всегда даёт ответ. Цена составляет 2ⁿ строк.

Логика первого порядка. Корректна и полна: теорема Гёделя 1929/30 года. Неразрешима: Чёрч и Тьюринг, 1936. Полуразрешима: вывод найдётся, если он есть.

Формальная арифметика. Неполна, если она непротиворечива и эффективно аксиоматизируема: теорема Гёделя 1931 года.

Три строчки, и в них весь ответ на вопрос «что можно и чего нельзя». Заметьте, что ни одна из них не звучит как «логика бессильна». Каждая говорит точнее: вот эта работа делается механически, вот эта не делается, а вот у этой есть цена. Разница между «бессильна» и «вот граница, и вот где она проходит» и есть разница между разговором и доказательством.

Что дальше

Модуль закончен. Границы очерчены, и очерчены доказательствами, а не впечатлениями. Дальше курс возвращается к живой речи. Урок 21 показывает эксперимент, где одну и ту же по устройству задачу решают верно то 19 человек из ста, то 72 из ста, в зависимости от того, о чём в ней говорится. Оттуда и берётся ответ на вопрос из урока 1: зачем формальная запись человеку, который и так умеет рассуждать.

Откуда это и кто доказал

Алонзо Чёрч и Алан Тьюринг, независимо друг от друга1936Логика первого порядка неразрешима: общего механического способа определить, следует ли φ из Γ, не существует. Утверждение относится ко всем возможным механическим способам сразу.
Стивен Кук, NP-полнота задачи о выполнимости1971Задача о выполнимости (SAT) стала первой задачей, для которой доказана NP-полнота. Логика высказываний оказалась местом, откуда выросла целая область теории сложности.
Курт Гёдель, теорема о полноте логики первого порядка1929Всякое утверждение, истинное во всех моделях, доказуемо в исчислении первого порядка. Отсюда и берётся полуразрешимость: если следование есть, вывод существует, а значит его можно найти перебором.

Ловушки и теоремы

интуиция подводитЛогика первого порядка неразрешима, значит, подходящую программу пока не придумали.

Естественное чтение «пока не придумали» неверно. Чёрч и Тьюринг в 1936 году доказали, что общего механического способа не существует вовсе. Утверждение сделано не о тогдашних машинах и не о нынешних, а обо всех возможных механических способах сразу. Это редкий случай, когда доказано именно «нет», а не «не нашли».

интуиция подводитМашина ищет вывод и до сих пор не нашла, значит, следования нет.

Логика первого порядка полуразрешима, и асимметрия здесь полная. Если следование есть, вывод найдётся рано или поздно. Если следования нет, перебор не кончится никогда, и объявить «я всё перебрала» машина не может. Работающая машина в двух этих случаях выглядит одинаково, поэтому по факту работы не заключают ничего.

это разные вещиРазрешимая задача есть та, которую можно решить на практике.

Разрешимость означает только, что ответ будет получен за конечное число шагов. Вопрос о том, сколько именно шагов, остаётся отдельным. Логика высказываний разрешима, и при этом таблица на тридцать переменных содержит больше миллиарда строк. Ценой перебора занимается теория сложности. Отсюда и NP-полнота задачи о выполнимости, доказанная Стивеном Куком в 1971 году.

доказаноМеханического способа определять следование в логике первого порядка не существует.

Доказали Чёрч и Тьюринг в 1936 году, независимо друг от друга, и сказано это не о тогдашних машинах, а обо всех возможных механических способах сразу, включая непридуманные. Почему знакомый приём не годится, видно и без доказательства: таблица для кванторов не строится, наборы объектов ничем не ограничены. Граница у теоремы своя, и она не «ничего нельзя»: логика первого порядка полуразрешима. Если следование есть, вывод существует по теореме о полноте и найдётся перебором выводов по возрастающей длине. Если следования нет, перебор не кончится никогда, и по работающей машине эти два случая не различить. Поэтому машине можно поручить поиск доказательства, а вердикт «доказательства не существует» поручить нельзя.

Термины

разрешимостьdecidability
Свойство задачи: для неё существует механический способ, дающий ответ за конечное число шагов при любом входе. Логика высказываний разрешима, а логика первого порядка неразрешима.
разрешающая процедураdecision procedure
Способ решения задачи, в котором каждый шаг делается механически, а число шагов известно заранее. Для логики высказываний это построение таблицы истинности и поиск строки-провала.
неразрешимая задачаundecidable problem
Задача, для которой доказано, что общего механического способа решения не существует. Не «способ пока не найден»: утверждение относится ко всем возможным способам сразу.
полуразрешимостьsemi-decidability
Свойство задачи: положительный ответ машина рано или поздно находит, отрицательный может не найти никогда. Логика первого порядка полуразрешима: если следование есть, вывод отыщется перебором.
задача о выполнимостиsatisfiability problem, SAT
Вопрос о том, существует ли строка таблицы, в которой формула истинна. Первая задача, для которой доказана NP-полнота (Стивен Кук, 1971).
полнота системы выводаcompleteness of a proof system
Свойство набора правил: всё, что следует, в системе выводимо. Записывается «если Γ ⊨ φ, то Γ ⊢ φ». Про истину саму по себе ничего не обещает.
перебор случаевexhaustive check
Способ доказать отсутствие контрпримера: выписать все мыслимые случаи и убедиться, что провального среди них нет. Возможен, только когда случаев конечное число.

Практикум · Измерить цену перебора и поймать полуразрешимость

Пятнадцать минут с часами и бумагой. Результат составят два числа и одна честная запись о том, чего вы не знаете.

  1. Возьмите любую формулу на три переменные и выпишите её таблицу целиком, восемь строк. Засеките время и запишите, сколько минут ушло.
  2. Умножьте это время на 128. Во столько раз больше строк (1024) даёт формула на десяти переменных. Запишите результат в часах.
  3. Умножьте полученное ещё на тысячу: это двадцать переменных, больше миллиона строк. Теперь цена разрешимости лежит у вас на бумаге в виде числа.
  4. Возьмите аргумент с кванторами из модуля V и заведите таймер на десять минут. Стройте вывод, пока время не выйдет.
  5. Запишите итог честно. Вывод найден, значит следование есть. Вывод не найден, значит не известно ничего. Вторая запись и есть полуразрешимость, прожитая руками.

Вопросы для самопроверки

Вопрос 1

Что означает «логика высказываний разрешима»?

  • Что любой её аргумент правилен
  • Что для неё есть механический способ, дающий ответ за конечное число шагов при любом входе
  • Что её таблицы всегда помещаются на страницу: число строк растёт медленно, и перебор остаётся обозримым
  • Что всякое её утверждение доказуемо
Вопрос 2

Сколько строк в таблице для формулы на тридцать переменных и что из этого следует?

  • Тридцать строк, и перебор всегда дёшев
  • Около тысячи строк, и таблица остаётся практичной
  • Больше миллиона строк, и это доказывает неразрешимость логики высказываний
  • Больше миллиарда строк, и это показывает: разрешимость и практичность не одно и то же
Вопрос 3

Что именно доказали Чёрч и Тьюринг в 1936 году?

  • Что общего механического способа проверять следование в логике первого порядка не существует
  • Что такой способ существует, но работает слишком долго: на технике тридцатых годов перебор не удавалось довести до конца
  • Что логика первого порядка неполна
  • Что задача о выполнимости NP-полна
Вопрос 4

Логика первого порядка полуразрешима. Что это значит?

  • Что ответ верен примерно в половине случаев
  • Что машина решает половину задач сама, а вторую половину оставляет человеку: именно этот дележ работы и заложен в приставку «полу-»
  • Что если следование есть, машина рано или поздно найдёт вывод, а если следования нет, поиск может не кончиться никогда
  • Что ответ получается за половину шагов по сравнению с таблицей
Вопрос 5

Программа два часа ищет вывод и не находит. Что из этого следует?

  • Следования нет
  • Следование есть, но вывод слишком длинный
  • Аргумент неправилен, и строку-контрпример можно предъявить: раз за два часа вывод не нашёлся, перебор строк укажет провал
  • Ничего: и при наличии следования, и при его отсутствии работающая программа выглядит одинаково

Ответы и разбор открываются в самопроверке урока: она считает результат и отмечает урок пройденным. Пройти самопроверку.

Что читать

  • Open Logic Project, разделы о разрешимости и вычислимости: Открытый учебник по металогике под лицензией CC BY 4.0. Там доказательство неразрешимости дано целиком. Чтобы его читать, понадобится сначала разобраться, что такое вычислимая функция.
  • Open Logic Project, разделы о разрешимости: Обе стороны цены рядом: механический перебор и путь, который надо искать. Полезно перечитать именно теперь, когда видно, зачем в курсе понадобились оба способа.
Все курсы и разделы школы
Фонтум

Открытая школа: университетские программы и практикумы на русском. Целиком, бесплатно, без регистрации.

Курс «Формальная логика»

ВАШ СЛЕДУЮЩИЙ ВОПРОС

Что хотите понять?