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

Главная · Курсы · Формальная логика · Программа курса · Модуль IV. Вывод · урок 10 из 24

Натуральный вывод

Таблица выносит приговор, вывод показывает дорогу

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

forall x: Calgary, гл. 15 «The very idea of natural deduction». Генцен, 1934/35 · 22 мин · обновлено 06.09.2026

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

  • Считать, во что обходится проверка таблицей при росте числа букв
  • Читать вывод: номер строки, формула, правило и ссылки
  • Различать ⊢ («выводимо в системе») и ⊨ («следует по смыслу»)
  • Понимать, что даёт вывод сверх ответа «да» или «нет»

На доске формула, и в ней десять разных букв, а вопрос к ней простой: бывает ли она ложной? Способ ответить у нас уже есть: выписать таблицу истинности и просмотреть все строки подряд. Метод честный и не требует ни капли изобретательности.

Строк будет 1024.

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

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

Цена перебора

Посчитаем рост честно, на маленьких числах. Одна буква даёт два случая: истинна или ложна. Добавили вторую, и каждый прежний случай раздвоился, стало четыре, а третья буква даёт восемь. Правило простое: n букв дают 2ⁿ строк, где 2ⁿ читается «два в степени n».

Числа отсюда выходят такие. Четыре буквы дают 16 строк, это ещё лист бумаги. Десять букв дают 1024 строки, двадцать больше миллиона, тридцать больше миллиарда. Двадцать условий в расписании смен или в договоре встречаются постоянно, и это не выдумка для устрашения.

Возражение напрашивается: пусть считает машина. Машина и правда считает быстро, и до какого-то размера это работает. Только вопрос «выполнима ли формула» и есть та самая задача, на которой Стивен Кук в 1971 году впервые доказал NP-полноту. Что стоит за этим словом, объясняет теория сложности, и в курс этот разговор не входит. Урок 20 назовёт результат и на том остановится. Здесь достаточно одного: способа, который был бы быстрым сразу для всех формул, никто не предъявил.

на заметкуЧисло случаев растёт быстрее, чем кажется

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

Второй довод: таблицы кончаются

Есть неприятность посерьёзнее размера. В модуле V появятся слова «все» и «некоторые», а логика высказываний их не видит вовсе: «все люди смертны» остаётся для неё одной нерасчленимой буквой. Когда эти слова станут видимыми, случай перестанет быть строчкой из И и Л: случаем станет целый мир, набор предметов и то, какими свойствами они обладают.

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

Третий довод: путь вместо приговора

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

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

В нём видно место поломки. Если в выводе ошибка, она сидит в конкретной строке, и на эту строку можно показать пальцем. Таблица на вопрос «где именно я не прав» не отвечает никак.

Его куски переносятся. Доказав однажды переход от «если A, то B» и «не B» к «не A», им пользуются во всех дальнейших выводах, и заново он не строится.

Его можно понять. Вывод объясняет, почему следует, а не только что следует. Человек, прочитавший вывод, уносит с собой приём, а не факт.

Аналогия. Таблица выдаёт справку «доехать можно», а вывод выдаёт маршрут: улицы, повороты, номер автобуса.

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

Как выглядит вывод

Договоримся о записи, дальше она понадобится в каждом уроке модуля. Вывод представляет собой столбик пронумерованных строк, и в каждой строке три вещи. Номер задаёт счёт сверху вниз, чтобы на строку можно было сослаться. Формула показывает, что на этой строке получено. Обоснование называет правило и номера строк, из которых оно взято.

Первые строки обычно ничем не обоснованы: это посылки, они даны условием. В обосновании так и пишут: «посылка». Такая запись придумана не сразу. Правила парами придумал Герхард Генцен в 1934-1935 годах, а привычный нам столбик с блоками появился позже: его предложил Фредерик Фитч в 1950-е.

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

Одну деталь записи стоит увидеть заранее: часть строк бывает сдвинута вправо и отчёркнута вертикальной чертой. Черта означает, что эти строки живут внутри допущения, то есть предположения, взятого на пробу. Такие блоки появятся в уроке 12, и без них вывод остаётся половиной инструмента. Пока достаточно знать, что сдвиг вправо не украшение: он часть обоснования, ведь строка внутри блока опирается на допущение, а строка вне блока не опирается.

номерчто полученоправило и ссылки4.Q→E 1, 3Строка 4 получена из строк 1 и 3 по правилу →E.Проверяется она отдельно от прочих: посмотреть правило,посмотреть названные строки и решить, годится ли шаг.
Строка вывода: номер, полученная формула, правило и ссылки на строки

Разбор по шагам: цепочка из трёх посылок

Разберём один вывод целиком, не пропуская ничего. Уговор такой: если придёт Аня, придёт и Боря, а если придёт Боря, придёт и Вера. Аня придёт. Хотим получить: придут и Боря, и Вера.

Сначала ключ перевода: пусть P обозначает «Аня придёт», Q обозначает «Боря придёт», R обозначает «Вера придёт». Тогда посылки записываются так. Первая, P → Q, читается: не бывает так, чтобы Аня пришла, а Боря нет. Вторая, Q → R, читается: не бывает так, чтобы Боря пришёл, а Вера нет. Третья, просто P, означает «Аня придёт». Цель записывается как Q ∧ R и читается: Боря пришёл и Вера пришла.

1. P → Q (посылка).
2. Q → R (посылка).
3. P (посылка).
4. Q (→E 1, 3).
5. R (→E 2, 4).
6. Q ∧ R (∧I 4, 5).

Теперь то же самое словами, по одной строке. Строки 1-3. Посылки. Обосновывать их нечем и не нужно: они даны условием задачи.

Строка 4. Правило →E, оно же modus ponens. Берём строку 1 («если P, то Q») и строку 3 («P»). Получаем Q. Словами: уговор про Аню и Борю плюс приход Ани дают приход Бори.

Строка 5. То же правило →E, но теперь по строкам 2 и 4. Строка 4 нам не была дана, мы её только что добыли. Ссылаться на добытое разрешено, в этом весь смысл цепочки.

Строка 6. Правило ∧I. Из двух отдельных строк, 4 и 5, собирается одна: Q ∧ R.

Заключение стоит на строке 6, и путь к нему виден целиком: ни один шаг не оставлен без имени, у каждого есть правило и ссылки. Соблазн сократить тут велик: из уговоров и прихода Ани сразу видно, что придут все. Зачем расписывать четыре строки?

Затем, что «видно» проверить нельзя, а проверить можно только названное правило и названные строки. Как только в выводе появляется шаг без имени, проверка на этом месте останавливается, и дальше начинается доверие. Есть и практическая причина: в шести строках сокращение безобидно, в тридцати оно прячет ошибку. Ошибки как раз и заводятся там, где рука пошла быстрее головы. Правила →E и ∧I здесь только применены, а откуда они берутся и почему им можно верить, разбирает урок 11.

разбор по шагамПроверка ссылок: два вопроса

К любой ссылке задают два вопроса. Первый: стоит ли названная строка выше? Ссылок на себя и на будущее не бывает. Второй: подходит ли она правилу? Для →E первая названная строка обязана быть стрелкой, а вторая обязана быть в точности тем, что стоит перед стрелкой. Не «примерно тем же», а в точности.

Правило ничего не понимает

У правил вывода есть свойство, которое поначалу раздражает, а потом оказывается главным их достоинством: правило смотрит на устройство формулы и больше ни на что. Правило →E требует буквально следующего: одна строка вида «стрелка», вторая строка, совпадающая с началом стрелки знак в знак. Не «по смыслу то же самое». Не «почти то же». Знак в знак.

Возьмём случай, где разница видна. На строке 1 стоит P → Q, то есть не бывает так, чтобы P, а Q нет. На строке 3 стоит Q ∧ P, то есть верно и Q, и P. Человек скажет: но ведь Q ∧ P содержит P, значит стрелку применить можно. Правило скажет: нет. Перед стрелкой стоит P, а на строке 3 стоит Q ∧ P, и это другая формула.

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

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

Два знака, которые нельзя путать

У нас теперь два разных способа сказать «отсюда следует», и знаки у них разные. Знак ⊨ говорит о случаях. Запись «P → Q, P ⊨ Q» читается так: нет ни одного случая, где обе посылки истинны, а Q ложно. Проверяется это таблицей. Знак ⊢ говорит о выводе. Запись «P → Q, P ⊢ Q» читается так: из этих посылок Q выводимо, то есть существует столбик строк вроде того, что мы только что построили. Вопросы эти разные до основания: первый спрашивает обо всех случаях сразу, второй о существовании одной конкретной записи.

Слить их в один соблазнительно, и делать этого нельзя. Вот почему. Представьте, что кто-то добавил в систему правило: «из A → B и B получается A». Выглядит невинно, а это подтверждение следствия, то есть форма, у которой есть контрпример. С таким правилом ⊢ начнёт выдавать то, что по ⊨ не следует. Знак ⊢ зависит от набора правил: меняем правила, и меняется ответ, а знак ⊨ не зависит ни от чего, кроме значений истинности. То, что для нашей системы оба знака дают один и тот же ответ, не заложено ни в записи, ни в определениях. Это две отдельные теоремы, и разбирает их урок 18.

Ещё одна запись пригодится в уроке 12. Слева от ⊢ иногда не стоит ничего вовсе: «⊢ A». Читается это так: A выводимо без всяких посылок. Такое A истинно при любых значениях букв, а вывод его добывает из воздуха, точнее, из одних только правил. Звучит странно, а делается просто: берут допущение, доводят его до конца и закрывают, а как именно, покажет урок 12.

Асимметрия, вывернутая наизнанку

В уроке 3 была неприятная асимметрия. Найденный контрпример закрывал вопрос окончательно, а ненайденный не доказывал ничего.

У вывода всё зеркально.

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

Практический порядок отсюда получается такой. Если кажется, что следует, ищите вывод. Если кажется, что не следует, ищите строку-контрпример. И ещё одно, для честности: пока вывод найден, но не проверен, он ничего не закрывает. Найти и проверить не одно и то же.

ловушка«Я не смог доказать» доводом не является

Фраза «доказательства нет» в разговоре означает обычно «я его не нашёл». Это не одно и то же. Отсутствие вывода доказывается совсем другими средствами, например контрпримером или полным перебором. Собственная неудача в поиске не доказывает ничего ни в логике, ни за её пределами.

Что дальше

Правил вывода у нас пока два, и взялись они ниоткуда. Урок 11 разбирает весь набор и показывает, что он не случаен. У каждой связки ровно два правила: как её получить и как ею воспользоваться. Урок 12 добавляет допущение, без которого вывод остаётся игрушкой, и это самое трудное место курса. Там же стоит тренажёр, который проверяет каждый ваш шаг и не пропускает неточных ссылок. Урок 13 разбирает один длинный вывод целиком, вместе с двумя тупиками, в которые пришлось зайти по дороге.

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

Герхард Генцен, «Untersuchungen über das logische Schließen»1935Натуральный вывод: система, в которой рассуждение записывается шагами по правилам, а не выводится из списка аксиом. Опубликовано в 1934-1935 годах.
Стивен Кук, «The Complexity of Theorem-Proving Procedures»1971Задача о выполнимости формулы (SAT) стала первой задачей, для которой доказана NP-полнота. Отсюда практический вес роста таблицы: перебор случаев дорог не только на бумаге.

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

интуиция подводитРаз таблица истинности всегда даёт ответ, вывод остаётся просто старомодным способом.

Таблица растёт вдвое с каждой буквой: десять букв дают 1024 строки, двадцать больше миллиона, тридцать больше миллиарда. В логике первого порядка таблицы нет вовсе: случаев бесконечно много, и общего механического способа проверки не существует (Чёрч и Тьюринг, 1936). А главное, таблица отвечает одним словом, тогда как вывод предъявляет путь, который можно проверить по частям и перенести в другую задачу.

это разные вещи⊢ и ⊨ служат двумя обозначениями одного и того же.

⊨ говорит о случаях: нет случая, где посылки истинны, а заключение ложно. ⊢ говорит о записи: существует столбик строк по правилам данной системы. Второе зависит от набора правил: добавьте в систему правило «из A → B и B получается A», и ⊢ начнёт выдавать то, чего по ⊨ нет. Совпадение двух знаков не определение, а две теоремы, и они в уроке 18.

интуиция подводитЕсли вывод не найден, значит, заключение не следует.

Это зеркало асимметрии из урока 3. Найденный вывод закрывает вопрос окончательно. Ненайденный не говорит ничего: возможно, заключение не следует, а возможно, поиск был плохой. Доказать отсутствие следования можно только другими средствами: контрпримером или полным перебором случаев.

Термины

выводproof
Столбик пронумерованных строк, где каждая строка либо посылка, либо получена из предыдущих по правилу, а последняя содержит доказываемое заключение. Предъявляет путь, а не приговор.
строка выводаline of a proof
Одна ступень вывода: номер, полученная формула и обоснование, то есть название правила с номерами строк, из которых оно взято.
правило выводаrule of inference
Разрешение приписать новую строку, если наверху уже стоят строки определённого вида. Смотрит только на устройство формул, а не на их смысл.
выводимостьderivability
Свойство «из этих посылок заключение выводимо в данной системе», знак ⊢. Зависит от набора правил и означает существование вывода, а не отсутствие случая-провала.
натуральный выводnatural deduction
Система, в которой рассуждение строится шагами по правилам, а не выводится из списка аксиом. Придумана Генценом в 1934-1935 годах.
стиль ФитчаFitch notation
Запись вывода столбиком, где допущение открывает вложенный блок со своей вертикальной чертой. Предложена Фредериком Фитчем в 1950-е годы.
перебор случаевexhaustive check
Способ доказать отсутствие контрпримера: выписать все мыслимые случаи и убедиться, что провального среди них нет. Возможен, только когда случаев конечное число.

Практикум · Найти испорченную строку

Ниже вывод из шести строк. В нём одна строка сломана: правило названо верно, но применено не к тем строкам. Задача в том, чтобы найти её самому и записать, что именно нарушено. Вот вывод. 1. P → Q (посылка). 2. Q → R (посылка). 3. P (посылка). 4. R (→E 2, 3). 5. Q (→E 1, 3). 6. Q ∧ R (∧I 5, 4).

  1. Перепишите вывод от руки в столбик. Переписывание не формальность: чужая запись читается глазами, а своя проверяется.
  2. Против каждой строки выпишите отдельно, что она утверждает и на какие строки ссылается.
  3. Проверьте ссылки на порядок: каждая названная строка обязана стоять выше. Ссылок на себя и на будущее не бывает.
  4. Проверьте каждый шаг по правилу. Для →E спросите: стоит ли на первой названной строке стрелка и совпадает ли то, что перед стрелкой, со второй названной строкой в точности.
  5. Найдите сломанную строку и запишите одной фразой, что нарушено. Потом почините вывод, поменяв в нём как можно меньше.

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

Вопрос 1

Формула на 12 букв. Сколько строк в её таблице истинности?

  • 24: по два случая на каждую из двенадцати букв
  • 4096: два в двенадцатой
  • 144: двенадцать букв, и каждая даёт двенадцать строк
  • 12 в квадрате, то есть 144
Вопрос 2

Что означает запись «P → Q, P ⊢ Q»?

  • Нет ни одного случая, где обе посылки истинны, а Q ложно
  • Обе посылки истинны на самом деле, и Q тоже истинно
  • Q следует из этих посылок по смыслу, а не по правилам
  • Из этих посылок Q выводимо по правилам системы
Вопрос 3

Что даёт вывод такого, чего не даёт таблица истинности?

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

Вы час искали вывод и не нашли. Что из этого следует?

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

В выводе стоит строка «5. R (→E 2, 4)». Что нужно проверить, чтобы принять этот шаг?

  • Что R истинно в действительности: шаг принимается лишь тогда, когда полученная строка подтверждается действительным положением дел
  • Что строки 2 и 4 стоят выше, на строке 2 стоит стрелка, перед стрелкой стоит в точности формула строки 4, а после неё стоит R
  • Что строки 2 и 4 обоснованы верными правилами
  • Что R встречалось в посылках

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

Что читать

  • forall x: Calgary, гл. 15 «The very idea of natural deduction»: Там объяснено, зачем натуральный вывод понадобился рядом с таблицами. Читается легко и почти без символов, и прочесть его полезно до урока 11, а не после.
  • Герхард Генцен, «Untersuchungen über das logische Schließen», 1935: Работа, с которой начался натуральный вывод. Читать целиком не нужно и трудно. Стоит открыть ради одного: увидеть, что приём, которым мы пользуемся, придуман один раз и довольно недавно.
  • Тренажёр «Построитель вывода» в уроке 12: Заглянуть в него можно уже сейчас, чтобы увидеть запись живьём. Решать задачи пока рано: правила разбираются в уроках 11 и 12.
Все курсы и разделы школы
Фонтум

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

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

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

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