2Введение в математическую логику
2.1Высказывания
2.1.1Примеры высказываний
Вероятно, в главе с таким названием читатель ожидает наконец увидеть аккуратные определения всем вводимым понятиям. Но нет.Как обычно, проще привести несколько примеров.
- «» — пример высказывания. Оно ложно.
- «» — ещё один пример высказывания. Оно истинно.
- « — простое число» — ещё одно истинное высказывание.
- «Множество простых чисел конечно» — это ложное высказывание.
- «Если целое число простое и оно больше двух, оно нечётно» — истинное высказывание.
- «Каждое чётное число, большее двух, можно представить в виде суммы двух простых чисел» — это высказывание, истинность которого в настоящий момент неизвестна (это так называемая бинарная проблема Гольдбаха).
- « — чётное число» — это не высказывание, потому что непонятно, чему равно (здесь, конечно, под подразумевается не собственно буква, а переменная, которая может принимать разные значения), и поэтому это утверждение не является ни ложным, ни истинным. С такого типа утверждениями (они называются предикатами) мы познакомимся чуть позже.
Вместо «истинно» или «ложно» используются и другие синонимичные выражения: верно (неверно), корректно (некорректно) и т.д.
2.1.2Операции с высказываниями
Из существующих высказываний можно делать новые высказывания с помощью логических операций (которые также называются операциями булевой алгебры). Пусть даны какие-то высказывания и .
Если про каждое из высказываний и известно, является оно истинным или ложным, легко установить истинность их конъюнкции, дизъюнкции и отрицания. Например, если истинно, то ложно. Если и оба истинны, то истинно, иначе оно ложно. И так далее. Эту информацию удобно записывать в виде табличек, которые называются таблицами истинности.
Таблица истинности для отрицания выглядит так:
2.1.3Раскрытие скобок с отрицанием
Пусть и — какие-то высказывания. Рассмотрим высказывание , то есть отрицание высказывания . В каком случае оно истинно? Только в том случае, когда оба высказывания и ложны. Действительно, если хотя бы одно из них истинно, тогда их дизъюнкция (логическое ИЛИ) истинна и значит её отрицание ложно. Записывая это соображение в виде формулы, получаем такое равенство:Аналогично можно рассмотреть высказывание . Чтобы оно стало истинным, достаточно, чтобы хотя бы одно из высказываний или было ложным: тогда их конъюнкция (логическое И) ложна и её отрицание истинно. Таким образом:
Эти правила преобразования формул в алгебре логики называются законами де Моргана.
2.1.4Логические операции в программировании
В распространённых языках программирования высказываниям соответствуют выражения, имеющие значения типа «булевская величина» (например, в Python этоbool
), то есть принимающие значения «истина» или «ложь» (True
и
False
). Например, 2 + 3 == 4
имеет значение False
, а 3 > 2
—
True
. К булевским значениям можно применять логические операторы and
,
or
и not
. Например, 2 * 0 == 1 or 3 > 2
имеет значение True
.
2.2Предикаты и кванторы
2.2.1Примеры предикатов
Выше фигурировал пример утверждения « — чётное число». Если задать вопрос, является оно истинным или ложным, вы скорее всего скажете, что вопрос не имеет смысла: как можно на него ответить, если не знаешь, чему равно ? Это пример утверждения, не являющегося высказыванием. Утверждения такого типа называются предикатами.Одни предикаты можно определять через другие. Например, если бы у нас был готовый предикат , проверяющий делимость, и нам нужно было изготовить из него предикат , проверяющий число на чётность, его легко можно было бы задать таким образом:
2.2.2Квантор всеобщности
Давайте рассмотрим предикат . Он проверяет, что натуральное число делится на . Но все натуральные числа делятся на 1! Это можно сформулировать следующим образом: «для всех значений предикат имеет значение „истина”». Есть специальный короткий способ записывать такого типа утверждения:Неверный ответ. Вы уверены? В этом утверждении сказано: «для любого натурального верно, что чётно». Иными словами, это утверждение можно переписать так: «все натуральные числа — чётны».
Верный ответ. Да, потому что бывают нечётные числа. Например, — ложно.
Неверный ответ. Нет! В этом утверждении сказано: «для любого натурального верно, что чётно». Иными словами, это утверждение можно переписать так: «все натуральные числа — чётны». Это утверждение попросту неверно.
2.2.3Квантор существования
Совершенными числами называются натуральные числа, которые равны сумме всех своих положительных делителей, отличных от самого числа (так называемых «собственных делителей»).Рассмотрим предикат , проверяющий, является ли натуральное число совершенным. (Иными словами, соответствует утверждению « — совершенное число».)
Если взять какое-то конкретное , очень легко проверить, является ли оно совершенным. Например, число имеет три собственных делителя, , и , но — значит, оно не совершенное. Но существуют ли вообще совершенные числа? Иными словами, верно ли утверждение: «существует такое , что имеет значение „истина”»?
Для формулирования таких утверждений также есть специальное короткое обозначение:
Аналогично квантору всеобщности (см. замечание 3), квантор существования «связывает» соответствующую переменную. Утверждение , хотя в нём фигурирует переменная , не является предикатом, зависящим от . Это просто высказывание, которое является истинным (если совершенные числа существуют), или ложным (если их нет).
Кстати, совершенные числа существуют. Например, число 6 совершенно. Это доказывает, что утверждение является истинным.
2.2.4Кванторы и отрицание
Есть обобщение законов де Моргана на формулы с кванторами. Рассмотрим какой-нибудь предикат . (Например, принадлежит множеству всех крокодилов, а проверяет, что крокодил является красным.)Рассмотрим высказывание («все крокодилы красные»). Чтобы его опровергнуть (то есть доказать его отрицание), достаточно предъявить какого-нибудь крокодила, который бы не был красным. Иными словами, верно равенство:
2.3Кванторы и предикаты с несколькими переменными
2.3.1Связывание одной переменной
Рассмотрим предикат , определённый для вещественных и . Рассмотрим такое утверждение: . Что это за объект?Если задать конкретное значение , например, , получается такая штука: , или попросту
Однако, можно выбрать другое значение , например, положить . Тогда получается утверждение
Вернёмся теперь к утверждению . Мы видим, что в это утверждение вместо можно подставлять различные числа и получать разные высказывания — верные и неверные. Значит, перед нами предикат, зависящий от . Обозначим его через . Можно записать:
2.3.2Последовательное применение кванторов
Рассмотрим предикат , определенный на множестве натуральных чисел. Он проверяет, что больше . Введём новый предикат:Во-первых, нужно заметить, что получившееся утверждение не является предикатом — мы последовательно связали обе переменные и то, что получилось, уже ни от чего не зависит, это просто высказывание, которое может быть истинным или ложным.
Является ли оно истинным? Да, является. Действительно, возьмём любое . Заметим, что для него предикат верен, поскольку существует такое (например, можно взять ), для которого . (Действительно, , каким бы ни было .)
Словами это высказывание можно было бы записать так: «для всякого натурального числа найдётся большее его число». Эта формулировка с точки зрения привычного нам языка выглядит немножко неестественно и может возникнуть искушение сделать её более привычной, переформулировав таким образом: «найдется натуральное число, большее любого другого натурального числа». Однако, то, что в результате получилось — не переформулировка исходного утверждения, а совсем другое высказывание. Оно формально записывается так:
2.3.3Отрицание и серия кванторов
Мы уже опровергли утверждение (2.5), но давайте ещё раз более подробно поговорим, как мы это сделали. Чтобы опровергнуть утверждение с кванторами обычно проще всего записать к нему отрицание, а потом доказать это отрицание. Воспользуемся формулами из раздела 2.2.4. Обозначим предикат через . Утверждение (2.5) можно переписать в виде:2.4Импликация
Давайте рассмотрим такое утверждение: «если натуральное число делится на 4, то оно делится на 2» (обозначим его за ). Как мы знаем, это верное утверждение. Как его сформулировать на языке кванторов и предикатов? Давайте введём предикат , проверяющий, что делится на 4. Раньше мы вводили предикат , проверяющий чётность . Поскольку речь про все натуральные числа, следует начать с квантора . Очевидно, дальше нужно написать какое-то утверждение с предикатами и , но какое?Вероятно, здесь проще начать с отрицания. Что нам нужно было бы сделать, чтобы опровергнуть утверждение ? Нужно придумать такое , чтобы оно делилось на , но при этом не делилось на 2. Именно такой контрпример, если бы он был построен, опроверг бы наше утверждение. Иными словами, нам нужно было бы предъявить такое , что выполняется, а нет, то есть верно утверждение . Итак, отрицание к выглядит так:
Это ровно то, что мы хотим сказать.
Неверный ответ. А вот и нет. Например, утверждение и формула (2.7) являются истинными, а утверждение в формуле (2.8) ложно. Действительно, возьмём, например, . Оно не делится на 4, значит, ложно, и значит для этого значения конъюнкция ложна, а раз такое нашлось, то и всё утверждение ложно. Проверьте, что этот пример не опровергает утверждение (2.7).
Верный ответ. Так и есть. Например, утверждение и формула (2.7) являются истинными, а утверждение в формуле (2.8) ложно. Действительно, возьмём, например, . Оно не делится на 4, значит, ложно, и значит для этого значения конъюнкция ложна, а раз такое нашлось, то и всё утверждение ложно. Проверьте, что этот пример не опровергает утверждение (2.7).
В общем виде это формулируется так. Пусть есть два высказывания, и . Утверждения «из следует » или « влечёт » или «если истинно, то тоже истинно», формально записываются как . Иными словами, говоря «если истинно, то тоже истинно», мы говорим, что может и не быть истинным, но нас этот случай, не интересует, мы про него никаких выводов не делаем (а значит, и ошибаться не можем), но если уж истинно, то обязано быть истинным.
Эта операция с высказываниями и настолько важна, что хотя она и выражается через конъюнкцию, дизъюнкцию и отрицание, у него есть специальное название — импликация (ср. с английским словом imply, влечёт), и специальное обозначение: . Утверждение называется посылкой, а утверждение — заключением.
Давайте построим таблицу истинности для (то есть ).
Возвращаясь к примеру, который мы разбирали раньше: «если число делится на 4, то оно чётное». Рассмотрим число . Для него посылка оказалась ложной (оно не делится на 4), и хотя заключение оказалось истинным (оно чётно), это никак не противоречит нашей импликации: она остаётся верна и в этом случае.
В дальнейшем мы будем постоянно пользоваться импликацией в доказательствах. Начнём прямо со следующей лекции.
2.5Применение языка матлогики в этой книге
2.5.1Формальный и естественный язык
Обозначения математической логики, которые мы ввели выше, позволяют записывать утверждения и даже их доказательства в виде длинных формул, состоящих из кванторов и предикатов. Они хороши своей чёткостью и однозначностью: после того, как утверждение записано на этом формальном языке, прочитать его можно единственным образом, а доказательство может проверить (или, в некоторых случаях, даже придумать) и компьютер, пользуясь чисто формальными правилами, описывающими допустимые преобразования одних строчек символов в другие.Когда я учился на первом курсе и только познакомился с этим языком, я был им очарован: какое-то время мне казалось, что достаточно записать любое утверждение «в кванторах», и дальше станет понятно, как его доказывать. Однако очень быстро я обнаружил, что это не так: формальная запись иногда упрощает некоторые логические переходы, и она часто необходима, чтобы убедиться в правильности доказательства, но чтобы придумать доказательство, нужно проникнуть в суть утверждения, а не просто манипулировать строчками с кванторами.
При этом «суть», то есть идеи, стоящие за математическими рассуждениями, как правило проще передавать, пользуясь преимущественно естественным языком, а не формальным. В конце концов, профессиональные математики пишут научные статьи именно на естественном языке, используя формальный лишь там, где это действительно необходимо. Что уж говорить об учебнике, читатели которого видят все эти кванторы впервые в жизни! Так что пусть вас не пугает обилие новых обозначений и понятий в этой главе: мы будем ими пользоваться и их нужно освоить, но все утверждения, сформулированные формально, мы будем подробно комментировать «по-человечески».
2.5.2Сокращённые обозначения
Чтобы немножко упростить обозначения в формулах с кванторами и приблизить их к естественному языку, я разрешу себе чуть-чуть отступить от правил формального языка, введённого выше. Во-первых, часто после серии кванторов я буду ставить двоеточие — например, вместоУсловия, записываемые после квантора существования, в более подробной записи приписываются к предикату через конъюнкцию (потому что нам нужно, чтобы существовало значение переменной, удовлетворяющей условию, и предикат был бы верен), а те, что идут после квантора всеобщности — через импликацию (потому что мы утверждаем, что предикат верен для всех значения переменной, удовлетворяющей условию, а для тех, кто не удовлетворяют, ничего не утверждаем).