Математическая логика и основы теории алгоритмов Коротков М.А.
Котов В.Н.
23 февраля 2005 г.
Степанов Е.О.
Оглавление 1 2
3 4 5 6
7 8 9
10 11 12
13
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Языки логики предикатов первого порядка . . . . . . . . . . 2.1 Алфавит и сигнатура . . . . . . . . . . . . . . . . . . . 2.2 Синтаксис языка первого порядка . . . . . . . . . . . . 2.3 Свободные и связанные переменные . . . . . . . . . . . 2.4 Семантика языков логики первого порядка . . . . . . Языки логики второго порядка . . . . . . . . . . . . . . . . . Логические языки с равенством . . . . . . . . . . . . . . . . . Арифметика Пеано . . . . . . . . . . . . . . . . . . . . . . . . Элементы теории доказательств . . . . . . . . . . . . . . . . . 6.1 Формальные cистемы . . . . . . . . . . . . . . . . . . . 6.2 Естественная дедукция . . . . . . . . . . . . . . . . . . 6.3 Подстановки в термах и формулах . . . . . . . . . . . 6.4 Корректность и полнота естественной дедукции . . . . Основы теории моделей . . . . . . . . . . . . . . . . . . . . . . Сравнение языков логики разных порядков . . . . . . . . . . Формальная теория множеств . . . . . . . . . . . . . . . . . . 9.1 Аксиоматика Цермело–Френкеля. Основные аксиомы 9.2 Отношение порядка . . . . . . . . . . . . . . . . . . . . 9.3 Аксиома регулярности . . . . . . . . . . . . . . . . . . 9.4 Аксиома бесконечности . . . . . . . . . . . . . . . . . . 9.5 Ординалы и стандартная модель арифметики . . . . . 9.6 Аксиома выбора . . . . . . . . . . . . . . . . . . . . . . 9.7 Теория множеств и основания математики . . . . . . . Основы теории алгоритмов . . . . . . . . . . . . . . . . . . . . Тезис Черча. Регистровые машины . . . . . . . . . . . . . . . Некоторые алгоритмические массовые проблемы . . . . . . . 12.1 Проблема самоприменимости . . . . . . . . . . . . . . . 12.2 Проблема останова . . . . . . . . . . . . . . . . . . . . 12.3 Теорема Райса . . . . . . . . . . . . . . . . . . . . . . . Разрешимость и перечислимость множества тавтологий . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 4 . 8 . 9 . 10 . 13 . 13 . 19 . 21 . 23 . 31 . 31 . 35 . 38 . 42 . 49 . 55 . 58 . 61 . 65 . 68 . 70 . 71 . 79 . 80 . 84 . 92 . 98 . 98 . 100 . 103 . 105
ОГЛАВЛЕНИЕ 14
15
Формальные теории . . . . . . . . . . . . . . 14.1 Теорема о неподвижной точке . . . . 14.2 Теорема Тарского . . . . . . . . . . . 14.3 Вторая теорема Геделя . . . . . . . . Язык Пролог . . . . . . . . . . . . . . . . . . 15.1 Формальная Система Опровержения
3 . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. 111 . 117 . 120 . 121 . 122 . 126
4
1
Введение
Введение
Формальная логика. Дать краткое, но исчерпывающее определение той или иной науки — задача, как правило, не простая. В особенности это относится к таким наукам, которые, как, например, математика или физика, содержат в себе большое число различных специальных дисциплин. В значительной мере относится это и к логике, которая фактически пронизывает всю современную математику и информатику, а также является фундаментом многочисленных естественнонаучных и гуманитарных дисциплин, от “абстрактных”, таких как философия, до “прикладных”, таких как юриспруденция. Поэтому мы попробуем подойти к понятию о предмете современной логики, не претендуя ни на полноту, ни на точность. Общепринятым является понимание логики как науки о правильном умозаключении (“логическом рассуждении”). Чтобы понять смысл этого определения, стоит конкретизировать, что такое умозаключение, а главное, что следует понимать под правильностью. Существует только два способа, которыми человек приобретает новые знания — в результате опыта и путем умозаключения. При этом первым способом получена только малая часть всех используемых людьми знаний. Заметим, что всякое рассуждение основывается на опытных фактах (“посылках”), которые сами по себе могут соответствовать или не соответствовать действительности. Однако истинность или ложность посылок никак не влияют на правильность рассуждения. Вот очень простой, но показательный пример. Умозаключение “страус — птица, все птицы имеют крылья, следовательно страус имеет крылья” несомненно правильное, а все использованные посылки соответствуют действительности, поэтому истинным является и заключение. А вот в умозаключении “кит — морская рыба, все рыбы в море селедки, следовательно кит — селедка” обе посылки ложны, заключение также ложно, но само рассуждение следует признать правильным, ибо оно ничем, кроме входящих в него опытных фактов, не отличается от предыдущего. По сути дела, оба рассуждения — это всего лишь две разные модификации одной и той же логической конструкции “y обладает свойством P , все x, имеющие свойство P , имеют и свойство Q, следовательно y имеет свойство Q”. Здесь уже нет никаких опытных фактов, на их месте осталась только абстрактная конструкция, которая является общепризнанно правильной, и мы очень часто используем ее в самых разных логических рассуждениях. Это был, конечно, только простой пример, а на практике проверить правильность сложных умозаключений можно только сведением их к последовательности таких вот элементарных общепризнанно правильных рассуждений (в этом и состоит процесс доказывания заключения из заданных посылок). Таким образом, правильность умозаключений вводится и проверяется совершенно фор-
5 мально, без какой-либо связи с истинностью входящих в него посылок, т.е. исключительно с точки зрения структуры рассуждения. Поэтому логику, изучающую правильные умозаключения, часто называют формальной логикой (иногда приходится встречать название логистика). С практической точки зрения самое важное свойство такой формальной правильности рассуждений заключается в следующем: если нам удалось доказать, пользуясь методами формальной логики, правильность рассуждения, и нам известно из опыта, что все используемые посылки истинны, то мы можем быть уверены в истинности заключения. Строго говоря, логика несколько шире формальной логики — например, последняя не отвечает на вопросы, какие рассуждения считать “элементарными” и почему. Для ответа на них приходится углубляться в философию и психологию. Однако, как правило, предмет логики ограничивают все-таки именно вопросами формальной логики, так что логика и формальная логика оказываются просто синонимами. Некоторые базовые вопросы относят к философским основаниям логики, хотя граница между логикой и философией весьма размыта. В дальнейшем мы будем заниматься именно формальной логикой, хотя нам придется часто обращаться к ее внелогическим, в т.ч. общефилософским основаниям и выводам. Символьная и математическая логика. В конце XIX – начале XX века логика, являющаяся одной из наиболее древних наук (по современным представлениям, рождение логики связано с деятельностью софистов в Древней Греции в 4–5 веке до н.э. — именно они создали логику как науку и активно использовали ее, в частности, для обучения ведению судебных споров; к этой же эпохе относится и деятельность первого ученого, систематизировавшего разрозненные логические знания — “отца логики” Аристотеля1 ) пережила невиданную по своим масштабам и значению революцию. Вначале преобразования казались несущественными и заключались в активном использовании в логических исследованиях символьной записи. Разработанная в 40–70х гг. прошлого века Дж. Булем2 , а затем развитая другими учеными (в основном математиками, в т.ч. Г. Кантором3 ) символьная запись логических рассуждений оказалась очень удобной и быстро 1
Аристотель (Aristotel) (384–322 до нашей эры) — древнегреческий философ и ученыйэнциклопедист. Учился у Платона в Афинах. В 335 основал Лицей. Основоположник формальной логики. 2 Джордж Буль (George Boole) (1815–1864) — английский логик и математик, разработал исторически первую систему математической логики, впоследствии названную алгеброй логики. Идея аналогии между алгеброй и логикой определила все направление его логических исследований. 3 Георг Кантор (George Cantor) (1845–1918) — немецкий математик. Родился в Петербурге. В 1867 окончил Берлинский университет. В 1872–1913 — профессор университета в Галле. Кантор разработал теорию бесконечных множеств и теорию трансфинитных чисел. Созданная Кантором теория множеств не только лежит ныне в основе математического анализа, но и послужила причиной общего пересмотра логических основ математики и оказала влияние на всю современную структуру математики.
6
Введение
завоевала популярность, превратив формальную логику в символьную логику. Например, рассмотренное выше логическое рассуждение “y обладает свойством P , все x, имеющие свойство P , имеют и свойство Q, следовательно y имеет свойство Q”, в современной записи выглядит очень компактно P (y), ∀x(P (x) → Q(x)) ` Q(y). При этом P (y) обозначает “y обладает свойством P ”, P (x) → Q(x) обозначает “если x имеет свойство P , то x имеет свойство Q”, ∀x(. . .) обозначает “для всех x верно (. . . )”, а ` обозначает “доказывает”. “Символьная” революция в логике совпала по времени со столь же революционными преобразованиями в математике. Основными вехами этих преобразований было появление созданной Г. Кантором теории множеств, качественным повышением требований к строгости доказательств, прежде всего в математическом анализе в результате работ К. Вейерштрасса4 , активным поиском общих теоретикомножественных оснований математического анализа и математики в целом. Возникшие на этом пути трудности оказались принципиальными и потребовали значительной формализации оснований математики с использованием методов символьной логики. В свою очередь, произошедшее таким образом соприкосновение логики и математики привело к их взаимопроникновению настолько, что считавшаяся ранее частью философии логика оказалась пропитанной математическими методами, которые оказались эффективными и в применении к чисто логическим задачам. В результате современная логика полностью базируется на математических методах и часто находит приложение в задачах математики и прикладных математических дисциплин, включающих теоретическую информатику, и является, таким образом, математической логикой. Однако нет никакого смысла в противопоставлении “логики” и “математической логики”, так как математическая логика представляет собой современное развитие классической логики, основы которой заложены еще Аристотелем. Формальные языки. Современная логика изучает формальные языки, служащие для выражения логических рассуждений. Используемые для этой цели математические методы пригодны для изучения и значительно более широкого класса формальных языков. Любой язык, как естественный (русский, английский, латинский), так и формальный (языки программирования, язык шахматной записи, языки логики пре4
Карл Вейерштрасс (Karl Weierstrass) (1815 – 1897) — немецкий математик. С 1856 профессор Берлинского университета. Лекции и научные статьи Вейерштрасса посвящены математическому анализу, теории аналитических функций, вариационному исчислению, дифференциальной геометрии и линейной алгебре. Большое значение для математики имеет разрабатывавшаяся Вейерштрассом система логического обоснования математического анализа, основанная на построенной им теории действительных чисел.
7 дикатов), служит для передачи информации. С этой точки зрения язык представляет собой совокупность знаковой системы (включающей в себя набор символов для передачи текстов и правила написания текстов, называемые синтаксисом языка) и набора смыслов, которые можно сопоставить текстам языка, а также правил сопоставления смысла текстам языка, называемых семантикой языка. Вопросы синтаксиса, как правило, существенно проще семантических вопросов и гораздо легче поддаются формальному анализу. Чтобы задать язык, необходимо прежде всего задать его алфавит — множество объектов (“символов”), из которых составляются тексты языка. Алфавитом языка может, вообще говоря, служить произвольное множество. Например, алфавит английского языка состоит из букв латинского алфавита, арабских цифр и знаков пунктуации, письменный язык индейцев майя — из узелков. Также из букв латинского алфавита, арабских цифр и некоторых специальных символов (например, #) состоит алфавит большинства распространенных языков программирования. Далее мы будем говорить только о формальных языках. Пусть задано множество V — алфавит языка. Элементы этого множества мы будем называть символами алфавита. Цепочками (string) будем называть конечные позиционные наборы символов алфавита с учетом порядка следования символов. В дальнейшем мы, как правило, будем иметь дело с довольно распространенной ситуацией, когда символы алфавита представляют собой знаки, которые могут быть записаны на бумаге. В этом случае цепочки символов будем записывать так, как это принято в европейских языках — слева направо в порядке следования символов. Пустая цепочка символов это пустое множество символов. Множество всех цепочек, включая пустую, будем обозначать V ∗ . Формальный язык с алфавитом V это просто заданное подмножество L ⊂ V ∗ . Элементы этого множества могут называться по-разному для разных языков. Например, элементы языков логики предикатов принято называть формулами, элементы языков программирования — программами, элементы языка шахматной записи — ходами (или записями ходов), а элементы языков, в той или иной мере моделирующих естественные — предложениями или фразами. Задать формальный язык (т.е. правило, по которому формируется множество L ⊂ V ∗ ) можно по-разному. Чаще всего для этой цели используют формальные грамматики. Нас будет интересовать только один весьма распространенный тип формальной грамматики — контекстно-свободная грамматика, записываемая в форме Бэкуса-Наура5 . 5
форма Бэкуса-Наура (Backus-Naur Form) — методология, которая впервые была использованиа для описания языка программирования Алгол-60. За прошедшие десятилетия формы Бэкуса-Наура доработаны множеством авторов и сейчас в расширенном виде используются для описания ряда языков программирования различной степени сложности.
8
Языки логики предикатов первого порядка
Язык и метаязык. Для описания синтаксиса и семантики формального языка мы, как правило, будем пользоваться естественным (в данном случае русским) языком. Например, фраза “Ход e2–e4 состоит в передвижении пешки с поля e2 на поле e4”, является предложением русского языка, объясняющим смысл записи e2–e4 на формальном языке шахматной записи. Использовать для этой же цели можно было бы и другой язык, как естественный, так и формальный, специально предназначенный для описания синтаксиса и семантики данного формального языка. В таком случае будем называть тот язык, который используется для описания данного формального языка, метаязыком для последнего, а “описываемый” язык предметным языком. Приставка греческого происхождения “мета”, в прямом переводе означающая “следующий за”, имеет здесь значение “над”. Стоит отметить, что предметный формальный язык и метаязык, как правило, отличаются друг от друга. Метаязык обычно в некотором смысле богаче, например, его алфавит часто строго содержит алфавит предметного языка. Дело в том, что многие формальные языки, в том числе и те, которые мы будем рассматривать в дальнейшем, недостаточно богаты, чтобы использовать их в качестве метаязыков для себя самих (это или просто невозможно, или по меньшей мере весьма неудобно). При этом все естественные языки достаточно богаты, чтобы с их помощью можно было бы описать их собственную грамматику (“синтаксис”), а также проводить рассуждения о смысле тех или иных фраз этого же языка (т.е. о семантике языка). Например, мы обучаемся русскому языку на русском (который в процессе обучения служит, таким образом, метаязыком для самого себя. В то же время книжки по обучению формальным языкам, таким как, например, языки программирования, написаны также на естественном (русском, английском и т.п.) языке, а не на самом изучаемом формальном языке (представьте себе, можно ли было бы научиться программировать на C++, если бы соответствующие учебники не были написаны на привычном русском языке). Это, однако, не значит, что никакой формальный язык не может использоваться в качестве метаязыка для себя самого: существуют и такие формальные языки, которые, вовсе не будучи столь же богатыми, как и естественные, в принципе могут быть использованы для “описания себя самих”.
2
Языки логики предикатов первого порядка
Языки логики предикатов представляют собой основной класс языков, с которыми приходится иметь дело в формальной логике. Разные языки этого класса используются для описания различных предметных областей. Наибольшее применение в силу ряда причин, которые мы рассмотрим позднее, получили языки логики предикатов первого порядка. Главная их особенность состоит в том, что они достаточно выразительны (например, на языке логики первого порядка
2.1 Алфавит и сигнатура
9
можно описать всю математику) и в то же время легко поддаются формальному анализу.
2.1
Алфавит и сигнатура
Алфавит A любого языка логики предикатов первого порядка состоит из шести попарно непересекающихся подмножеств A = Const ∪ Func ∪ Pred ∪ Var ∪ Log ∪ Aux, где • Const — множество символов предметных констант, • Func — множество функциональных символов, • Pred — множество предикатных символов, • Var — множество символов предметных переменных, • Log := {¬, ∧, ∨, →, ∃, ∀} — множество логических символов, • Aux := {(, ), , } — множество вспомогательных символов (запятая и круглые скобки). Объединение σ = Const ∪ Func ∪ Pred множеств символов предметных констант, функциональных и предикатных символов называется сигнатурой языка и определяется той конкретной предметной областью, для описания которой предназначен язык. Язык логики первого порядка, таким образом, определяется своей сигнатурой, поэтому говорят об алфавите и языке сигнатуры σ (если необходимо подчеркнуть зависимость от сигнатуры, ее указывают в верхнем индексе, например, алфавит Aσ , язык Lσ ). Как правило, для обозначения символов предметных констант, переменных и функциональных символов принято использовать малые латинские буквы, а для предикатных символов — большие латинские буквы. Кроме того, все функциональные и предикатные символы делятся на унарные, бинарные, тернарные, n-арные и т.п. (если символ n-арный, то это значит, что он используется в записи с n аргументами). Множества n-арных функциональных и предикатных символов будем обозначать, соответственно, Funcn и Predn . Множество логических символов состоит из следующие элементов: • ¬ — символ отрицания (логическое “не”), • ∧ — символ конъюнкции (логическое “и”),
10
Языки логики предикатов первого порядка • ∨ — символ дизъюнкции (логическое “или”), • → — символ импликации (логическое “следствие”), • ∃ — квантор существования, • ∀ — квантор всеобщности.
Первые четыре из перечисленных символов (символ отрицания, символ конъюнкции, символ дизъюнкции и символ импликации) называются также логическими связками, оставшиеся — квантор существования и квантор всеобщности — просто кванторами. Иногда определяют языки логики предикатов первого порядка с другими логическими связками, либо с меньшим числом связок — сделать так можно без ущерба для выразительной силы языка, как мы покажем в дальнейшем.
2.2
Синтаксис языка первого порядка
Язык Lσ логики предикатов первого порядка с сигнатурой σ определяется как формальный язык с алфавитом Aσ , порождаемый следующей грамматикой (в форме Бэкуса-Наура): < формула > ::= < атомарная формула > |(¬ < формула >) |(< формула > ∧ < формула >) |(< формула > ∨ < формула >) |(< формула >→< формула >) |(∃ < переменная >< формула >) |(∀ < переменная >< формула >), < атомарная формула > ::= < n − арный пред. символ > (< терм >, . . .), < терм > ::= < константа > | < переменная > | < n − арный функ. символ > (< терм >, . . .), где < константа >, < переменная >, < n − арный функциональный символ > и < n − арный предикатный символ > — произвольные символы из Const, Var, Funcn и Predn , соответственно. Элементы Lσ называются формулами. Согласно приведенному выше определению, формулы бывают атомарными и составными. Последние, в свою очередь, составляются из атомарных формул с помощью логических символов. Атомарная формула представляет собой предикатный символ с соответствующим количеством аргументов-термов (для n-арного предикатного символа — n термов). Наконец, терм языка Lσ это или предметная константа, или предметная
2.2 Синтаксис языка первого порядка
11
переменная, или выражение, в которое входит функциональный символ и соответствующее число (n для n-арного символа) термов. Это можно выразить и с помощью следующего эквивалентного определения. Определение 2.1 (i) Множество термов TER(Lσ ) языка Lσ определяется по следующим правилам: • любой символ предметной переменной или константы является термом; • если f ∈ Funcn , а t1 , . . . , tn ∈ TER(Lσ ), то f (t1 , . . . , tn ) ∈ TER(Lσ ); • других термов, кроме построенных по приведенным выше правилам, нет. (ii) Множество формул Lσ определяется по следующим правилам: • если A ∈ Predn , а t1 , . . . , tn ∈ TER(Lσ ), то A(t1 , . . . , tn ) — формула, называемая в этом случае атомарной формулой; • если P, Q — формулы, то (¬P), (P ∨Q), (P ∧Q), (P → Q) — формулы; • если P — формула, а x — символ предметной переменной, то (∀xP), (∃xP) — формулы; • других формул, кроме построенных по приведенным выше правилам, нет. Пример 2.1 Пусть A1 и B 2 — унарный и бинарный предикатные символы, соответственно, f — бинарный функциональный символ, а c — символ предметной константы, а все остальные малые латинские буквы — символы предметных переменных. Тогда цепочки символов c, x, f (c, x), f (x, f (c, f (x, x))) являются термами, а цепочки символов A1 (f (c, x)),
B 2 (c, f (c, x)), и
(((∀x)(A1 (x) ∧ A2 (y))) → ((∀y)(B 2 (c, f (c, c)) ∨ A1 (x))) являются формулами. Упражнения. 1. Докажите, что в условиях предыдущего примера цепочки символов c(f (A1 (x) →)), (())(c∀ не являются ни формулами, ни термами. 2. Докажите следующие теоремы об индукции по структуре термов и формул:
12
Языки логики предикатов первого порядка
Теорема 2.1 (об индукции по структуре термов) Пусть Π такое подмножество TER(Lσ ), что (i) Π содержит все предметные константы и переменные; (ii) Если Π содержит t1 , . . . , tn ∈ TER(Lσ ), то Π содержит и f (t1 , t2 , . . . , tn ), где f — произвольный n-арный функциональный символ. Тогда Π содержит все термы. Теорема 2.2 (об индукции по структуре формул) Пусть Π такое подмножество Lσ , что (i) Π содержит все атомарные формулы; (ii) Если P, Q ∈ Π, то (¬P), (P ∨ Q), (P ∧ Q), (P → Q) ∈ Π; (iii) Если P ∈ Π, то ((∀x)P), ((∃x)P) ∈ Π для произвольного символа предметной переменной x. Тогда Π содержит все формулы. 3. Докажите, что любая формула языка логики предикатов первого порядка содержит одинаковое количество открывающих и закрывающих скобок. Указание: Воспользуйтесь доказанными теоремами об индукции по структуре термов и формул.
Приоритеты операций. Запись формул можно сократить путем некоторого уменьшения количества ненужных скобок. Для этого введем следующие приоритеты логических символов: P r (∃) = P r (∀) = P r (¬) > P r (∧) > P r (∨) > P r (→) , где P r (A) обозначает приоритет операции A. Таким образом, самый высокий приоритет имеют кванторы, далее в порядке убывания приоритета следуют символы отрицания, конъюнкции, дизъюнкции, и, наконец, импликации. С учетом этого правила, например, цепочки символов ∀x(A1 (x) → B 1 (x)) и ∃x¬A2 (x, y) являются сокращенным обозначением формул ((∀x)(A1 (x) → B 1 (x))) и ((∃x)(¬A2 (x, y))), соответственно. Впредь мы будем записывать все формулы в сокращенном виде с использованием введенных приоритетов.
2.3 Свободные и связанные переменные
2.3
13
Свободные и связанные переменные
Определим множество свободных переменных Free(P) и множество связанных переменных Bound(P) формулы P ∈ Lσ . Здесь и далее var (t), var (P) обозначает множество символов предметных переменных, входящих, соответственно, в терм t и формулу P. Определение 2.2 Множество свободных переменных Free(P) и множество связанных переменных Bound(P) формулы P ∈ Lσ определяются по следующим правилам: S • если P — атомарная формула, то Free(P) := var (t), где объединение t
берется по всем термам, входящим в формулу P, и Bound(P) := ∅;
• если P = (¬Q), то Free(P) := Free(Q) и Bound(P) := Bound(Q); • если P = (Q ∨ S) или P = (Q ∧ S), или P = (Q → S), то Free(P) := Free(Q) ∪ Free(S) и Bound(P) := Bound(Q) ∪ Bound(S); • если P = ((∀x)Q) или P = ((∃x)Q), то Free(P) = Free(Q) \ {x} и Bound(P) = Bound(Q) ∪ {x}. Иначе говоря, переменные “связываются” кванторами ∀, ∃. Заметим, что вовсе не обязательно Free(P) ∩ Bound(P) = ∅. Например, если P := ∀x(Q(x, y) → R(x)) ∨ ∀y(¬Q(x, y) → ∀zR(z)), то для данной формулы Free(P) = {x, y}, Bound(P) = {x, y, z}, а значит, Free(P) ∩ Bound(P) = {x, y} 6= ∅. Тем не менее, каждое конкретное вхождение переменной в формулу может быть либо свободным, либо связанным. Определение 2.3 Формула P называется замкнутой (или предложением), если у нее нет свободных переменных.
2.4
Семантика языков логики первого порядка
До сих пор мы занимались исключительно вопросами синтаксиса языков логики предикатов первого порядка, рассматривая эти языки совершенно формально как наборы цепочек символов, построенных по определенным правилам. Теперь нашей задачей будет придать смысл введенным синтаксическим конструкциям. Формулы языков первого порядка будем интерпретировать как утверждения о некоторой предметной области, заранее не фиксированной при рассмотрении
14
Языки логики предикатов первого порядка
каждого конкретного языка. Так, например, любая формула может восприниматься как утверждение о натуральных числах, о геометрических фигурах, о крокодилах в Южной Америке и т. п. При этом одна и та же формула может представлять истинное утверждение в одной предметной области и ложное в другой. Например, формула ∀xA(x) может представлять истинное утверждение о крокодилах (например, “все крокодилы являются рептилиями”, если A(x) интерпретируется как “x — рептилия”) и ложное утверждение о натуральных числах (“все натуральные числа являются четными”, если A(x) интерпретируется как “x — четное число”). И даже в одной и той же предметной области формула может оказаться как истинной, так и ложной, в зависимости от того, какой смысл приписывается символам констант, функциональным и предикатным символам, а также символам свободных переменных. Например, приведенная выше формула может представлять и истинное утверждение о натуральных числах, если A(x) интерпретируется как “x — натуральное число”. Прежде чем вводить формальные определения, сделаем еще одно важное замечание. Мы будем рассматривать только классическую двузначную семантику (как правило, принято говорить о двузначной логике), в которой каждая формула языка первого порядка интерпретируется как истинное либо ложное утверждение. При этом говорят, что формула имеет истинностное значение: 1 (отождествляемом с истиной) или 0 (отождествляемом с ложью). Существует и многозначная семантика, в которой истинностное значение формулы может принимать более двух значений. Наиболее широко известной является трехзначная логика Лукасевича6 . Можно рассматривать и континуальную многозначную семантику, в которой истинностное значение формулы может быть любым числом от 0 до 1 и интерпретироваться, например, как степень правдоподобности. Особенно интересны приложения таких многозначных логик. Например, в языке логики предикатов, предназначенном для описания действий с абстрактными множе6
Ян Лукасевич (Jan Lukasiewicz) (1878–1956) — известный польский логик и философ. Лукасевич известен во всем мире как один из наиболее выдающихся и значительных логиков ХХ столетия и, прежде всего, как создатель первого исчисления многозначной логики. Лукасевич ввел понятие третьего истинностного значения, промежуточного между истиной и ложью, которое он интерпретировал как “возможно”. По мнению Лукасевича, высказывания о будущих случайных событиях ни ложны, ни истинны, но лишь возможны, следовательно, они имеют третье истинностное значение. На основе подобной интерпретации Лукасевичем были разработаны также системы многозначной (трехзначной и четырехзначной) модальной логики. Однако в дальнейшем он отказывается от подобной содержательной интерпретации и разрабатывает системы конечнозначной и бесконечнозначной логик с конечным и бесконечным числом промежуточных истинностных значений. В области логики Лукасевичу принадлежит целый ряд результатов, относящийся к другому кругу проблем. Так, им была разработана система логической символики, известная под именем польской (бесскобочной) нотации. Он также разработал общую логическую теорию вероятности.
2.4 Семантика языков логики первого порядка
15
ствами, можно записать формулу, выражающую утверждение “данный элемент принадлежит заданному множеству”. В классической однозначной семантике такая формула может считаться либо истинной (истинностное значение 1), либо ложной (истинностное значение 0). Однако в только что упомянутой континуальной семантике эта формула может иметь любое истинностное значение в промежутке [0, 1], которое логично интерпретировать как степень принадлежности элемента множеству. Таким образом, в теории множеств, базирующейся на такой семантике, элемент может принадлежать множеству в большей или меньшей степени. Эта теория получила название теории нечетких множеств (fuzzy set theory) и нашла широкое применение в методе экспертных оценок. Теперь мы можем строго определить истинностное значение формулы языка логики предикатов первого порядка Lσ для двузначной семантики. Для этого нам понадобятся понятия универсума, алгебраической системы и интерпретации для языка Lσ . Определение 2.4 Алгебраической системой для сигнатуры σ называется набор M следующих объектов: • непустого множества M, называемого универсумом, • для каждого символа предметной константы c ∈ Const выделенного элемента универсума cM ∈ M, • для каждого n-арного функционального символа f ∈ Funcn выделенной функции f M : M n → M, где M n := M × M × ... × M, • для каждого n-арного предикатного символа A ∈ Predn характеристической функции выделенного n-местного отношения AM : M n → {0, 1}. Определение 2.5 Интерпретацией в алгебраической системе M называется пара (M, ξ), где ξ — функция ξ : Var → M. Таким образом, алгебраическая система для языка Lσ определяет тот “мир”, о котором “говорят” формулы Lσ . Символы предметных констант представлены в ней элементами универсума, функциональные символы — функциями на универсуме, а предикатным символам соответствуют отношения на универсуме. Интерпретация нужна, чтобы поставить в соответствие символам предметных переменных элементы универсума. Пользуясь введенными определениями, мы можем связать элементы универсума и термы языка Lσ . Для этого, фиксировав интерпретацию (M, ξ), введем в рассмотрение функцию “значения” терма [ ]: [ ] : TER(Lσ ) → M в соответствии со следующими правилами:
16
Языки логики предикатов первого порядка • если t = c ∈ Const, то [t] := cM , • если t = x ∈ Var, то [t] := ξ(x), • если t = f (t1 , t2 , ..., tn ), где t1 , . . . , tn ∈ TER(Lσ ), то где f ∈ Funcn , то [t] := f M([t1 ], ..., [tk ]).
Заметим, что приведенные правила корректно определяют функцию [ ] на всем множестве TER(Lσ ). Теперь мы можем наконец определить понятие истинностного значения формулы P ∈ Lσ в интерпретации (M, ξ). Определение 2.6 Истинностным значением формулы P ∈ Lσ в интерпретации (M, ξ) называется число v(P) ∈ {0, 1}, определяемое по следующим правилам: 1. если P — атомарная формула, т. е. P = A(t1 , . . . , tn ), A ∈ Predn , t1 , . . . tn ∈ TER(Lσ ), то v(P) := AM ([t1 ], . . . , [tk ]), 2. если P = ¬Q, то v(P) := 1 − v(Q), 3. если P = Q ∧ S, то v(P) := min{v(Q), v(S)}, 4. если P = Q ∨ S, то v(P) := max{v(Q), v(S)}, 5. если P = Q → S, то v(P) := max{1 − v(Q), v(S)}, 6. если P = ∀xQ, то v(P) := min{v[a/x] (Q) : a ∈ M}, где v[a/x] (Q) — истинностное значение формулы Q в интерпретации (M, ξ[a/x]), а функция ξ[a/x] : Var → M определена следующим образом: ( ξ(y), если y 6= x; ξ[a/x] (y) := a, если y = x; 7. если P = ∃xQ(x), то v(P) := max{v[a/x] (Q) : a ∈ M}, где v[a/x] (Q) — истинностное значение формулы Q в интерпретации (M, ξ[a/x] ), определенной выше. Определение 2.7 Будем говорить, что формула P истинна в интерпретации (M, ξ), если v(P) = 1, и ложна, если v(P) = 0. Будем писать (M, ξ) |= P, если v(P) = 1 в интерпретации (M, ξ). Определение 2.8 Будем говорить, что формула P:
2.4 Семантика языков логики первого порядка
17
• выполнима в алгебраической системе M, если (M, ξ) |= P для какой-либо интерпретации (M, ξ); • выполнима, если она выполнима в какой-либо алгебраической системе; • тавтология, если она выполнима в любой алгебраической системе; • противоречива, если она невыполнима. Определение 2.9 Алгебраическая система M называется моделью формулы P, если (M, ξ) |= P для любой интерпретации (M, ξ). При этом пишут M |= P. Формула P называется истинной, если у нее есть модель. Будем называть интерпретацию (M, ξ) моделью формулы P, если (M, ξ) |= P, т.е. v(P) = 1 в (M, ξ). В выше приведенном определении мы позволили себе некоторую вольность языка, использовав одно и тоже слово модель для двух разных понятий (в наших терминах алгебраической системы-модели и интерпретации-модели). Важно понимать, что эти понятия разные. Например, рассмотрим формулу < (x, y) в языке логики первого порядка в сигнатуре которого есть бинарный предикатный символ < (имея в виду, что обычно такой значок в математики читается как меньше, данную формулу принято записывать как x < y, что и будем делать в дальнейшем). Рассмотрим алгебраическую систему M, универсум которой M = 0, 1 . . ., а предикатный символ < интерпретируется характеристической функцией обычного порядка на N, т.е. ( 1, если a < b <M := 0, иначе где a, b ∈ N. Такая алгебраическая система, очевидно, не является моделью для рассматриваемой формулы. Действительно, данная формула ложна в интерпретации (M, ξ), где ξ(x) = 2 и ξ(y) = 0. Однако, например, интерпретация (M, ξ), где ξ(x) = 0 и ξ(y) = 1 является в соответствии с вышеприведенным определением моделью формулы P. В дальнейшем мы будем позволять себе некоторую вольность языка, говоря о моделях не конкретизуя какое именно из двух понятий, модель-алгебраическая система или модель-интерпретация, имеется виду. В каждом конкретном случае это будет понятно из контекста. Определение 2.10 Формула P называется семантическим (логическим) следствием множества формул Γ, если из того, что (M, ξ) |= Q для всех одновременно Q ∈ Γ, следует (M, ξ) |= P. В этом случае принято писать Γ |= P.
18
Языки логики предикатов первого порядка
Определение 2.11 Формулы P, Q называются семантически эквивалентными, если v(P) = v(Q) в любой интерпретации. В этом случае пишут P ≡ Q. Пример 2.2 Пусть σ = {c, f 1, g 2 , A2 , B 1 }, где c — символ предметной константы, f , g — одноместный и двуместный функциональные символы, соответственно, A — двуместный предикатный символ, B — одноместный предикатный символ. В качестве универсума выберем множество Z+ 0 = N ∪ {0} неотрицательных целых чисел. Зададим алгебраическую систему для Lσ , положив: cM := 0, f M (n) := n + 1, g M(m, n) := m+ n, 1, m > n AM (m, n) := 0, m ≤ n, 1, n — простое число B M (n) := 0, n — составное число Пусть ξ(y) := 2. Тогда формула P := ∀xA(x, f (x)) ∨ B(g(c, y)) истинна, т. е. v(P) = 1. В данной алгебраической системе формула P выражает следующее утверждение о натуральных числах: “Либо n + 1 < n для любого числа n, либо y +0 — простое число”. Если в той же алгебраической системе положить ξ(y) := 4, то в такой интерпретации формула P окажется ложной, т. е. v(P) = 0. Заметим, что истинностное значение формулы P не зависит от интерпретации связанной переменной. Рассмотрим еще один любопытный пример. Пример 2.3 (Парадокс брадобрея) В одном городе жил брадобрей, который брил всех тех, и только тех, кто не брил самого себя. Кто брил брадобрея? Парадокс заключается в том, что попытка дать ответ на этот вопрос приводит к замкнутому кругу рассуждений. А именно, если брадобрей брил себя сам, то он не мог брить себя сам, так как он брил только тех, кто не брил самого себя, и наоборот. Объяснение состоит в противоречивости основного утверждения. Запишем на формальном языке логики первого порядка формулу, выражающую “парадокс брадобрея”. Для этого в сигнатуре нам понадобится бинарный предикатный символ, выражающий отношение “бреет”: R(x, y) значит x бреет y. Рассмотрим сигнатуру σ = {b, R}, где символ константы b – это брадобрей. Утверждение “брадобрей бреет тех и только тех, кто не бреет самого себя” записывается тогда в виде формулы: P := ∀x(¬R(x, x) → R(b, x)) ∧ ∀x(R(b, x) → ¬R(x, x))
19 Достаточно простого подсчета в соответствии с определением истинностного значения, чтобы убедиться в том, что эта формула не выполняется ни в какой алгебраической системе. Упражнение 2.1 Покажите справедливость следующих утверждений: ¬∀xP (x) ≡ ∃x¬P (x), ¬∃xP (x) ≡ ∀x¬P (x) Определение 2.12 Будем называть замыканием формулы P со свободными переменными Free(P) = {x1 , x2 , . . . , xk } формулу Cl(P) := ∀x1 ∀x2 . . . ∀xk P Теорема 2.3 Алгебраическая система M являeтся моделью формулы P, если и только если M является моделью замыкания P, т. е. M |= P если и только если M |= Cl(P). Упражнение 2.2 Доказать теорему о замыкании. Определение 2.13 Язык логики первого порядка, сигнатура которого содержит счетный набор символов констант, счетный набор функциональных символов и счетный набор предикатных символов любой арности будем обозначать Lσ∞ . Очевидно, что при этом любой другой язык логики первого порядка с не более чем счетным алфавитом можно, не ограничивая общности, считать содержащимся в Lσ∞ .
3
Языки логики второго порядка
Языки логики второго порядка отличаются от языков логики первого порядка наличием в алфавите дополнительно символов предикатных переменных (для которых мы резервируем большие латинские буквы X, Y , Z, возможно, с цифровыми индексами), а также наличием дополнительных формул вида ∀X Q, ∃X Q с использованием символов предикатных переменных. Множество предикатных переменных алфавита A языка логики второго порядка будем обозначать VarPred. Если надо подчеркнуть, что речь идет о множестве k-арных предикатных переменных, то будем писать VarPredk . Таким образом, A = Const ∪ Func ∪ Pred ∪ VarPred ∪ Var ∪ Log ∪ Aux.
20
Языки логики второго порядка
Термы языкa логики второго порядка определяются так же, как и термы языка логики первого порядка, а формулы отличаются возможностью использовать предикатные переменные после кванторов: < атомарная формула > ::= < n − арный пред. символ > (< терм >, ...) | < n − арная пред. переменная > (< терм >, . . .), < формула > ::= < атомарная формула > | (¬ < формула >) |(< формула > ∧ < формула >) |(< формула > ∨ < формула >) |(< формула >→< формула >) |(∃ < переменная >< формула >) |(∀ < переменная >< формула >) |(∀ < пред. переменная >< формула >) |(∃ < пред. переменная >< формула >), < терм > ::= < константа > | < переменная > | < n − арный функ. символ > (< терм >, ...). Чтобы не писать лишних скобок, мы применяем ранее введенное правило приоритетов операций: P r (∃) = P r (∀) = P r (¬) > P r (∧) > P r (∨) > P r (→) . Очевидно, чтобы интерпретировать формулы языка логики второго порядка, достаточно лишь слегка скорректировать сформулированные правила для семантики языков первого порядка, добавив возможность интерпретировать “новые” формулы с предикатными переменными. Приведем поэтому только те определения, которые существенно меняются по сравнению с семантикой языков первого порядка. Определение 3.1 Интерпретацией для языка логики второго порядка называется тройка (M, ξ, η), где M — алгебраическая система, ξ : Var → M, k k k k η : VarPred → B , B := χ : L → {0, 1} L ⊂ M . Таким образом, если символ предметной переменной интерпретируется элементом выбранного универсума, то символ k-арной предикатной переменной интерпретируется характеристической функцией k-арного отношения на универсуме. Для вычисления истинностного значения формул языка логики второго порядка необходимо в дополнение к соответствующим правилам, сформулированным для логики первого порядка, использовать следующие правила:
21 (i) v(X k (t1 , . . . , tk )) := η(X k )([t1 ], ..., [tk ]), где X k ∈ VarPredk , а все ti ∈ TER; (ii) v((∀Y ) (P)) := min vηY (P) : Y ∈ Bk , (iii) v((∃Y ) (P)) := max vηY (P) : Y ∈ Bk ,
где символом vηY (P) обозначено истинностное значение формулы P в интерпретации (M, ξ, ηY ), Y, X=Y ηY (X) := η(X), X 6= Y.
4
Логические языки с равенством
Очень часто в алфавит языков логики первого или второго порядка, предназначенных для формализации математических или естественнонаучных утверждений, включается двуместный предикатный символ равенства, обозначаемый, как правило, символом =. Такие языки будем называть языками с равенством. Заметим, что вместо = (x, y) принято писать x = y. Пусть задана алгебраическая система M для интерпретации формул языка с равенством. Вообще говоря, если ничего дополнительно не требовать, то предикатному символу равенства может соответствовать в ней двуместное отношение, никак не соотносящееся с привычным для нас понятием равенства. Чтобы избежать такой ситуации, принято требовать, чтобы в M был выполним набор предложений, называемых аксиомами равенства, характеризующих особые свойства отношения равенства. Для языка первого порядка аксиомы равенства следующие: (R) ∀x (x = x), (S) ∀x∀y(x = y → y = x), (T ) ∀x∀y∀z(x = y ∧ y = z → x = z), (F ) ∀x1 . . . ∀xn ∀y1 . . . ∀yn ((x1 = y1 ∧ x2 = y2 ∧ . . . ∧ xn = yn ) → (ϕn (x1 , . . . , xn ) = ϕn (y1 , . . . , yn )), (P ) ∀x1 . . . ∀xn ∀y1 . . . ∀yn ((x1 = y1 ∧ x2 = y2 ∧ . . . ∧ xn = yn ) → (P n (x1 , . . . , xn ) = P n (y1 , . . . , yn )). Здесь (R), (S), (T ) — аксиомы, выражающие, соответственно, рефлексивность, симметричность и транзитивность отношения равенства. (F ) и (P ) — это схемы аксиом, т.е. “шаблоны” бесконечного, вообще говоря, множества аксиом. Отдельные аксиомы получаются из схем (F ) и (P ) подстановкой вместо ϕn любой
22
Логические языки с равенством
выразимой в рассматриваемом языке n-местной функции (т.е. терма с n различными символами переменных), а вместо P n — любого выразимого в этом языке n-местного предиката (т.е. атомарной формулы с n свободными переменными). Получаемые таким образом аксиомы называются вариантами соответствующих схем аксиом. Схемы аксиом (F ) и (P ) выражают, соответственно, неразличимость “равных” объектов (элементов универсума) при помощи выразимых в данном языке функций и предикатов. Для языка логики второго порядка набор аксиом равенства состоит из аксиом (R), (S), (T ) и аксиом (F 0 ) и (P 0 ), заменяющих схемы аксиом (F ) и (P ) соответственно: (F 0 ) ∀f n ∀x1 . . . ∀xn ∀y1 . . . ∀yn ((x1 = y1 ∧ x2 = y2 ∧ . . . ∧ xn = yn ) → (f n (x1 , . . . , xn ) = f n (y1 , . . . , yn )), (P 0) ∀X n ∀x1 . . . ∀xn ∀y1 . . . ∀yn ((x1 = y1 ∧ x2 = y2 ∧ . . . ∧ xn = yn ) → (X n (x1 , . . . , xn ) = X n (y1 , . . . , yn )). Заметим, что в (P 0) используется символ n-арной предикатной переменной X n , а в (F 0 ) используется символ n-арной функциональной переменной f n . Строго говоря, согласно данному нами определению, в алфавите языков логики второго порядка нет специально зарезервированных символов для функциональных переменных. Однако это никак не ограничивает выразительной силы языка второго порядка: на самом деле функциональные переменные можно заменить предикатными переменными. Действительно, функцию можно отождествить с ее графиком, а графики функций это частный случай отношений. Например, “формулу” ∀f (P (f (x))) (где f — символ унарной функциональной переменной) можно считать просто сокращенным написанием формулы ∀X (f unc(X)∧(∀y(X(x, y) → P (y)))), где формула f unc(X) := ∀x∃!y X(x, y) выражает то факт, что X — график функции. Здесь использовано весьма распространенное сокращение ∃! (“существует и единственно”): ∃!xP(x) := ∃xP(x) ∧ ∀x∀y(P(x) ∧ P(y) → x = y). Таким образом, не ограничивая общности, можно считать, что в языках логики второго порядка с равенством присутствуют и символы функциональных переменных, либо, что то же самое, считать формулы, в которых появляются такие символы, просто сокращением формул, использующих только символы предикатных переменных.
23 Тем не менее, хотя истинность аксиом равенства в выбранной алгебраической системе и означает, что предикатный символ равенства будет интерпретироваться “разумно”, но она все-таки не гарантирует того, что он будет интерпретироваться именно равенством, т.е. совпадением элементов универсума. Поэтому в дальнейшем, имея дело с языками с равенством, будем дополнительно требовать, чтобы в выбранной алгебраической системе предикатному символу равенства соответствовало бы отношение равенства (совпадения) элементов универсума. Естественно, аксиомы равенства при этом автоматически оказываются истинными.
5
Арифметика Пеано
Рассмотрим в качестве первого содержательного примера языков логики предикатов языки для описания арифметических действий с натуральными числами. Для этой цели зададим сигнатуру σar := (0, s, +, ·, =), где 0 — символ константы “нуль”, s — символ унарной функции выделения следующего по порядку числа, + и · — символы бинарных функций суммы и произведения, и, наконец, = — предикатный символ равенства. Как и в случае с символом равенства, для символов + и · будем в дальнейшем писать (x + y) и (x · y) вместо +(x, y) и ·(x, y), соответственно, а так же не писать “лишние” скобки, приписывая символу · более высокий приоритет по сравнению с +, как это и принято в математике. Эта сигнатура задает два языка логики предикатов с равенством — первого LσI ar и второго порядка LσIIar соответственно, которые мы будем называть языками арифметики Пеано7 . Эти языки описывают только самые простые действия с натуральными числами “в пределах начальной школы”, в число которых, например, даже не входит возведение в степень. И все же даже такие простые на первый взгляд языки обладают, как мы в дальнейшем покажем, весьма неожиданными свойствами. Возникает вопрос: какие формулы языка арифметики Пеано имеют смысл? Очевидно, лишь те из них, которые верны для натуральных чисел (ведь именно для действий с ними предназначен этот язык). Выражаясь точнее, осмысленными разумно считать только формулы, выполнимые в алгебраической системе 7
Джузеппе Пеано (Giuseppe Peano) (1858 – 1932) — итальянский математик. Профессор Туринского университета (с 1890). Занимался изучением основных понятий и фактов анализа и формально-логическим обоснованием математики. Во всеобщее употребление вошла его аксиоматика натурального ряда чисел. Известен его пример непрерывной жордановой кривой, целиком заполняющей некоторый квадрат.
24
Арифметика Пеано
N , универсум которой есть множество натуральных чисел (с нулем), символ 0 соответствует нулю (т.е. 0N := 0), символ s соответствует функции прибавления единицы (т.е. sN (n) := n + 1), а символы + и · соответствуют функциям сложения и умножения двух чисел (т.е. +N (m, n) := m + n, ·N (m, n) := mn). Алгебраическую систему N будем в дальнейшем называть стандартной моделью арифметики. Например, формулы x = s(0) или ∀x∀y(¬y = 0 → ¬x = x + y) языка арифметики Пеано (заметим, что это формулы первого порядка, поэтому они принадлежат как LσI ar , так и LσIIar ), являются осмысленными утверждениями о натуральных числах, иначе говоря, выполнимы в N , а формула ∀x(x = 0), невыполнима в N , т.к. будучи “прочитанной” как утверждение о натуральных числах, она очевидно неверна. Назовем множество формул языка арифметики Пеано первого или второго порядка, соответственно, истинных в N , теорией элементарной арифметики T hi (N ) (соответствующего порядка, указываемого индексом i = I или i = II). В дальнейшем, если из контекста ясно, о каком языке арифметики — первого или второго порядка — идет речь, либо это не имеет значения, мы будем говорить просто о языке арифметики Пеано и о теории элементарной арифметики, не указывая порядок. Таким образом, теория элементарной арифметики T hi (N ) := {P ∈ Lσi ar : N |= P},
i = I, II
является набором формул соответствующего порядка, выражающего истинные факты для натуральных чисел. Легко заметить, что введенные понятия весьма неконструктивны. А именно, они не заключают в себе никакого способа проверки, принадлежит ли данная формула языка арифметики Пеано теории элементарной арифметики (т.е. действительно ли она описывает некоторое свойство натуральных чисел). Конечно, такой алгоритм, пусть и очень сложный, найти было бы весьма заманчиво. Ведь тогда творческую работу математиков, доказывающих все новые теоремы теории чисел, можно было бы заменить на программу, работающую по такому алгоритму. Кстати, то же самое можно сказать и о любой другой математической (или даже шире — любой вообще научной) теории. Попытаемся найти такой алгоритм. Для этого проанализируем, как на самом деле математики проверяют истинность утверждений, например, из теории чисел. Конечно, не путем “прямого перебора” всех возможных наборов чисел, поскольку такая проверка в силу бесконечности множества натуральных чисел никогда бы не завершилась! Для проверки истинности данного утверждения математик ищет его доказательство, исходя из некоторого набора аксиом. Иначе говоря, математик имеет в виду некоторый набор утверждений (называемых аксиомами) Γ, не просто истинных в данной модели M, но и в каком-то смысле вполне ее характеризующих, иначе говоря, таких, что можно надеяться, что лю-
25 бое истинное утверждение о данной модели является логическим следствием этих аксиом. Часто говорят при этом, что Γ — система аксиом для модели M. Далее он пытается проверить, является ли данная формула P логическим следствием аксиом Γ (в этом и состоит процесс доказывания). Если Γ |= P, то P истинно в данной модели, поскольку любая модель всех одновременно формул Γ, в частности и M, является и моделью P. О том, как устроен процесс доказывания, речь еще впереди. Сейчас же отметим, что успешность подобного рода действий во всяком случае должна зависеть от того, насколько удачно подобрана система аксиом Γ. Действительно, обозначим Γ|= множество всех логических следствий Γ, а T h(M) — множество всех утверждений, истинных в модели M. Если Γ выбрано корректно, то есть так, что все формулы из Γ истинны в M, то Γ|= ⊂ T h(M). Но нам бы, естественно, хотелось, чтобы все формулы, истинные в M, были бы логическими следствиями Γ. Но как это обеспечить? Иначе говоря, как выбрать множество Γ, чтобы Γ|= = T h(M)? Вопрос об удачном подборе такой системы аксиом Γ для алгебраической системы M часто называют вопросом аксиоматизации M). На поставленный вопрос есть, конечно, и тривиальный ответ: Γ := T h(M), очевидно, удовлетворяет этому требованию. Но этот ответ совершенно не интересен: ведь вся затея с аксиомами нужна была как раз для того чтобы, “конструктивно” (т.е. алгоритмически) описывать множество T h(M), например, найти алгоритм проверки того, является ли данная формула истинной в модели M. Для этого множество Γ должно быть в определенном смысле “обозримым” (желательно вообще конечным или уж во всяком случае таким, которое может быть построено при помощи некоторого алгоритма), и конечно, не может совпадать с T h(M). Вернемся к рассмотрению элементарной арифметики. Попытка предложить для нее разумную систему аксиом была осуществлена Пеано. Он показал, что практически все основные теоремы теории чисел (т.е. истинные утверждения о натуральных числах), записываемые в языке арифметики первого порядка, являются логическими следствиями аксиом (P A1 ) ∀x ¬(s(x) = 0), (P A2 ) ∀x ∀y (s(x) = s(y) → x = y), (P A3 ) ∀x (x + 0 = x), (P A4 ) ∀x (x · 0 = 0), (P A5 ) ∀x ∀y (x + s(y) = s(x + y)), (P A6 ) ∀x ∀y (x · s(y) = x + x · y),
26
Арифметика Пеано (P A7 ) P(0) ∧ ∀x (P(x) → P(s(x))) → ∀y P(y), где P — любая формула языка LσI ar с одной свободной переменной. |=
Мы будем называть формальной арифметикой Пеано первого порядка P AI множество всех логических следствий аксиом (P A1 )–(P A7). Формальной арифмети|= кой Пеано второго порядка P AII будем называть множество всех логических следствий аксиом (P A1 )–(P A6) и аксиомы ∀X (X(0) ∧ ∀x (X(x) → X(s(x))) → ∀x X(x))
(IND).
Сами эти аксиомы мы также будем называть аксиомами Пеано. Аксиома (P A1 ) утверждает, что нуль — первый по порядку элемент натурального ряда. Аксиома (P A2 ) утверждает, что функция выбора следующего по порядку элемента инъективна, иначе говоря, что за каждым числом непосредственно следует только одно число. (P A3 ) и (P A4 ) задают правила прибавления нуля и умножения на нуль, а (P A5 ) и (P A6 ) связывают между собой функции сложения и умножения с функцией выбора следующего по порядку элемента. Наконец, (P A7 ) представляет собой схему аксиом (т.е. “шаблон” бесконечного числа аксиом) и выражает принцип математической индукции. Тот же самый принцип выражает и аксиома второго порядка (IND). Стоит еще раз подчеркнуть, что отличие формальной арифметики Пеано первого и второго порядка состоит только в написании принципа математической индукции. В первом случае он записывается при помощи бесконечного числа аксиом, объединенных в одну схему аксиом, а во втором — в одну аксиому второго порядка. Очевидно, что стандартная модель N является моделью для арифметики Пеано (как первого, так и второго порядка). А есть ли у арифметики Пеано другие модели? Стоит отметить, что заданный вопрос весьма глубокий, и по сути дела является вопросом о том, что вообще следует понимать под натуральными числами. В самом деле, действия с натуральными числами являются для нас настолько привычными, что мы и не задумываемся об их смысле, а именно, о том, что такое число, что следует понимать под суммой и произведением чисел и т.п. В окружающем нас мире натуральные числа отсутствуют — это лишь абстракция, “идея”, присутствующая только в нашем сознании (хотя, конечно, при построении этой, как и всякой другой, абстрактной конструкции, человечество использует идеализацию свойств реальных объектов окружающего мира). Значит, ответить на вопрос о том, что такое число, просто указав на какой-то объект или явление природы, невозможно. Поэтому математики, в особенности те из них, которые с особым трепетом относятся к строгости рассуждений, как правило, дают другой, весьма естественный и вместе с тем достаточно строгий (хотя и не вполне очевидный) ответ на этот вопрос. А именно, натуральные числа и действия с ними можно определить просто как элементы алгебраической системы,
27 являющейся моделью всех “осмысленных утверждений о числах”. Слова “осмысленные утверждения о числах” взяты в кавычки, так как под этим на самом деле понимается некоторый набор утверждений языка арифметики Пеано первого или второго порядка, которые мы условимся считать таковыми. Раньше мы говорили об осмысленности формул языка арифметики, если они были выполнимы в стандартной модели N . Но если мы хотим строго определить сами понятия натуральных чисел и действий с ними, то на такое понимание “осмысленности” опираться уже нельзя, так как, строго говоря, пока не определено даже само множество натуральных чисел N, являющееся универсумом алгебраической системы N . Поэтому осмысленными в данном случае естественно считать лишь все логические следствия выбранной “разумной” системы аксиом, например, в нашем случае формальную арифметику Пеано первого или второго порядка. Тогда определение натуральных чисел и действий с ними как элементов соответствующей модели формальной арифметики становится уже достаточно строгим, поскольку оно не ссылается на интуитивное понятие числа как количества объектов любого сорта. Кстати, именно таким способом обычно строго определяют все другие базовые математические понятия, которые мы привыкли считать интуитивно ясными и неопределимыми. Например, в геометрии такими базовыми и неопределимыми понятиями принято считать точки, прямые и плоскости. “В природе” геометрических точек, прямых и плоскостей не существует. Эти понятия получены в результате систематизации многотысячелетнего опыта обращения людей с реальными предметами очень маленьких размеров (в случае точек), очень тонкими и длинными предметами (в случае прямых) и очень плоскими предметами больших размеров (в случае плоскостей), а именно, в результате абстрактизации (идеализации) свойств такого рода предметов. Полученная в результате умственная конструкция — мир геометрических точек, прямых и плоскостей — далее описывается при помощи подходящего набора аксиом, т.е. такого, который бы адекватно нашему интуитивному представлению описывал свойства объектов этого мира и, по возможности, был бы достаточно полным в том смысле, что все (или, по крайней мере, значительная часть) истинные (опять-таки в соответствии с нашим интуитивным представлением) утверждения о таких объектах были бы логическими следствиями этих аксиом. Выбор системы аксиом, естественно, при этом соответствует только нашим интуитивным представлениям об “адекватности” и “полноте” и поэтому никак не может быть формализован. Единственное формальное и к тому же естественное требование к набору аксиом — непротиворечивость. Так, большинство людей, ограничивающих свое представление о физическом мире современной физикой, могут вполне удовлетвориться аксиомами Евклида8 (с аксиомой или без аксиомы параллельных). Когда система аксиом 8
Евклид (Euclid) (около 325 до н.э.– около 265 до н.э.) — древнегреческий ученый. Биографические данные о нем весьма ограничены, известно лишь, что его деятельность проходила
28
Арифметика Пеано
выбрана, можно дать и строгое определение точкам, прямым и плоскостям как элементам алгебраической системы, являющейся моделью выбранных аксиом (а значит, и всех их логических следствий). Таким образом, эти понятия, строго говоря, становятся зависимыми от выбранной системы аксиом. Итак, натуральные числа и действия с ними будут пониматься как элементы алгебраической системы, являющейся моделью формальной арифметики Пеано первого или второго порядка, в зависимости от того, какую систему аксиом — первого или второго порядка — мы будем выбирать. В связи с этим возникают два связанных между собой вопроса. Во-первых, насколько выбор набора аксиом влияет на получаемое понятие натуральных чисел (a priori это понятие зависит от выбранных аксиом)? Во-вторых, сколько вообще различных “версий” натуральных чисел определяются выбранной системой аксиом (т.е. сколько разных моделей у выбранных аксиом). Простой ответ на второй вопрос очевиден: ни аксиомы Пеано первого, ни второго порядка не определяют натуральные числа и действия с ними однозначно. Действительно, предположим, что формальная арифметика Пеано (безразлично какого порядка) имеет модель. Элементы универсума этой модели мы считаем “настоящими” натуральными числами, т.е. таким образом эта модель становится стандартной моделью арифметики. Но тогда очевидно, что моделью формальной арифметики Пеано будет являться и любая алгебраическая система M, универсум которой — произвольно выбранM ная последовательность {xi }∞ := x0 , sM (xn ) := xn+1 , +M (xm , xn ) := xm+n , i=0 , 0 ·M (xm , xn ) := xmn ). Однако более пристальное рассмотрение всех таких моделей убеждает, что все они между собой весьма схожи, а именно, они изоморфны в смысле следующего определения. Определение 5.1 Пусть A и B алгебраические системы для языка Lσ . A называется изоморфной B (пишут A ' B), если существует биекция π: A → B, удовлетворяющая условиям (i) π(cA ) = cB для всех c ∈ Const, (ii) π(f A (t1 , t2 , . . . , tn )) = f B (π(t1 ), π(t2 ), . . . , π(tn )) для всех f ∈ Funcn , (iii) P A (t1 , t2 , . . . , tn ) = P B (π(t1 ), π(t2 ), . . . , π(tn )) для всех P ∈ Predn . Очевидно, что отношение изоморфности моделей является отношением эквивалентности, т.е. оно симметрично, рефлексивно и транзитивно (проверьте это!). Не менее тривиально проверяется и следующее свойство. в Александрии в начале III в. до н.э. Является автором первого дошедшего до нас трактата по математике "Начала", в котором подведен итог предшествующему развитию древнегреческой математики, в частности изложены планиметрия, стереометрия и ряд вопросов теории чисел. Создатель геометрической системы (евклидовой геометрии), на которой основывается вся классическая физика. Основоположник геометрической оптики.
29 Упражнение 5.1 Пусть A и B алгебраические системы для языка Lσ , и пусть A ' B. Докажите, что для любого предложения P ∈ Lσ верно A |= P, если и только если B |= P. Данное упражнение показывает, что изоморфные алгебраические системы неразличимы при помощи языков логики первого и второго порядка. Поэтому уточним поставленный выше вопрос о существовании моделей формальной арифметики Пеано, отличных от стандартной, следующим образом: существуют ли модели формальной арифметики Пеано, неизоморфные стандартной? Оказывается, ответ на этот вопрос различен для формальной арифметики первого и второго порядка. Для формальной арифметики второго порядка ответ дает следующая теорема. Теорема 5.1 (Дедекинд9 ) Любые две модели формальной арифметики Пеано второго порядка изоморфны между собой. |=
Доказательство: Пусть A |= P AII . Докажем, что A ' N . Определим функцию π: N → A следующим образом: (i) π(0) := 0A , (ii) π(n + 1) := sA (π(n)). В силу принципа математической индукции функция π, таким образом, корректно задана на всем множестве N. Заметим, что в силу аксиомы (IND) принцип |= математической индукции действует во всех моделях P AII . Выполнение условий (i)–(iii) определения изоморфизма алгебраических систем при таком определении очевидно (проверьте это!). Осталось только проверить, что таким образом определенная функция действительно является биекцией. Шаг 1. Докажем, что π — инъекция, то есть из m 6= n следует π(m) 6= π(n). Поведем доказательство по методу математической индукции в N. • База индукции. Пусть n = 0, m 6= 0. Тогда m = k + 1 для некоторого k. Этот факт верен, вообще говоря, только для стандартной модели. Тогда π(m) = π(k + 1) = sA (π(k)) 6= 0A = π(0N ) в силу (P A1 ). База индукции доказана. 9
Юлиус Дедекинд (Julius Dedekind) (1831 – 1916) — немецкий математик. В трудах Дедекинда заложены основы современной алгебры, изучающей произвольные поля, кольца, группы, структуры и модули. В частности, ввел понятие кольца и дал современное общее определение идеала. Ввел в математику в самом общем виде теоретико-множественное понятие отображения.
30
Арифметика Пеано • Шаг индукции. Пусть m 6= n + 1. Докажем, что при этом π (m) 6= π (n + 1). Рассмотрим два случая. Случай 1. m = 0. Тогда π(n + 1) = sA (π(n)) 6= 0A = π(0N ) = π(m). Случай 2. m = k + 1. Из предположения m 6= n + 1 следует k 6= n. Но тогда π(k) 6= π(n) в силу предположения индукции, а значит, sA (π(k)) 6= sA (π(n)) в силу (P A2 ). Поэтому π(m) = π(k + 1) = sA (π(k)) 6= π(n + 1) = sA (π(n)).
В силу принципа математической индукции, таким образом, доказана инъективность функции π. Шаг 2. Докажем, что π сюръективна, то есть, что для всех a ∈ A выполнено a ∈ Im(π). Для этого воспользуемся принципом математической индукции, но |= на этот раз в A. Напомним, что этот принцип действует во всех моделях P AII в силу (IND). База индукции в этом случае тривиальна: 0A ∈ Im(π) по определению π. Пусть теперь b ∈ Im(π), то есть b = π(n) для некоторого n ∈ N. Тогда и sA (b) = π(n + 1) ∈ Im(π) в силу определения π, т.е. доказан и шаг индукции. В силу произвольности b по принципу математической индукции все a ∈ A принадлежат образу π, иначе говоря, функция π сюрьективна. В дальнейшем мы покажем, что утверждение, аналогичное теореме Дедекинда, неверно для формальной арифметики Пеано первого порядка, а именно, последняя имеет бесконечно много разных с точностью до изоморфизма моделей. Более того, среди этих моделей можно найти и такие, которые обладают универсумом сколь угодно большой наперед заданной мощности. Иначе говоря, формальная арифметика Пеано первого порядка допускает бесконечно много принципиально разных “версий” натуральных чисел и действий над ними, в том числе и таких, в которых “множество натуральных чисел” несчетно (т.е. неизоморфно “стандартному” множеству натуральных чисел N)! Почему же доказательство теоремы Дедекинда не работает для формальной арифметики Пеано первого порядка? Анализируя доказательство, мы видим, что в первом шаге нет никаких рассуждений, которых нельзя было бы провести для арифметики первого порядка (на этом шаге мы пользовались лишь аксиомами (P A1 ), (P A2 ) и принципом математической индукции в N ). Проблема, таким образом, во втором шаге, где мы воспользовались уже принципом математической индукции в A, а именно, тем, что для любого свойства X элементов универсума A верно следующее: если 0A обладает свойством X (база индукции), а также для любого b ∈ A из обладания b свойством X следует обладание sA (b) тем же свойством, то свойством X обладают все элементы A. Для арифметики второго порядка выполнимость этого принципа в любой модели гарантирована аксиомой (IND). Однако в арифметике первого порядка вместо этой аксиомы имеется гораздо более слабый набор (схема) аксиом (P A7 ). Он гарантирует выполнение вышеприведенного принципа не для всех свойств X, а лишь для тех из них, которые можно записать при
31 помощи формул P языка арифметики Пеано первого порядка с одной свободной переменной. Заметим, что множество таких свойств очевидно счетно, так как алфавит языка конечен. В то же время всех вообще свойств элементов множества A гораздо больше. Действительно, такие свойства можно тривиально отождествить с подмножествами универсума A (каждому свойству X соответствует подмножество элементов A, обладающих этим свойством, а каждому подмножеству A соответствует свойство принадлежности этому подмножеству). Так как A не может быть конечным множеством (в силу (P A1 ) и (P A2 )), то множество всех свойств элементов A более чем счетно! Таким образом, обязательно найдутся свойства, невыразимые формулами первого порядка с одной свободной переменной, и таким вполне может оказаться свойство принадлежности множеству Im(π), а значит, второй шаг доказательства становится необоснованным. Еще одно важное замечание: само существование стандартной модели арифметики, использованной в доказательстве теоремы Дедекинда, тоже не обеспечивается аксиомами Пеано. Строго обосновать существование стандартной модели арифметики, обладающей привычными для нас свойствами, можно только при помощи введения специальных “более сильных” аксиом, например, аксиом теории множеств, речь о которой впереди.
6 6.1
Элементы теории доказательств Формальные cистемы
В предыдущей главе мы отложили вопрос о том, как проверять, является ли данная формула P ∈ Lσ логическим следствием заданного множества формул Γ ∈ Lσ . Очевидно, что осуществить такую проверку в соответствии с определением не представляется возможным. Действительно, нельзя просто перебрать всевозможные модели всех одновременно формул множества Γ, чтобы проверить, являются ли они моделями формулы P, т.к. число таких моделей может быть бесконечно, за исключением разве что некоторых тривиальных случаев. Математики заменяют такую проверку поиском доказательства формулы P из набора формул Γ, т.е. поиском способа ”свести” формулы Γ и, возможно, еще некоторые дополнительные формулы, к формуле P, при помощи конечного числа логических заключений (иногда говорят логических переходов) являющихся общепризнанно элементарными. В этой главе мы формализуем процесс доказывания таким образом, чтобы полученная формализация была применима к языкам логики предикатов первого порядка. Будем различать семантические и формальные истины, определяемые для формул Γ. Семантические истины это те формулы, которые семантически следуют из Γ, формальные — те, которые выводятся из данного набора при помощи
32
Элементы теории доказательств
принятых правил доказывания. Важно отметить, что истина, полученная при помощи формального вывода (доказательства) существенно зависит от того, какие правила доказывания мы считаем допустимыми. В любом случае хотелось бы, чтобы формулы выводимые (доказуемые) были истинны семантически. Иначе правила вывода получаются некорректны (они существуют для вывода семантических истин, а не всякой ерунды). Но, конечно, желательно, чтобы наши правила были в определенном смысле полны, то есть формально выводились бы все семантические истины. Рассмотрим формальный язык L ⊂ V ∗ над алфавитом A. Будем называть секвенцией выражение вида V1 , V2 , . . . , Vn ` V, где Vi ∈ L, i = 1, . . . , n и V ∈ L, либо выражение вида ` V, где V ∈ L. В первом случае будем читать секвенцию V1 , V2 , . . . , Vn ` V как “V1 , V2 , . . . , Vn выводит (или доказывает, если L — какой-либо логический язык) V ”, или “из V1 , V2 , . . . , Vn следует V ”. Во втором случае секвенцию ` V будем читать как “V выводима”, или выводима из пустого множества посылок (доказуема, если L — какой-либо язык логики). Теперь введем следующее определение. Определение 6.1 Будем говорить, что задана формальная система Φ, если заданы (i) набор секвенций вида ` V , где V ∈ L, называемых аксиомами формальной системы; (ii) набор секвенций вида V1 , V2 , . . . , Vn ` V где V ∈ L и Vi ∈ L, i = 1, . . . , n, называемых простыми правилами вывода; (iii) набор условных правил вывода вида “из Γ0 ` V 0 и Γ1 ` V 1 следует Γ ` V ”, где Γ0 , Γ1 , Γ конечные подмножества L, и {V 0 , V 1 , V } ⊂ L. Определение 6.2 Слово (формула) V ∈ L называется непосредственным следствием слов (формул) {V1 , V2 , . . . , Vn } ⊂ L, если либо V1 , V2 , . . . , Vn ` V , где V1 , V2 , . . . , Vn ` V — одно из простых правил вывода в формальной системе Φ, либо если найдутся такие конечные множества Γ0 ⊂ L, Γ1 ⊂ L и такие слова (формулы) V 0 ∈ L и V 1 ∈ L, что правило “из Γ0 ` V 0 и Γ1 ` V 1 следует V1 , V2 , . . . Vn ` V ” является одним из условных правил вывода формальной системы Φ.
6.1 Формальные cистемы
33
Определение 6.3 Слово (формула) V ∈ L выводимо (доказуемо) из {V1 , V2 , . . . , Vn } ⊂ L, если найдется такая последовательность формул {Wi }ki=1 , где k ∈ N, где Wk = V и каждое из слов Wi ∈ L, где i = 1, . . . , k является (i) либо аксиомой формальной системы Φ; (ii) либо одной из формул V1 , V2 , . . . , Vn ; (iii) либо непосредственным следствием некоторого подмножества слов (формул) Γ ⊂ {W1 , W2 , . . . , Wi−1 }. В этом случае будем писать V1 , V2 , . . . , Vn `Φ V, причем индекс Φ, указывающий на используемую формальную систему, будем опускать, если это не ведет к неясности. Определение 6.4 Формальная система Φ называется корректной, если для любого множества Γ ⊂ L и для любого P ∈ L из Γ `Φ P следует Γ |= P, то есть все формальные истины, получаемые при помощи данной формальной системы, являются семантическими истинами. Определение 6.5 Формальная система Φ называется полной, если для любого множества Γ ⊂ L и для любого P ∈ L из Γ |= P следует Γ `Φ P, то есть все семантические истины можно получить формально. Таким образом определенное понятие формальной системы применимо вовсе не только к языкам логики. Это просто инструмент для операций с цепочками символов заданного формального языка. Приведем простейший пример формальной системы. Пример 6.1 Рассмотрим язык L, совпадающий со множеством всех слов над алфавитом {a, b}, и формальную систему, содержащую две аксиомы • ` a, • ` b, и бесконечное количество правил вывода, объединенных в две группы • A ` aAa, • A ` bAb, где A — любое непустое слово языка. Для этой формальной системы, например, можно получить ` aaa, ` bab, ` babab. В частности, из пустого множества выводимы любые палиндромы нечетной длины (цепочки символов, которые читаются одинаково слева направо и справа налево). Этот же пример показывает и различие семантической и формальной истин. К примеру, условимся
34
Элементы теории доказательств
считать “осмысленными” (семантически истинными) все палиндромы, а формальными истинами — все, что выводимо из пустого множества. Тогда не все семантические истины оказываются формальными (то есть формальная система неполна), но формальные истины всегда являются семантическими, иначе говоря, формальная система корректна. Другой пример формальной системы, не имеющей отношения к логике: формальная система для языка записи шахматных позиций. У нее одна аксиома — это начальная позиция, а правила вывода — правила ходов. Стоит отметить, что в понятие позиции входит не только положение фигур на доске, но также и признаки того, делал ли игрок ход королем или ладьями и кто из игроков сделал последний ход. В следующем разделе мы будем изучать формальную систему, применимую к языку логики предикатов первого порядка, правила вывода которой моделируют те элементарные логические заключения, которые используют математики при доказательстве формул.
6.2 Естественная дедукция
6.2
35
Естественная дедукция
Логические заключения, которые используют люди в своих рассуждениях, определяется рядом элементарных правил, которые сформулированы еще Аристотелем. Формализация этих правил приводит к различным формальным системам для логических языков. Впредь мы будем рассматривать одну из таких формальных систем для языка логики предикатов первого порядка, называемую естественной дедукцией (Natural deduction). Аксиом в ней нет, а правила вывода можно разделить на две группы: правила введения (обозначаются буквой i — "introduce", слева соответствующий значок отсутствует, справа присутствует), и правила исключения (обозначаются буквой e — "eliminate", справа соответствующий значок отсутствует, слева присутствует) для каждого логического значка и квантора (∨, ∧, →, ¬, ∀, ∃). При формулировке этих правил мы покажем их запись в строчной форме и в форме столбца (дерева), а именно, строчную запись A ` B можно заменить записью в столбец (в виде дерева) B . A правило исключения A ∧B (∧e1 ) A∧B `A “и” A (∧e2 )
правило исключения “и”
A∧B `B
A∧B B
(∧i)
правило введения “и”
A, B ` A ∧ B
A B A∧B
(∨i1 )
правило введения “или” слева
A` A∨B
A A∨B
(∨i2 )
правило введения “или” справа
A` B∨A
A B∨A [A]1 C
[B]1 правило исключения Если A ` C и B ` C, C A∨B 1 (∨e) “или” C то A ∨ B ` C Иначе говоря, последнее правило можно “прочесть” так: если C доказано с использование допущения A, и C доказано с использованием допущения B, и при этом мы знаем, что верно A ∨ B, то можно считать доказанным C (уже без предположений о верности A и B). В последнем правиле использовалось следующее обозначение: посылка в квадратных скобках означает, что ее можно исключить из рассмотрения. Можно представить себе это как “обрывание” листьев дерева доказательства, соответствующих тем посылкам, которые можно исключить. Индексом около квадратных скобок показывается то место в дереве, где “оборванный лист” был использован (то есть посылки, заключенные в квадратные скобки, стали ненужными). Дерево доказательства можно читать так: необорван-
36
Элементы теории доказательств
ные листья доказывают корень. Читателю предоставляется возможность самому разобраться, какой формой записи пользоваться удобно, а именно, запись в виде дерева весьма компактна, но не всегда легко читаема. Зато запись в строчку (с подробными комментариями), как правило, легко читается, но редко получается компактной. правило исключения импликации A A→B A, A → B ` B (→ e) или modus ponens (m.p.) B [A]1 Если A ` B, то B 1 (→ i) правило введения импликации A→B `A→B Обратимся к правилам, имеющим дело с логическим значком отрицания. Введем псевдоформулу ⊥ “ложь”, истинностное значение которой во всех интерпретациях будем считать нулем. С помощью такой псевдоформулы можно, например, весьма легко записать противоречивость множества формул Γ следующим образом: Γ |= ⊥. Теперь можно сформулировать правила для значка отрицания и константы "ложь": (⊥e) правило исключения константы ложь ⊥ ` A ⊥ A Данное правило допускает простую интерпретацию: из лжи следует все что угодно (ex falsum sequitor quodlibet). Даже несведущим в формальной логике людям это правило хорошо известно; например, оно применяется в житейском споре в виде восклицания “если это (очевидно ложное для собеседника утверждение) верно, то я Папа Римский”. ¬A A (⊥i) правило введения константы “ложь” ¬A, A ` ⊥ ⊥
(¬i)
правило введения отрицания
Если A ` ⊥, то ` ¬A
[A]1 ⊥ ¬A
1
[¬A]1 ⊥ 1 Если ¬A ` ⊥, то ` A A Наиболее “нетривиальное” правило — последнее. При использовании этого правила непонятно, как конструктивно выписать ` A, что породило два крупных направления в логике — классическая и интуиционистская (не принимает последнего правила). Чтобы доказать какое-либо утверждение, в интуиционистской логике необходимо предъявить цепочку доказательства. правило сведения к противоречию (RAA) (reductio ad absurdum)
6.2 Естественная дедукция
37
Теорема 6.1 Правило сведения к противоречию (RAA) эквивалентно закону исключенного третьего (tertium non datur) ` (A ∨ ¬A)
(T ND)
Доказательство: 1. Докажем, что из правила сведения к противоречию (RAA) следует закон исключенного третьего (TND). Доказательство удобно записать в виде следующего дерева. [A]1 [¬(A ∨ ¬A)]2 A ∨ ¬A ⊥ 1, (¬i) ¬A (∨i) [¬(A ∨ ¬A)]2 (A ∨ ¬A) (⊥i) ⊥ 2, (RAA) A ∨ ¬A
(∨i) (⊥i)
2. Докажем, что из закона исключенного третьего (TND) следует правило сведения к противоречию (RAA). Пусть ¬A ` ⊥, тогда
A ∨ ¬A
(T N D)
A
[¬A]1 ⊥ 1, (⊥e) A (∨e)
Таким образом нами была доказана эквивалентность закона исключенного третьего и правила сведения к противоречию. Подход интуиционистов нельзя отметать сразу, поскольку уверенными можно быть в истинности только проверяемых утверждений. Рассмотрим в качестве примера утверждение о бесконечной последовательности бит, например (i) данная последовательность состоит только из единиц; (ii) в данной последовательности есть хотя бы один нуль. Очевидно, что ни одно из этих утверждений не может быть проверено (для проверки их понадобилось бы бесконечное время). Классическая логика тем не менее утверждает, что ровно одно из утверждений (i) и (ii) является истинным (в силу закона исключенного третьего (TND)). Интуиционистский же подход в данном случае является более осторожным: поскольку ни одно из рассматриваемых утверждений практически проверено быть не может, то нельзя утверждать истинность того, что “верно либо (i), либо (ii)”.
38
6.3
Элементы теории доказательств
Подстановки в термах и формулах
Для того, чтобы сформулировать правила введения кванторов всеобщности и существования, будем считать неразличимыми формулы, которые отличаются только именами связанных переменных. Например, ∀yP (x, y) и ∀zP (x, z) будем считать одной и той же формулой. Нам также понадобится ввести операцию замены переменных в формуле. В дальнейшем будем понимать под обозначением P[t/x], где P ∈ LσI , x ∈ Var, и t ∈ TER(LσI ) замену всех вхождений переменной x на терм t. Мы определим замену переменных для языка логики первого порядка следующим образом. Определение 6.6 (Замена переменных для термов). Пусть s, t ∈ TER, x ∈ Var. Определим замену s[t/x] следующим образом. (i) Если s = c ∈ Const, то s[t/x] := c. (ii) Если s = y ∈ Var, причем y отлично от x, то s[t/x] := y. (iii) Если s = x ∈ Var, то s[t/x] := t. (iv) Если s = f k (t1 , . . . , tk ), где f k — k-арный функциональный символ, и t1 , . . . , tk ∈ TER(LσI ), то s[t/x] := f k (t1 [t/x], ..., tk [t/x]). Пример 6.2 Пусть c — символ константы, x, y — символы предметных переменных, а f — тернарный функциональный символ. Тогда h i f (s(x, c), c, y) f (x, s(x, y), y)/x = f (s(f (x, s(x, y), y), c), c, y)
Определение 6.7 (замена переменных для правильных формул). Пусть t ∈ TER(LσI ), x ∈ Var, P, Q ∈ Γ, Ak — k-арный предикатный символ. Определим замену так: (i) Если P — атомарная формула, т. е. P = Ak (t1 , ..., tk ), то P[t/x] = Ak (t1 , ..., tk )[t/x] := Ak (t1 [t/x], ..., tk [t/x]). (ii) Если P = (¬Q), то P[t/x] := (¬Q[t/x]). (iii) Если P = (R ∗ Q), то P[t/x] = (R[t/x] ∗ Q[t/x]), где ∗ — это один из символов ∧, ∨ или →.
6.3 Подстановки в термах и формулах
39
(iv) Если P = (ζyQ), где ζ — один из кванторов ∀ или ∃, то 1. Если y 6= x и y 6∈ V AR(t), то (ζyQ)[t/x] = (ζyQ[t/x]), где V AR(t) — множество всех символов предметных переменных в терме t. 2. Если y 6= x, но y ∈ V AR(t), то (ζyQ)[t/x] = (ζrQ[r/y][t/x]), где r 6∈ V AR(t) (см. пример). 3. Если y = x, то замена не делается, т. е. (ζxQ)[t/x] = (ζxQ). Пример 6.3 Пусть < — бинарный предикатный символ (вместо < (x, y) будем писать x < y), f — унарный функциональный символ, x и y — символы предметных переменных. Тогда h i f (y) ∃y (x < y) /x = ∃z (f (y) < z)
(а не ∃y (f (y) < y)).
Теперь мы можем сформулировать правила введения и исключения для кванторов всеобщности и существования: ∀xA правило исключения ∀xA ` A [y/x] , где (∀e) σ квантора всеобщности y ∈ T ER(LI ) A [y/x]
(∀i)
правило введения квантора всеобщности
Если Γ ` A [y/x] , то Γ ` ∀xA, [ где y∈ / Free(Q)
A [y/x] ∀xA
Q∈Γ
Заметим, что в последнем правиле весьма важно предположение о том, что y не входит свободно ни в одну из формул множества Γ (иначе говоря, y — “произвольная” переменная). Это правило иногда формулируют так: если Γ ` A [y/x] для произвольного y, то Γ ` A для любого x. Опустить “предположение” о произвольности y здесь нельзя. Например, введем в арифметике Пеано две формулы с одной свободной переменной: Odd(x) и Even(x), означающие по смыслу, что x соответственно “нечетное” или “четное” число. Запишем их следующим образом Even(x) := ∃y(2 · y = x), где 2 := s(s(0)), Odd(x) := Even(s(x)) Тогда в силу доказанного правила (id) имеем Odd(y) ` Even(s(y))
40
Элементы теории доказательств
Однако неверно, что Odd(y) ` ∀xEven(s(x)). То есть из нечетности некоторого y не следует четность всех чисел! Правило введения квантора всеобщности было применено неправильно, поскольку символ предикатной переменной y, входящий в формулу, не являлся произвольным (он входил свободно в формулу-посылку). Правила введения и исключения для квантора существования следующие: правило введения A[t/x] A[t/x] ` ∃xA, где (∃i) квантора существоσ ∃xA t ∈ T ER(LI ) вания
(∃e)
правило исключения квантора существования
Если Γ, A[y/x] ` C, то Γ, ∃xA [` C, где y∈ / Free(Q)
[A[y/x]]1 ∃xA C 1 C
Q∈Γ∪C
Замечание 6.1 Для применения правила (∃e) необходимо y∈ /
[
Free(Q)
Q∈Γ∪C
y не входит свободно ни в одну из формул ∃xA, C и ни в одну из отличающихся от A[y/x] посылок, от которых зависит вхождение формулы C. В качестве примера докажем следующую метатеорему: Теорема 6.2 ` ∃x (A (x) → ∀yA(y)) для любой формулы A ∈ Lσ с одной свободной переменной. В вольной формулировке утверждение данной теоремы можно проинтерпретировать следующим образом: можно доказать, что найдется такой человек, что если он носит шляпу, то и все люди носят шляпу (или что существует такая лошадь, что если она синяя, то остальные лошади также синие). Доказательство: Сначала докажем, что ¬A(x) ` ∃x(A(x) → ∀y(A(y))). Доказательство представим в виде дерева [¬A(x)]2 [A(x)]1 (⊥i) ⊥ (⊥e) ∀yA(y) (→ i) A(x) → ∀yA(y) (∃i) ∃x(A(x) → ∀yA(y))
6.3 Подстановки в термах и формулах
41
Теперь предположим дополнительно, что ¬∃x(A(x) → ∀yA(y)). Получим ∃x(A(x) → ∀yA(y)) [¬∃x(A(x) → ∀yA(y))]3 ⊥ 2, (RAA) A(x) (∀i) ∀yA(y) 1, (→ i) A(x) → ∀yA(y) (∃i) [¬∃x(A(x) → ∀yA(y))]3 ∃x(A(x) → ∀yA(y)) (⊥i) ⊥ 3, (RAA) ∃x(A(x) → ∀yA(y)
(⊥i)
Таким образом доказано, что ` ∃x (A (x) → ∀yA(y)) . В интуиционистской теории данная метатеорема неверна (использован закон исключенного третьего (TND)). Объясняется же она просто: либо все люди носят шляпы, либо есть человек, который шляпу не носит, тогда он и есть искомый. В качестве второго примера докажем, что в арифметике Пеано никакой элемент не следует сам за собой. Теорема 6.3 (P A) ` ∀x (¬s (x) = x) . Доказательство: Обозначим за P(x) := ¬s(x) = x и докажем это утверждение по индукции. 1. База индукции: x = 0, P(0) := ¬s(0) = 0. Используя (P A1 ) получим: ∀x¬s(x) = 0 ¬s(0) = 0
(∀e)
2. Теперь докажем (P A) ` ∀x(P(x) → P(s(x))). Доказательство представим в виде дерева (воспользуемся (P A2 )):
[s(s(x)) = s(x)]1 [¬s(x) = x]2
∀y∀x(s(y) = s(x) → y = x) (∀e) ∀x(s(y) = s(x) → y = x) (∀e, [s(x)/y)]) s(s(x)) = s(x) → s(x) = x (m.p.) s(x) = x
⊥ 1, (¬i) ¬s(s(x)) = s(x) 2, (→ i) ¬s(x) = x → ¬s(s(x)) = s(x) (∀i) ∀x(¬s(x) = x → ¬s(s(x)) = s(x))
(⊥i)
42
Элементы теории доказательств 3. В результате шагов 1 и 2 было доказано, что (P A) ` (P(0) ∧ ∀x(P(x) → P(s(x))). Используя аксиому индукции (P A7 ) и modus ponens, получаем (P A) ` ∀x(¬s(x) = x).
6.4
Корректность и полнота естественной дедукции
Напомним определения корректности и полноты формальной системы. Определение 6.8 Формальная система для языка Lσ называется • корректнoй, если для любых Γ ⊂ Lσ , P ∈ Lσ из Γ ` P следует Γ |= P; • полнoй, если для любых Γ ⊂ Lσ , P ∈ Lσ из Γ |= P следует Γ ` P. Иначе говоря, формальная система корректна, если для произвольного набора формул Γ все выводимые (доказуемые в данной формальной системе) из него формулы являются семантическими следствиями Γ, и полна, если, наоборот, все семантические следствия Γ выводимы из Γ при помощи этой формальной системы. Иногда пользуются и следующими более слабыми понятиями, которые требуют выполнения соответствующих условий только для Γ = ∅. Определение 6.9 Формальная система для языка Lσ называется • корректнoй в слабом смысле, если для любой формулы P ∈ Lσ из ` P следует |= P; • полнoй в слабом смысле, если для любой формулы P ∈ Lσ из |= P следует ` P. Требование корректности формальной системы является совершенно естественным. Действительно, если формальная система корректной не является, то найдется такая система аксиом Γ и такая теорема P, что P можно доказать с использованием этой формальной системы и множества посылок Γ, но в то же время P семантически не следует из Γ. Так что такая формальная система не удовлетворяет своему предназначению — формальными синтаксическими манипуляциями выводить именно только логические следствия. Другое дело — свойство полноты. Оно является в некотором смысле более сильным, так как означает возможность при помощи данной формальной системы вывести любое логическое следствие произвольного множества формул Γ.
6.4 Корректность и полнота естественной дедукции
43
Теорема 6.4 (о корректности) Естественная дедукция корректна. Доказательство: Пусть Γ ⊂ Lσ , P ∈ Lσ и Γ ` P. Докажем Γ |= P индукцией по глубине n дерева вывода формулы P (т. е. количеству шагов вывода). Иначе говоря, сначала докажем Γ |= P для случая деревьев, в которых не использовано ни одно правило вывода (n = 0), затем, предполагая, что Γ |= P доказано для всех деревьев вывода глубиной n ≤ k, докажем справедливость этого утверждения для случая n = k + 1. При этом в силу принципа математической индукции утверждение будет доказано для всех возможных деревьев вывода Γ ` P независимо от глубины. База индукции. Пусть n = 0. Тогда P ∈ Γ, а значит, Γ |= P. Шаг индукции. Пусть утверждение доказано для всех n ≤ k. Предположим, что Γ ` P за n = k + 1 шаг. Рассмотрим все возможные правила вывода, которые могли быть использованы на последнем шаге для получения формулы P, и докажем для каждого случая Γ |= P. (∧e) Это значит P = P1 , причем Γ ` P1 ∧ P2 и за k шагов, а значит, в силу предположения индукции Γ |= P1 ∧ P2 . Следовательно, в любой модели всех одновременно формул Γ v(P1 ∧ P2 ) = 1, а значит, v(P) = v(P1 ) = 1, то есть Γ |= P. (∧i) В этом случае P = P1 ∧ P2 , причем Γ ` P1 и Γ ` P2 не более чем за k шагов, а значит, в силу предположения индукции Γ |= P1 и Γ |= P2 . Рассмотрим любую модель всех одновременно формул Γ. Мы только что доказали, что v(P1 ) = 1 и v(P2 ) = 1, но тогда и v(P) = v(P1 ∧ P2 ) = 1, иначе говоря, Γ |= P. (→ i) Тогда P = P1 → P2 , причем Γ, P1 ` P2 за k шагов, а значит, в силу предположения индукции Γ, P1 |= P2 . Рассмотрим любую модель всех одновременно формул Γ. Если в этой модели v(P1 ) = 1, то в силу только что доказанного v(P2 ) = 1, а значит и v(P) = v(P1 → P2 ) = 1. Но если v(P1 ) = 0, то v(P) = v(P1 → P2 ) = 1. Таким образом, в любом случае Γ |= P. (∀i) Тогда P = ∀xQ, причем Γ ` Q[y/x] за k шагов. Значит, Γ |= Q[y/x] в силу предположения индукции. Рассмотрим любую интерпретацию (M, ξ), являющуюся моделью всех одновременно формул Γ. Тогда для любого b ∈ M при ξ(y) = b имеем v(Q[y/x]) = 1, а значит, v(P) = v(∀xQ) = 1. Следовательно, Γ |= P . Все остальные случаи, соответствующие правилам вывода, которые могли быть применены на последнем шаге вывода для получения формулы P, предлагается разобрать в качестве упражнения.
44
Элементы теории доказательств
Упражнение 6.1 Докажите, что из выполнимости множества формул Γ следует его непротиворечивость в естественной дедукции. Полнота естественной дедукции. Исторически первая теорема о полноте формальной системы была доказана К. Геделем10 , поэтому традиционно всякую теорему о полноте некоторой формальной системы принято называть теоремой Геделя о полноте этой системы. Соответственно, в данном случае мы имеем дело с теоремой Геделя о полноте классической естественной дедукции. Доказательство ее будет основано на следующей теореме: Теорема 6.5 (о модели) Пусть множество формул Γ непротиворечиво в смысле классической естественной дедукции. Тогда Γ выполнимо (т. е. имеет модель). Замечание 6.2 В данном случае под моделью мы подразумеваем алгебраическую систему. Теорема 6.6 (о полноте) Классическая естественная дедукция полна. Доказательство: Пусть Γ ⊂ Lσ , P ⊂ Lσ такие, что Γ |= P. Тогда множество Γ ∪ {¬P} невыполнимо, а значит, в силу теоремы о модели, и противоречиво в классической естественной дедукции. Иначе говоря, Γ, ¬P `⊥. Применяя правило сведения к противоречию (RAA), получаем Γ ` P. Для доказательства теоремы о модели нам понадобится ряд вспомогательных конструкций. Определение 6.10 Будем говорить, что множество Γ ⊂ Lσ содержит свидетелей, если для любой формулы вида ∃xP ∈ Lσ найдется такой терм t ∈ T ER(Lσ ) (называемый свидетелем), что ∃xP → P[t/x] ∈ Γ. Важно отметить следующее: для того, чтобы множество Γ ⊂ Lσ содержало свидетелей, мало наличия соответствующих термов-свидетелей только для существовательных формул из Γ. Они должны найтись для любой существовательной формулы всего языка Lσ . 10
Курт Гедель (Kurt G¨odel) (1906–1978) — австрийский математик и логик. Разрабатывал проблемы метаматематики и математической логики. В 1928 году Курт Гедель окончил физикоматематический факультет Венского университета. А 1931 году он совершил открытие, сделавшее его знаменитым — он доказал теорему о неполноте. Работа Геделя произвела эффект разорвавшейся бомбы. Она заставила фон Неймана прервать курс лекций в Геттингене, а Гильберта — прекратить работу над своей программой сведения всей математики к системе аксиом.
6.4 Корректность и полнота естественной дедукции
45
Определение 6.11 Γ называется максимально совместным множеством, если оно строго не содержится ни в одном другом совместном множестве. Лемма 6.1 Если множество Γ является максимально совместным, то Γ ` P если и только если P ∈ Γ. Доказательство: Нетривиальным является только доказательство того, что Γ ` P влечет P ∈ Γ. Предположим противное, т. е. Γ ` P, но P 6∈ Γ. Тогда множество Γ ∪ {P} совместно, что противоречит исходному предположению о максимальной совместности множества Γ. Действительно, иначе бы Γ, P `⊥, а значит, в силу правила (¬i), Γ ` ¬P, что вместе с предположением Γ ` P приводит к противоречию Γ `⊥. Теперь мы можем перейти непосредственно к основной конструкции доказательства теоремы о модели. Зададимся целью построить модель (MΓ , ξΓ ) совместного множества формул Γ. Для этого выберем в качестве универсума MΓ множество термов языка Lσ , т. е. MΓ := T ER(Lσ ). Положим cMΓ := c для любого символа предметной константы c ∈ Const, f MΓ (t1 , t2 , . . . , tn ) := f (t1 , t2 , . . . , tn ) для любого n-арного функционального символа f ∈ Funcn и 1, A (t1 , t2 , . . . tn ) ∈ Γ, MΓ A (t1 , t2 , . . . tn ) := 0, иначе для каждого n-арного предикатного символа A ∈ Predn , и, наконец, ξΓ(x) := x для любого символа предметной переменной x ∈ Var. Лемма 6.2 Если Γ содержит свидетелей и является максимально совместным, то (MΓ, ξΓ ) |= P, если и только если Γ ` P. В частности, построенная интерпретация (MΓ , ξΓ) является моделью всех одновременно формул множества Γ. Доказательство: Для доказательства воспользуемся теоремой об индукции по структуре формул языка Lσ . База индукции. Пусть P — атомарная формула, т. е. P = A(t1 , t2 , . . . , tn ). Тогда непосредственно из нашей конструкции следует, что условие (MΓ , ξΓ) |= P выполняется в том и только в том случае, когда P = A(t1 , t2 , . . . , tn ) ∈ Γ, а это, в свою очередь, эквивалентно тому, что Γ ` P. Шаг индукции. 1. Пусть P = ¬Q. Тогда условие (MΓ , ξΓ ) |= P эквивалентно условию (MΓ , ξΓ ) 6|= Q. В силу предположения индукции последнее эквивалентно Γ 6` Q, что в силу максимальной совместности Γ выполняется, если и только если Q 6∈ Γ. Докажем теперь, что в силу максимальной совместности Γ
46
Элементы теории доказательств условие Q 6∈ Γ эквивалентно условию ¬Q ∈ Γ. Действительно, если ¬Q ∈ Γ, то Q 6∈ Γ, иначе множество Γ не было бы совместным. Если же Q 6∈ Γ, то так как множество Γ ∪ {Q} несовместно в силу предположения о максимальной совместности множества Γ, можно заключить по правилу (¬i), что Γ ` ¬Q, или ¬Q ∈ Γ в силу леммы 6.1. Таким образом, доказано, что (MΓ , ξΓ ) |= P, если и только если P = ¬Q ∈ Γ. Но последнее ввиду леммы 6.1 эквивалентно Γ ` P. 2. Пусть P = P1 ∧ P2 . Тогда условие (MΓ , ξΓ) |= P выполнено, если и только если одновременно (MΓ , ξΓ) |= P1 и (MΓ , ξΓ) |= P2 . В силу предположения индукции (MΓ , ξΓ) |= Pi , i = 1, 2, эквивалентно условию Γ ` Pi . Таким образом, доказано, что (MΓ , ξΓ) |= P, если и только если одновременно Γ ` P1 и Γ ` P2 . Но последнее эквивалентно Γ ` P = P1 ∧ P2 . Действительно, если Γ ` Pi , i = 1, 2, то Γ ` P1 ∧ P2 в силу правила (∧i). Наоборот, пусть Γ ` P1 ∧ P2 . Тогда Γ ` Pi в силу правил (∧e.1) и (∧e.2). 3. Пусть P = ∃xQ. Тогда условие (MΓ , ξΓ ) |= P выполнено, если и только если существует такой терм t ∈ T ER(Lσ ) = MΓ , что (MΓ , ξΓ [t/x]) |= Q. Но последнее условие эквивалентно (MΓ , ξΓ ) |= Q[t/x] (докажите это в качестве упражнения!), что в свою очередь в силу предположения индукции эквивалентно условию Γ ` Q[t/x]. Докажем, что Γ ` Q[t/x] выполняется тогда и только тогда, когда Γ ` ∃xQ, т. е. Γ ` P. Действительно, из Γ ` P [t/x] следует Γ ` ∃xQ в силу правила (∃i). Наоборот, если Γ ` ∃xQ, то так как Γ содержит свидетелей, то найдется такой терм-свидетель t ∈ T ER(Lσ ), что ∃xQ → P [t/x] ∈ Γ. Тогда в силу modus ponens Γ ` Q[t/x].
Все остальные случаи, соответствующие возможной структуре формулы P (т. е. случаи P = P1 ∨P2 , P = P1 → P2 и P = ∀xQ), предлагается разобрать в качестве упражнения. Доказанная лемма указывает на возможный путь построения модели для произвольного совместного множества формул Γ. Действительно, достаточно дополнить множество Γ до максимально совместного множества, содержащего свидетелей. Последнее будет выполнимым, а значит, тем более будет выполнимым и множество Γ. Вся сложность в дополнении множества Γ до максимально совместного множества, содержащего свидетелей. К сожалению, в общем случае выполнить его конструктивно (т.е. непосредственно “предъявив” конструкцию расширенного множества) не удастся. Построим новую сигнатуру σ ∗ , содержащую σ, а также дополнительно для каждой формулы вида ∃xP ∈ Lσ новый (т. е. не содержащийся в σ) символ предметной константы cP , разный для разных формул. В новом языке логики пре∗ дикатов первого порядка L∗ := Lσ содержится, таким образом, весь язык Lσ . В
6.4 Корректность и полнота естественной дедукции
47
этом новом языке дополним множество Γ всеми формулами вида ∃xP → P[cP /x], где cP — “новый” символ предметной константы, соответствующий формуле ∃xP. Полученное расширенное множество обозначим Γ∗ . Лемма 6.3 Множество Γ совместно, если и только если совместно множество Γ∗ . Доказательство: Докажем, что из ∆, ∃xP → P[cP /x] ` Q, где ∆ ⊂ Lσ и P, Q ∈ Lσ , а cP — “новый” (т. е. отсутствующий в сигнатуре σ и добавленный в соответствии с конструкцией σ ∗ ) символ предметной константы, следует ∆ ` Q. Действительно, если ∆, ∃xP → P[cP /x] ` Q, то ∆ ` (∃xP ← P[cP /x]) → Q в силу правила (→ i). Но тогда ∆ ` ∃xP ← P[y/x] → Q, где y — символ предметной переменной, не входящий свободно ни в формулу Q и ни в одну из формул множества ∆ (докажите это!). Из правила (∀i) следует при этом ∆ ` ∀y(∃xP → P[y/x] → Q). Но так как ∀y(∃xP → P[y/x] → Q) ` ∃y(∃xP → P[y/x]) → Q, а ∃y(∃xP → P[y/x]) → Q ` (∃xP → ∃yP) → Q и ` ∃xP → ∃yP (докажите эти утверждения!), то ∆ ` Q. Пусть теперь Γ∗ несовместно, т. е. Γ∗ `⊥. Это значит, что Γ, R1, . . . , Rn `⊥ для какого-то конечного числа “добавленных” формул Ri вида Ri := ∃xPi → P[cPi /x]. Докажем индукцией по n, что тогда Γ `⊥. Действительно, для n = 0 это утверждение тривиально. Но если оно верно для n = k, и Γ, R1 , . . . , Rk+1 `⊥, то Γ0 , Rk+1 `⊥, где Γ0 := Γ ∪ {R1, . . . , Rk }. Так как символ предметной константы cPk+1 не входит ни в одну из формул Γ, то по только что доказанному Γ0 `⊥, а значит, Γ `⊥ в силу предположения индукции. Пусть теперь L0 := Lσ , σ0 := σ, Γ0 := Γ, ∗ ∗ k ∈ N, Lk+1 := S Lk , σk+1 := S σk , Γk+1 := S Γ∗k , Lω := L , σ := σ , Γ := Γ ω ω k∈N k k∈N k k∈N k .
Лемма 6.4 Пусть множество Γ совместно. Тогда множество Γω совместно и содержит свидетелей. Доказательство: Рассмотрим произвольную формулу вида ∃xQ ∈ Lσω . Тогда ∃xQ ∈ Lk для какого-то k ∈ N, следовательно, найдется такой добавленный на k + 1 шаге символ предметной константы cQ ∈ σk+1 \ σk , что ∃xQ → Q[cQ /x] ∈ Γk+1 ⊂ Γω , а значит, множество Γω содержит свидетелей. Докажем теперь, что Γω совместно. Предположим противное, т.е. Γω `⊥. Значит, найдется такое конечное множество посылок ∆ ⊂ Γω (листья дерева доказательства Γω `⊥), что ∆ `⊥. Но так как по определению последовательность
48
Элементы теории доказательств
множеств {Γi }i∈N расширяющаяся и объединение всех множеств этой последовательности есть Γω , то ∆ ⊂ Γk для какого-нибудь k ∈ N. Значит, Γk `⊥, что противоречит лемме 6.3, в силу которой все Γi , i ∈ N совместны. Следующая лемма, эквивалентная аксиоме выбора в теории множеств, чрезвычайно широко используется в математике. Она является ключевым элементом и доказательства теоремы о модели (а следовательно, и теоремы о полноте классической естественной дедукции). Лемма 6.5 (Цорн) Пусть частичный порядок (Ψ, <), таков, что любой содержащийся в нем линейный порядок имеет максимальный элемент. Тогда (Ψ, <) имеет максимальный элемент. Теорема 6.7 (Линденбаум) Любое совместное множество формул содержится в некотором максимальном совместном множестве. Доказательство: Пусть Γ ⊂ Lσ — заданное совместное множество формул. На множестве совместных подмножеств языка Lσ , содержащих Γ, введем отношение порядка следующим образом: будем говорить, что Γ1 < Γ2 , если Γ1 ⊂ Γ2 . Cоответствующий частичный порядок обозначим (Ψ, <). Рассмотрим произвольный линейный порядок (F, <), содержащийся в (Ψ, <). Докажем, что объединение Φ всех множеств формул из F , является максимальным элементом порядка (F, <). Очевидно, Φ содержит Γ. С другой стороны, Φ совместно. Действительно, иначе бы Φ `⊥, а значит, нашлось бы такое конечное множество посылок ∆ ⊂ Φ (листья дерева доказательства Φ `⊥), что ∆ `⊥. Но так как Φ — объединение расширяющегося семейства множеств F , то найдется такое множество формул Φ0 ∈ F , что ∆ ⊂ Φ0 , а значит, Φ0 `⊥, что противоречит совместности всех элементов F . Таким образом, доказано, что любой линейный порядок (F, <), содержащийся в (Ψ, <), имеет максимальный элемент. Для доказательства существования максимального совместного множества, содержащего Γ (т. е. максимального элемента порядка (Ψ, <)), остается сослаться на лемму Цорна. Теперь мы в состоянии легко доказать теорему о модели 6.5. Доказательство теоремы 6.5 (о модели): Пусть Γ ⊂ Lσ — заданное совместное множество формул. Построим язык Lω и множество формул Γω ⊂ Lω . В силу леммы 6.4 множество Γω совместно и содержит свидетелей. По теореме Линденбаума найдется максимально совместное множество Γ0ω ⊂ Lω , содержащее Γω (поэтому оно тем более будет содержать свидетелей). Это множество формул выполнимо ввиду леммы 6.2, а значит, тем более выполнимо и содержащееся в нем множество Γ. Единственной неприятной особенностью конструкции доказательства теоремы о модели является то, что для языков с равенством предикатный символ равенства будет интерпретироваться в построенной модели некоторым бинарным
49 отношением на соответствующем универсуме, которое, вообще говоря, будет отличным от отношения равенства, понимаемого в смысле совпадения элементов универсума. Однако это доказательство легко исправить с учетом требования интерпретации символа равенства отношением совпадения элементов универсума. Действительно, достаточно на множестве термов T ER(Lω ) расширенного языка Lω ввести отношение эквивалентности “∼” следующим образом: будем говорить, что t1 ∼ t2 , если атомарная формула t1 = t2 содержится во множестве Γ0ω (проверьте, что это действительно отношение эквивалентности, т. е. оно рефлексивно, симметрично и транзитивно). Тогда в качестве универсума конструируемой модели выберем фактор-множество M := T ER(Lω )/ ∼ (т.е. множество классов эквивалентных термов). Обозначая класс термов, эквивалентных данному терму t, за [t], положим cM := c˜ для каждого символа предметной константы c ∈ Const, f M ([t1 ], [t2 ], . . . , [tn ]) := [f (t1 , t2 , . . . , tn )] для каждого n-арного функционального символа f ∈ Funcn , 1, A (t1 , t2 , . . . , tn ) ∈ Γ0ω M A ([t1 ] , [t2 ] , . . . , [tn ]) := 0, иначе для каждого n-арного предикатного символа A ∈ Predn , и, наконец, ξΓ ([x]) := [x] для любого символа предметной переменной x ∈ Var. Осталось проверить, что данное определение корректно и действительно задает модель всех одновременно формул множества Γ0ω , а значит, и меньшего множества Γ. Проведите эту проверку самостоятельно в качестве упражнения, фактически только слегка поправляя доказательство леммы 6.2.
7
Основы теории моделей
Из самого факта существования корректных и полных формальных систем для языков логики первого порядка следует целый ряд весьма нетривиальных выводов о семантике этих языков. А именно, о том какие модели и сколько моделей (с точностью до изоморфизма) могут иметь множества формул языков логики первого порядка. В этой главе мы рассмотрим основные нетривиальные результаты о семантике языков логики первого порядка. Теорема 7.1 (О семантической компактности) (i) Множество формул Γ ⊂ Lσ выполнимо (то есть имеет модель) тогда и только тогда, когда любое его конечное подмножество выполнимо. (ii) Γ логически выводит P тогда и только тогда, когда найдется такое конечное ∆ ⊂ Γ, что ∆ |= P.
50
Основы теории моделей
Доказательство: (i) Докажем, что если Γ выполнимо, то любое его конечное подмножество выполнимо. Если Γ выполнимо, то существует такая интерпретация, в которой все одновременно формулы Γ истинны. Значит, эта же интерпретация является моделью любого подмножества ∆ ⊂ Γ. Необходимость доказана. Теперь докажем достаточность. Пусть Γ невыполнимо, а все конечные подмножества Γ выполнимы, тогда, по теореме о модели, Γ несовместно, то есть Γ ` ⊥. Но, в силу определения формальной системы, найдется такое конечное подмножество Γ (листья дерева вывода псевдоформулы ⊥), что ∆ ` ⊥. По теореме о корректности естественной дедукции ∆ невыполнимо, что противоречит предположению. (ii) Для доказательства этого пункта заметим, что в силу теорем о корректности и полноте естественной дедукции Γ |= P, если и только если Γ ` P, последнее же, в силу определения формальной системы, возможно, если, и только если найдется такое конечное ∆ ⊂ Γ (листья дерева доказательства формулы P), что ∆ `ND P. Снова применяя теорему о корректности и полноте естественной дедукции получаем, что последнее эквивалентно ∆ |= P. Займемся теперь вопросом о том, какие модели и сколько разных (с точностью до изоморфизма) моделей может иметь множество формул Γ ⊂ Lσ языка логики первого порядка. Здесь и далее мы будем говорить о конечных, счетных, более чем счетных моделях, имея в виду, соответственно, модели с конечным, счетным, более чем счетным универсумом. Вообще под мощностью модели будем понимать мощность универсума. Теорема 7.2 (Левенгейма–Скулема “сверху вниз” или о понижении мощности модели) Пусть множество формул Γ ⊂ Lσ выполнимо. Тогда оно имеет модель мощности не превышающей мощность языка. Доказательство: Так как множество Γ выполнимо, то оно совместно (в силу теоремы о корректности естественной дедукции). Рассмотрим теперь более подробно доказательство теоремы о модели. Эта теорема утверждает что любое выполнимое множество имеет модель. Там модель “кроилась” из термов расширенного языка Lσ∗ . В силу конструкции, #Lσ∗ ≤ #Lσ , а значит и #T ER(Lσ∗ ) ≤ #Lσ . Таким образом, в силу конструкции, использованной в доказательстве теоремы о модели, можно утверждать существование модели с мощностью, не превышающей #T ER(Lσ∗ ), а значит и #Lσ .
51 Теорема 7.3 (О переходе от конечной к бесконечной мощности) Если множество формул Γ ⊂ Lσ выполнимо в моделях сколь угодно большой конечной мощности, Γ выполнимо и в бесконечной модели. Доказательство: Рассмотрим Γ0 := Γ ∪ {P≥i }∞ i=1 , где P≥k := ∃x1 . . . ∃xk (¬x1 = x2 ∧ ¬x2 = x3 ∧ . . . ∧ ¬x1 = xk ) . Заметим, что формула P≥k выполнима во всех моделях, универсум которых содержит по меньшей мере k элементов, и только в них. В силу теоремы о компактности, для проверки выполнимости Γ0 достаточно проверить выполнимость любого его конечного подмножества ∆ ⊂ Γ0 . Однако, если ∆ ⊂ Γ0 конечно, то ∆ ⊂ Γ ∪ {P≥i }ni=1 , для конечного n ∈ N. Множество Γ ∪ {P≥i }ni=1 выполнимо в той модели Γ, которая содержит не менее n элементов. Существование такой модели предполагается в условии теоремы. Следовательно, в этой же модели тем более выполнимо и меньшее множество формул ∆, а значит и Γ0 выполнимо. Выполнимость же Γ тривиально следует из выполнимости Γ0 . Теорема 7.4 (Левенгейма–Скулема “снизу вверх” или о повышении мощности модели) Пусть Γ ⊂ Lσ имеет бесконечную модель. Тогда, для любого множества A, Γ имеет модель, универсум которой имеет мощность не меньше #A. Доказательство: Дополним сигнатуру σ языка Lσ новыми символами констант вида ca , для всех a ∈ A, так, чтобы среди добавленных символов не было бы символов исходной сигнатуры и разным элементам множества A соответствовали разные добавленные символы констант. Получим новую сигнатуру σ 0 , такую что #σ 0 ≥ #A. Таким образом #Lσ 0 ≥ #A. Рассмотрим множество Γ0 := Γ ∪ {¬ca = cb : a, b ∈ A, a 6= b}. Рассмотрим произвольное конечное подмножество ∆ ⊂ Γ0 . В силу конечности ∆, имеем ∆ ⊂ Γ ∪ {¬cai = cbj : i, j ≤ n} для некоторого n ∈ N. По условию теоремы множество формул Γ имеет модель M с бесконечным универсумом. В этой модели закрепим за символами констант M cai элементы M таким образом, чтобы cM ai 6= cbj при ai 6= bj . В полученной алгебраической системе все формулы множества ∆ будут истинны, иначе говоря, ∆ выполнимо. Следовательно, по теореме о компактности, выполнимо и Γ0 . Заметим теперь, что любая модель множества Γ0 должна иметь мощность не меньшую, чем #A, так как в ней истинны все формулы вида ca 6= cb , где a, b ∈ A и a 6= b. Но эта же модель будет автоматически и моделью меньшего множества Γ, что и завершает доказательство теоремы.
52
Основы теории моделей
Первое весьма нетривиальное приложение доказанных утверждений к арифметике Пеано отвечает на вопрос о существовании нестандартных моделей арифметики. |=
Следствие 7.1 Формальная арифметика Пеано первого порядка P AI имеет модели, неизоморфные стандартной, в том числе и модели сколь угодно большой мощности. Нетривиальность данного утверждения заключается в том, что арифметика Пеано первого порядка допускает бесконечное число разных версий натуральных чисел и действий над ними, в том числе и несчетных. Предлагаем читателю самому разобраться с тем, как устроен этот несчетный натуральный ряд. Автор не может себе этого представить. Несколько успокаивает то, что доказанные теоремы неконструктивны, поскольку они опираются на теорему о модели, для доказательства которой существенно использовалась аксиома выбора. Таким образом, как и в теореме о модели модель совместного множества формул, существование которой утверждается в теореме, не может быть предъявлена в силу неконструктивности доказательства, так и здесь “странные” модели, существование которых утверждается теоремами Левенгейма–Скулема далеко не всегда могут быть явным образом сконструированы. Интересно также сравнить утверждения следствия с теоремой Дедекинда для арифметики Пеано второго порядка. Приведенное следствие позволяет догадаться, что языки логики первого порядка обладают намного меньшей выразительной силой, например, охарактеризовать модель с точностью до изоморфизма при помощи аксиом языка логики первого порядка (как это было для языков второго порядка) невозможно. Действительно, по теореме Левенгейма–Скулема, любое множество аксиом для арифметических формул арифметики первого порядка, если только оно выполнимо в стандартной модели, будет выполнимо и в моделях со сколь угодно большими мощностями. Теорема 7.5 (Левенгейма–Скулема–Тарского11 ) Пусть Γ ⊂ Lσ имеет бесконечную модель, пусть A произвольное множество, такое что #A ≥ #Lσ (то есть #A не меньше мощности языка). Тогда Γ имеет модель с универсумом, равномощным A. Доказательство: Дополним сигнатуру σ новыми символами констант вида ca для каждого a ∈ A, таким образом, чтобы разные элементам множества A 11
Альфред Тарский (Alfred Tarski) (1902–1983) — логик и математик, один из видных представителей львовско-варшавской школы. Тарский является основоположником формальной семантики, изучающей значения понятий и суждений в логике. Также разрабатывал проблемы построения дедуктивных теорий, металогики.
53 соответствовали разным символам констант. Обозначим σ 0 = σ ∪ {ca : a ∈ A} Γ0 = Γ ∪ {¬ca = cb : a, b ∈ A, a 6= b} , 0
заметим, что Γ0 ⊂ Lσ . Множество Γ в силу предположения имеет бесконечную модель, следовательно, по теореме Левенгейма-Скулема “снизу вверх”, оно имеет модель мощности, превосходящей #A. Иначе говоря, в универсуме найдется достаточное количество различных элементов, которые можно поставить в соответствие новым константам вида ca , чтобы таким образом получить модель множества Γ0 . Поскольку множество Γ0 , таким образом, выполнимо, у него найдется модель 0 (M, ξ), такая что #M < #Lσ . С другой стороны, #M ≥ #A, поскольку в (M, ξ) истинны все формулы вида ¬ca = cb , где a, b ∈ A, a 6= b. Таким образом, получим 0
#A ≤ #M ≤ #Lσ ≤ #A, иначе говоря #M = #A. Обратимся еще раз к вопросу о моделях формальной арифметики Пеано первого порядка, неизоморфных стандартной. Существование таких моделей уже утверждалось в следствии 7.1. Сейчас мы докажем несколько более сильное утверждение, а именно, что формальная арифметика Пеано первого порядка имеет счетную модель, неизоморфную стандартной. Теорема 7.6 Существует счетная нестандартная модель арифметики Пеано |= первого порядка P AI . Доказательство: Дополним формальную арифметику Пеано всеми формулами вида ¬x = n, где 1 := s(0), 2 := s(1), n := s(n − 1), а именно, определим |=
Γ0 := P AI ∪ {¬x = n}∞ n=0 , где x — символ предметной переменной. Докажем выполнимость Γ0 , для чего воспользуемся теоремой о компактности. Рассмотрим произвольное конечное подмножество ∆ ⊂ Γ0 . Имеем |=
∆ ⊂ P AI ∪ {¬x = n}kn=0 для некоторого конечного k ∈ N. Очевидно, что множество {¬x = n}kn=0 имеет модель (N , ξ), где ξ(x) := k + 1, а N — стандартная модель арифметики. Эта же
54
Основы теории моделей
интерпретация является, тем более, и моделью меньшего множества ∆. Мы доказали, таким образом, выполнимость любого конечного ∆ ∈ Γ0 , а значит, в силу теоремы о компактности, и выполнимость Γ0 . Рассмотрим модель Γ0 , существование которой мы только что доказали. Она не может быть конечной в силу того, что в ней должны быть одновременно истинны (P A1 ) и (P A2 ), то есть должна существовать инъективная, но не сюръективная функция, определенная на универсуме этой модели. Следовательно, по теореме Левенгейма–Скулема “сверху вниз” найдется и счетная модель (M, ξ) множества Γ0 (она не может быть конечной по той же причине). Осталось доказать, что M неизоморфна N , то есть не существует биекции π между натуральным рядом и универсумом M. Предположим, что она существует, а именно, существует биекция π : N → M, такая, что и для любого терма n выполнено π nN = nM . Тогда ξ (x) ∈ / Im (π), иначе в данной модели не была бы верна одна из формул вида ¬x = k, но последнее противоречит сюрьективности π. Следовательно, M неизморфна N . В отличие от результатов, сформулированных в следствии 7.1, утверждение теоремы 7.6 можно сравнительно легко проинтерпретировать. А именно, “версия” натурального ряда, существование которой утверждается в этой теореме, выглядит следующим образом. Сначала идут “обычные” натуральные числа, затем идет число ξ M(x), которое не следует ни за каким “обычным” натуральным числом (заметим, что в стандартной модели таким свойством обладает только число 0). И далее, вслед за числом ξ M (x) идут числа sM (ξ M(x)), sM (sM (ξ M (x))) . . . Таким образом, естественно считать такого рода числа, которые в этой “версии” натурального ряда находятся “правее” всех “обычных” натуральных чисел, бесконечно большими (они “больше” любого “обычного” натурального числа). На основе полученного таким образом натурального ряда можно построить, также как это делается с использованием привычного нам натурального ряда N, новую версию целых, рациональных и вещественных чисел. Естественно, что в построенной таким образом версии вещественной оси найдутся как бесконечно большие, так и бесконечно малые числа (соответственно большие и меньшие по модулю всех “обычных” вещественных чисел). Использовать такую “необычную” (принято говорить нестандартную) версию чисел очень удобно для альтернативного построения математического анализа. Например, с использованием нестандартной вещественной оси можно “изгнать” из анализа “неудобоваримые” определения предела, бесконечно малой величины, а пользоваться лишь бесконечно малыми числами. При этом все определения, которые обычно даются с использованием достаточно тяжелого “языка , δ” существенно упрощаются. Математический анализ, построенный при помощи этого подхода, называется нестандартным анализом.
55
8
Сравнение языков логики разных порядков
Сформулированные нами в предыдущей главе результаты о моделях множества формул языков логики первого порядка позволяют получить нетривиальные выводы о сравнении выразительной силы логических языков. Начнем со следующего простого вопроса: можно ли при помощи формул языка логики первого или второго порядка охарактеризовать свойство модели быть конечной? Строгая постановка этого вопроса такова: Вопрос 1 Cуществует ли множество формул языка логики первого (соответственно, второго) порядка, истинное во всех конечных моделях и только в них? Напомним, что, говоря о мощности модели, мы имеем в виду мощность соответствующего универсума. То есть модель называется конечной (счетной, не более чем счетной), если соответствующим свойством обладает универсум модели. Ответ на заданный выше вопрос для языков логики первого порядка, очевидно, отрицательный вследствие теоремы 7.3: если множество формул верно во всех конечных моделях, то оно будет иметь и бесконечную модель. В то же время в языке логики второго порядка данный факт можно выразить всего лишь одним предложением: Pfin := ∀f (∀x∀y (f (x) = f (y) → x = y) → ∀x∃y (x = f (y))) Здесь использован квантор всеобщности по “функциональной переменной”, а именно, данная формула “говорит”, что во всех моделях, в которых она истинна, любая инъекция является сюръекцией. Это и означает, что в универсуме модели данной формулы не может быть бесконечного числа элементов. Стоит напомнить, что, строго говоря, согласно нашему определению, в алфавите языка логики второго порядка нет специальных символов для функциональных переменных, а есть только символы для предикатных переменных, поэтому формулу Pfin нужно понимать как сокращенную запись формулы ∀F (f unc(F ) ∧ ∀x∀y∀z(F (x, z) ∧ F (y, z) → x = y) → ∀x∃y(F (y, x))), где f unc(F ) := ∀x∃!y F (x, y), (иначе говоря, формула f unc(F ) “говорит” о том, что отношение, записанное символом предикатной переменной F , является графиком функции) Вопрос, аналогичный вопросу 1, можно сформулировать и для других свойств модели, например, для свойства модели быть не более чем счетной. А именно:
56
Сравнение языков логики разных порядков
Вопрос 2 Cуществует ли множество формул языка логики первого (соответственно второго) порядка, истинное во всех не более чем счетных моделях и только в них? Опять-таки, ответ на этот вопрос для языков логики первого порядка отрицательный в силу теоремы Левенгейма—Скулема—Тарского 7.5, а именно, если у множества формул есть счетная модель, то у него есть и модель сколь угодно большой мощности. В то же время, для языков логики второго порядка можно охарактеризовать свойство модели быть не более чем счетной одним предложением, а именно, предложением Pcount := ∃z∃f ∀X (X (z) ∧ ∀x (X (x) → X (f (x))) → ∀x (X (x))) Здесь f снова символ “функциональной переменной”, которая, строго говоря, в силу нашего определения, в языке логики второго порядка отсутствует, так что формулу Pcount нужно понимать как сокращенную запись другой формулы, в которой вместо символа f присутствует символ предикатной переменной. Запишите соответствующую формулу самостоятельно, по аналогии с тем, как это было сделано для формулы Pf in . Можно предъявить сколь угодно много свойств моделей, которые не могут быть охарактеризованы никакими формулами языков логики первого порядка, но могут быть легко охарактеризованы формулами языков логики второго порядка. Например, формула Pcount ∧ ¬Pf in характеризует свойство модели быть счетной. В то же время соответствующее свойство не может быть охарактеризовано формулами языка логики первого порядка. Упражнение 8.1 Напишите предложение, которое характеризует свойство модели иметь более чем счетный универсум, иначе говоря, предложение, которое было бы верно во всех более чем счетных моделях и только в них. Можно ли охарактеризовать соответствующее свойство при помощи языка логики первого порядка с не более чем счетным алфавитом? С любым алфавитом? Любопытно отметить, что, тем не менее, свойство модели иметь заданное конечное число элементов может быть охарактеризовано и при помощи языка логики первого порядка. Например формула ∀x∀y(x = y) верна во всех моделях, универсум которых содержит ровно один элемент, и только в них. Упражнение 8.2 На языке логики первого порядка напишите предложения, характеризующие свойства модели иметь не более чем k элементов (k —заданное число), ровно k элементов, не менее чем k элементов. Приведенных рассуждений вполне достаточно, чтобы сформулировать следующие весьма сильные утверждения.
57 Теорема 8.1 Для языков логики второго порядка теорема о компактности неверна. Доказательство: Предположим противное и рассмотрим множество формул Γ := Pfin ∪ {P≥k }∞ k=1 ,
где формулы P≥k определены в (7). Пусть ∆ ⊂ Γ конечно, тогда ∆ ⊂ Pfin ∪ {P≥k }m k=1
для некоторого конечного m ⊂ N. Однако последнее множество формул истинно в любой модели, универсум которой имеет хотя бы m элементов, а значит, выполнимо и множество формул ∆. Тогда, в силу предположения о верности теоремы о компактности и произвольности подмножества ∆ заключаем, что множество Γ также является выполнимым. Но тогда в модели Γ должно быть не менее чем k элементов для любого k ∈ N (так как в этой модели истинны все формулы P≥k ). И в то же время число элементов этой модели должно быть конечно, так как в ней верна формула Pf in . Так как одновременно эти два условия невыполнимы, то мы пришли к противоречию. Теорема 8.2 Для языков логики второго порядка неверны теоремы Левенгейма—Скулема о повышении мощности модели 7.4 и о понижении мощности модели 7.2. Доказательство: Если бы для языков логики второго порядка была верна теорема Левенгейма—Скулема о повышении мощности модели, то нельзя было бы написать множество формул, выражающее счетность модели. Если бы для языков логики второго порядка была верна теорема Левенгейма—Скулема о понижении мощности модели, то нельзя было бы написать множество формул, выражающее более чем счетность модели. Завершим эту главу наиболее сильным, на наш взгляд, результатом. Теорема 8.3 Для логики второго порядка не существует одновременно полной и корректной формальной системы. Доказательство: Предположение о существовании одновременно корректной и полной формальной системы влечет справедливость теоремы о компактности (в доказательстве теоремы о компактности для языков логики первого порядка использовался лишь факт существования одновременно корректной и полной формальной системы), что противоречит теореме 8.1.
58
Формальная теория множеств
Требование корректности является необходимым для осмысленности формальной системы: формальная система строится для того, чтобы получать логические, то есть семантические, истины, поэтому некорректная формальная система, которая позволяет выводить в том числе формулы, не являющиеся истинными, не имеет никакой практической ценности. Только что доказанная теорема утверждает, таким образом, что осмысленная (т.е. корректная) формальная система для языка логики второго порядка не может быть полной. Иначе говоря, при помощи такой формальной системы мы не можем вывести все семантические истины. В то же время другого инструмента, пригодного для поиска на практике семантических следствий для заданного множества формул, кроме вывода при помощи некоторой формальной системы, нет. Поэтому утверждение теоремы 8.3 фактически является препятствием к широкому использованию языков логики второго порядка. Языки логики второго порядка являются, таким образом, “чересчур” выразительными, настолько, что их чрезмерная выразительная сила ограничивает возможность их применения. В этом смысле языки логики первого порядка являются вполне подходящими, так как инструмент для их использования (достаточно удобные формальные системы) существует, и в то же время, как показывает опыт, при помощи языка логики первого порядка можно записывать практически все важные естественнонаучные теории, хотя и нельзя охарактеризовать какую-нибудь серьезную модель однозначно.
9
Формальная теория множеств
В качестве еще одного примера языка логики первого порядка, находящего самые широкие применения в современной математике, рассмотрим язык теории множеств. Определим язык теории множеств как язык L∈ логики первого порядка с равенством, с сигнатурой, содержащей лишь один символ, отличный от равенства — символ предиката принадлежности ∈. Иначе говоря, σ(L∈ ) := {=, ∈}. Принято писать x = y и x ∈ y вместо = (x, y) и ∈ (x, y) соответственно. Например, мы будем считать формулы x = y, ∃x(x ∈ y) ∧ z ∈ q формулами языка L∈ . Как и принято в математике, мы будем интерпретировать эти формулы соответственно как “множества x и y совпадают” и “существует множество x, принадлежащее множеству y, и множество z принадлежит множеству q”. Несколько необычным с точки зрения наивной теории множеств является утверждение о том, что одно множество принадлежит другому. Привычнее говорить о том, что элемент принадлежит множеству. Однако заметим, что во введенном языке имеются символы предметных переменных только одного cорта, а именно — только для обозначения множеств (нет специального сорта переменных для обозначения элементов множеств). Поэтому, имея дело с семантикой языка L∈ , мы будем интерпретировать все предметные переменные как “множества”. Таким образом мы
59 будем иметь дело с миром, состоящим только из одного типа объектов — “множеств”. При этом нас не будет интересовать, насколько понятие “множества” как элемента интерпретирующего универсума соответствует интуитивному понятию множества как совокупности разных объектов. К этому вопросу мы еще вернемся в дальнейшем. Несмотря на то, что введенный в рассмотрение язык L∈ кажется весьма бедным, на нем можно выразить все привычные факты о множествах (а также, и всю математику — но об этом речь пойдет чуть позже). Например, “x подмножество y” можно записать в виде правильной формулы языка L∈ , которую будем обозначать x ⊂ y, следующим образом: x ⊂ y := ∀z(z ∈ x → z ∈ y). Здесь и далее подчеркивание указывает на то, что мы имеем дело с сокращенным обозначением правильной формулы. Чуть позже мы еще займемся “кодированием” основных математических понятий в виде формул L∈ . А теперь покажем, что к перенесению основных интуитивных понятий о множествах на формальный язык L∈ нужно подходить с большой осторожностью. Рассмотрим следующий пример. Парадокс Рассела12 –Фреге13 . Мы привыкли формировать множества путем группирования элементов, обладающих заданным свойством (принято обозначать {x : P (x)} множество элементов, обладающих свойством P ). Попробуем формализовать такой способ формирования множеств на языке L∈ . А именно, логично предположить, что множество z := {x : P(x)} существует для любого “свойства” (т. е. формулы L∈ с одной свободной переменной). Это легко записать в виде формулы ∃z∀x(x ∈ z ↔ P(x)), где #Free(P) = 1 (здесь и далее запись A ↔ B понимается как сокращенная запись формулы (A → B) ∧ (B → A). Каким бы заманчивым с интуитивной точки зрения ни было это утверждение, оно ведет к абсурду. Действительно, выберем в качестве P свойство множества не принадлежать самому себе, то есть 12
Бертран Рассел (Bertram Russell) (1872–1970) — выдающийся английский логик, философ, математик и социолог, лауреат Нобелевской премии по литературе (1950). Развил дедуктивноаксиоматическое построение логики в целях логического обоснования математики. Автор головоломки “парадокс деревенского брадобрея” (см. пример 2.3) 13 Готлоб Фреге (Gottlob Frege) (1848–1925) — немецкий математик, логик и философ. Труды Фреге открыли новый этап в математической логике. Фреге впервые осуществил аксиоматическое построение логики высказываний и предикатов и положил начало строгой теории логического доказательства. Ему пренадлежит ряд идей и понятий, вошедших в современную науку: истолкование понятий как логических функций, понятие значений истинности, введение в систематическое употребление кванторов, анализ понятия переменной и др.
60
Формальная теория множеств
P(x) := ¬x ∈ x. Тогда для множества z := {x : ¬x ∈ x}, очевидно, выполняется либо z 6∈ z, либо z ∈ z, причем в силу определения множества z в первом случае z ∈ z, а во втором z 6∈ z. С более формальной точки зрения это означает, что предложение Q := ∃z∀x(x ∈ z ↔ ¬x ∈ x) противоречиво. Приведенный парадокс, который, несмотря на его название, был впервые обнаружен Г. Кантором, показывает что далеко не все интуитивно осмысленные предложения введенного формального языка теории множеств имеют право на существование. Поэтому для построения содержательной и осмысленной формальной теории множеств явно недостаточно интуиции, основанной на наивных представлениях о множествах. Традиционный способ выхода из такой ситуации — ограничить формальную теорию множеств утверждениями, выводимыми из достаточно простого, понятного и непротиворечивого набора аксиом. В то же время математика развивалась в течение по крайней мере последних двух с половиной тысяч лет и накопила за это время огромный набор фактов, давно ставших достоянием как собственно математики, так и всех использующих ее наук. Теория же множеств как основание математики появилась сравнительно недавно, начиная с работ Г. Кантора в 70-х годах XIX века. Поэтому система аксиом для формальной теории множеств кроме непротиворечивости должна обладать еще и следующим важным с прикладной точки зрения свойством: она не должна существенным образом обеднять создаваемую на ее основе формальную теорию множеств и математику в целом. В связи с особой важностью теории множеств для построения современной математики на протяжении XX века было предпринято много попыток предоставить такой набор аксиом. Ни одна из предложенных аксиоматик не была абсолютно удачной, так что проблема формального обоснования современной математики до сих пор остается открытой. В то же время хотелось бы предостеречь от немедленных попыток взяться за решение этой проблемы. Дело в том, что, во-первых, существует несколько вполне удовлетворительных для практических целей аксиоматик (наиболее популярные среди них — аксиоматики Цермело14 –Френкеля и Геделя–Бернайса), а во-вторых, полное решение проблемы формального обоснования вряд ли что-либо изменит в развитии современной математики. Вскоре мы подробнее рассмотрим эти вопросы. А сейчас выпишем с небольшими комментариями аксиомы наиболее простой и часто используемой аксиоматики формальной теории множеств, предложенной Цермело и Френке14
Эрнст Цермело (Ernst Zermelo) (1871–1953) — немецкий математик. Основные исследования относятся к теории множеств, где он дал общую аксиоматику и доказал, что всякое множество может быть вполне упорядочено. Работы Цермело оказали большое влияние на развитие этого раздела математики и вызвали оживленную дискуссию. Занимался также вариационным исчислением и вопросами приложения теории вероятностей к статистической физике.
9.1 Аксиоматика Цермело–Френкеля. Основные аксиомы
61
лем.
9.1
Аксиоматика Цермело–Френкеля. Основные аксиомы
• Аксиома объемности. ∀x∀y(∀z(z ∈ x ↔ z ∈ y) ↔ x = y)
(ZF1 )
Эта аксиома говорит о том, что множество однозначно определяется своими элементами. Очень часто она используется в доказательстве единственности различных специальных множеств (например, пустого множества). • Аксиома пары. ∀x∀y∃z∀v(v ∈ z ↔ v = x ∨ v = y).
(ZF2 )
Целесообразно записать ее в сокращенном виде, введя для множества z — пары элементов x и y обозначение z = {x, y} := ∀v(v = x ∨ v = y ↔ v ∈ z). Таким образом, (ZF2 ) можно записать в виде ∀x∀y∃z(z = {x, y}), то есть утверждается, что из любых двух элементов можно построить множество-пару. • Аксиома выделения. ∀x∃y∀z (z ∈ y ↔ (z ∈ x) ∧ P (z)) ,
x, y 6∈ Free (P) , #Free (P) = 1. (ZF3 )
Эта аксиома представляет собой исправленный вариант обсуждавшегося выше принципа, по которому можно формировать множества путем группирования элементов, обладающих заданным свойством. В исходном варианте, как было показано, этот принцип ведет к противоречию. Способ слегка подправить его с целью получить в действительности часто используемый в математике факт, очень прост — достаточно заметить, что на практике множества всегда формируются путем выделения элементов, обладающих заданным свойством, из заданного множества, а не просто путем группирования “всех вообще” элементов с заданным свойством. Так например, множество {n : n2 − 1 = 0} на самом деле получено выделением элементов из N (то есть правильнее было бы писать {n ∈ N : n2 − 1 = 0}). Такой способ исправления основного принципа формирования множества по заданному свойству его элементов был предложен Фреге и реализован в (ZF3 ).
62
Формальная теория множеств • Аксиома множества подмножеств. Для сокращения записи введем общепринятое обозначение для множества y всех подмножеств заданного множества x: y = 2x := ∀z(z ⊂ x ↔ z ∈ y). Заметим, что в данном определении использовано ранее введенное сокращение — формула z ⊂ x. Рассматриваемая аксиома позволяет формировать новое множество как множество всех подмножеств заданного множества и может быть с использованием введенных обозначений записана в виде ∀x∃y(y = 2x ).
(ZF4 )
• Аксиома суммы говорит о существовании объединения произвольного множества множеств. Для удобства записи введем обозначение для объединения (иногда называемого также суммой) всех элементов множества x (напомним, что все объекты, с которыми мы работаем — множества): y = ∪x := ∀z(z ∈ y ↔ ∃v(v ∈ x ∧ z ∈ v)). С учетом введенного обозначения аксиома суммы записывается в виде ∀x∃y(y = ∪x).
(ZF5 )
Прежде чем рассмотреть оставшиеся четыре аксиомы Цермело–Френкеля, потренируемся в “кодировании” основных фактов о множествах на языке L∈ и в их доказательстве с использованием уже введенных аксиом. Будем обозначать систему аксиом Цермело–Френкеля (кроме аксиомы выбора) ZF . Пример 9.1 Докажем существование и единственность пустого множества, то есть множества, не содержащего ни одного элемента. Для этого введем общепринятое обозначение: x = ∅ := ∀y(¬y ∈ x). Требуется доказать ZF ` ∃!x(x = ∅). Напомним, что ∃!x P(x) — общепринятое сокращение формулы ∃x P(x) ∧ ∀y∀x(P(y) ∧ P(x) → x = y). Доказательство: Существование. Аксиома (ZF3 ) записывается в виде ∀x∃y∀z(z ∈ y ↔ z ∈ x ∧ (¬z = z)).
9.1 Аксиоматика Цермело–Френкеля. Основные аксиомы
63
Применяя правило (∀e), получаем (ZF3 ) ` ∃y R, где R := ∀z(z ∈ y ↔ z ∈ x ∧ (¬z = z)). Теперь докажем R ` ∀z(¬z ∈ y). Это доказательство удобно представить в виде дерева ∀z(z ∈ y ↔ z ∈ x ∧ (¬z = z)) (∀e) z ∈ y ↔ z ∈ x ∧ (¬z = z) z ∈ y → z ∈ x ∧ (¬z = z) z ∈ x ∧ (¬z = z)
(∧e)
[z ∈ y]1
(m.p.)
(∧e)
¬z = z ⊥ 1, (¬i) ¬z ∈ y (∀i) ∀z(¬z ∈ y) Осталось объединить две “ветви” для завершения доказательства: (ZF3 ) [R]2 ∃y R ∀z(¬z ∈ y) 2 ∃y∀z(¬z ∈ y) (здесь применено одновременно несколько правил; мы предоставляем читателям возможность самим убедиться в корректности соответствующего перехода). Единственность. Надо доказать ZF ` ∀x∀y(∀z(¬z ∈ y) ∧ ∀z(¬z ∈ x) → (x = y)). Представим доказательство в виде дерева [∀z(¬z ∈ x) ∧ ∀z(¬z ∈ y)]1 [∀z(¬z ∈ x) ∧ ∀z(¬z ∈ y)]1 ∀z(¬z ∈ x) ∀z(¬z ∈ y) ¬z ∈ x ¬z ∈ y ¬z ∈ x ∧ ¬z ∈ y (ZF1 ) z∈x↔z∈y ∀z(z ∈ x ↔ z ∈ y) → (x = y) ∀z(z ∈ x ↔ z ∈ y) x=y 1 ∀z(¬z ∈ x) ∧ ∀z(¬z ∈ y) → x = y ∀x∀y(∀z(¬z ∈ x) ∧ ∀z(¬z ∈ y) → x = y) Предоставляем читателю определить, какие правила применены на каждом шаге доказательства, а также заполнить недостающие фрагменты. После этого останется объединить доказательство существования с доказательством единственности при помощи правила (∧i).
64
Формальная теория множеств
Упражнение 9.1 Доказать (A) ZF ` ∀x∀y∃!z(z = x ∪ y), где z = x ∪ y := ∀v(v ∈ z ↔ v ∈ x ∨ v ∈ y) (существование и единственность объединения множеств). (B) ZF ` ∀x∃!y(y = {x}), где y = {x} := y = {x, x} (существование и единственность одноэлементного множества, содержащего заданный элемент). Указание: (A) Для доказательства существования использовать аксиому суммы, примененную к множеству-паре {x, y}. Существование последнего гарантируется аксиомой пары. Для доказательства единственности использовать аксиому объемности. (B) Использовать аксиому пары и аксиому объемности. Упражнение 9.2 Введем упорядоченную пару как пару с выделенным первым элементом: x = (y, z) := x = {{y}, {y, z}}. Доказать ZF ` ∀y∀z∃x(x = (y, z)). Указание: Для доказательства существования упорядоченной пары (y, z) использовать уже доказанные факты существования одноэлементного множества {y} и пары {y, z}, затем еще раз сослаться на существования пары, элементами которой будут только что построенные множества. Для доказательства единственности использовать аксиому объемности. Упражнение 9.3 (C) Введем следующее обозначение для векторов, обобщающее понятие упорядоченной пары: x = (x1 , ..., xn ) := x = (x1 , (x2 , ..., xn )). Докажите ZF ` ∀x1 ∀x2 ∃!y(y = x1 × x2 ), где y = x1 × . . . × xn := ∀u(u ∈ y ↔ ∃z1 ...∃zn (z1 ∈ x1 ∧ . . . ∧ zn ∈ xn ∧ u = (z1 , . . . , zn )))
(существование и единственность декартова произведения множеств).
9.2 Отношение порядка
65
(D) Доказать ZF ` ∀x(¬x = ∅)∃!y(y = ∩x), где y = ∩x := ∀z(z ∈ y ↔ ∀v(v ∈ x → z ∈ v)) (существование и единственность пересечения произвольного числа множеств). (E) Доказать ZF ` ∀x∀y∃!z(z = x ∩ y), где z = x ∩ y := ∀v(v ∈ z ↔ (v ∈ x ∧ v ∈ y)). Указание: (C) Рассмотрим случай только элементов в произведении, поскольку техника доказательства в других случаях аналогична. Единственность следует из аксиомы объемности, а существование из аксиомы выделения, примеx ∪x ненной к множеству x := 22 1 2 , и свойству P := ∃z1 ∃z2 (z1 ∈ x1 ∧ z2 ∈ x2 ∧ z = (z1 , z2 )). (D) Для доказательства существования применить аксиому выделения к множеству ∪x и свойству P := ∀v(v ∈ x → z ∈ v). Единственность следует из аксиомы объемности. (E) Применить (D) к паре {x, y}. • Аксиома замены. Можно создавать новое множество как множество значений некоторой функции. ∀x(∀y∀z∀w((y ∈ x ∧ P(y, z) ∧ P(y, w)) → z = w) → ∃r∀s(s ∈ r ↔ ∃t(t ∈ x ∧ P(t, s)))),
(ZF6 )
где P — произвольная формула языка L∈ с двумя свободными переменными. Как и аксиома выделения (ZF3 ), данное утверждение представляет собой схему аксиом, т.е. “шаблон”, из которого получаюся аксимоы путем подстановки конкретных формул P.
9.2
Отношение порядка
Перед обсуждением остальных аксиом Цермело–Френкеля рассмотрим понятие порядка. Введем следующее определение:
66
Формальная теория множеств
Определение 9.1 Частичным порядком называется пара (A, <), где A — множество, а < — двуместное отношение на A (напомним, что n-местное отношение на A это просто подмножество An , то есть < это подмножество A × A), обладающее следующими свойствами: (i) y 6< y для всех y ∈ A, (ii) Из x < y и y < z следует x < z для всех x, y, z ∈ A. В этом случае говорят также, что отношение < частично упорядочивает множество A либо что A частично упорядоченно отношением <. Следуя традиции, мы используем значок < (а не букву) как знак отношения частичного порядка и называем это отношение “меньше”. Определение 9.2 Частичный порядок (A, <) называется линейным, если все элементы множества A сравнимы отношением <, иначе говоря, если для всех a ∈ A , b ∈ A выполнено либо a < b, либо b < a, либо a = b. В этом случае говорят также, что отношение < является отношением линейного порядка на A, или что A является множеством, линейно упорядоченным отношением <. Пусть (A, <) — частичный порядок. Очевидно, что любое B ⊂ A также частично упорядоченно отношением <. Элемент x ∈ B называется минимальным элементом множества B, если не существует никакого меньшего его элемента этого множества. Элемент x ∈ B называется наименьшим элементом множества B, если он меньше всех элементов этого множества. Заметим, что наименьший элемент множества автоматически является и его минимальным элементом, однако обратное, вообще говоря, неверно. Например, во множестве коробок определим отношение порядка таким образом, что коробка A меньше коробки B, если ее можно поместить внутрь коробки B. Ясно, что при таком определении необязательно все коробки являются соизмеримыми, то есть полученный порядок не обязательно является линейным, (например, если в рассматриваемом множестве коробок найдутся такие две, что ни одна из них не помещается внутрь другой). При этом наименьшей коробкой является та, которая помещается во все остальные, а минимальной та, в которую не помещается ни одна коробка. Определение 9.3 Порядок (A, <) называется фундированным, если любое непустое подмножество B ⊂ A содержит минимальный элемент. В этом случае говорят также, что частично упорядоченное множество A является фундированным. Фундированный линейный порядок называется полным. В этом случае говорят также, что множество A вполне упорядочено отношением <.
9.2 Отношение порядка
67
Вот некоторые примеры частичных порядков: Пример 9.2 (A) Множество натуральных чисел N со стандартным отношением < — полный порядок. (B) Множество Z (целых чисел), также со стандартным отношением < — не является полным порядком, хотя и является линейным порядком. (C) Множество комплексных чисел C со следующим отношением порядка (z1 < z2 ↔ Re(z1 ) < Re(z2 )) является частичным, но не является даже линейным порядком. (D) Множество целых положительных чисел Z+ с отношением <, введенным следующим образом: x < y если x делит y. Такой порядок является частичным, но не является линейным порядком. (E) Для некоторого множества X, рассмотрим множество всех его подмножеств 2X , упорядочим его отношением включения, а именно x < y если x ⊂ y и x 6= y. Такой порядок в общем случае не является линейным. (F) Над множеством A∗ слов над алфавитом A, где алфавит частично упорядочен отношением
x1 > x2 > . . . > xk > . . . элементов множества A. (iii) Для множества X верен принцип математической индукции в следующей форме: если (при каждом x ∈ X) из истинности P(y) для всех y < x следует истинность P(x), то свойство P верно при всех x.
68
Формальная теория множеств
Доказательство: Теорему будем доказывать по частям. Перейдем к доказательству эквивалентности первых двух свойств. Рассмотрим бесконечную убывающую последовательность x0 > x1 > x2 > . . . Очевидно, что множество ее значений не имеет минимального элемента (следующий элемент найдется для любого элемента, так как последовательность бесконечная, и он еще меньше, так как она убывающая). Поэтому (i) влечет (ii). И обратно, если X непустое множество, не имеющее минимального элемента, то бесконечную убывающую последовательность можно строить следующим образом. Зафиксируем некий элемент x ∈ X, он не минимальный по предположению, тогда берем меньший элемент x1 < x, x1 ∈ X, таким образом получаем бесконечную убывающую последовательность {xi }∞ i=1 . Теперь выведем принцип математической индукции из существования минимального элемента в любом подмножестве. Пусть P(x) — свойство элементов множества X, верное не для всех элементов x ∈ X. Рассмотрим множество B тех элементов, для которых свойство P неверно. Множество B непусто по предположению. Пусть x0 — минимальный элемент множества B. Тогда для всех x < x0 свойство P(x) выполнено, так как элементов меньших x0 в множестве B нет. Но тогда по предположению должно быть выполнено и P(x0 ), таким образом мы пришли к противоречию. И последнее: из принципа математической индукции следует существование минимального элемента в любом непустом множестве. Пусть B — множество, в котором нет минимальных элементов. Докажем что B пусто: в качестве P(x) возьмем свойство x ∈ / B. Тогда, если P(x) верно для всех x < x0 , то никакой элемент, меньший x0 , не лежит в B. Значит, если бы x0 лежал в B, то он был бы там минимальным, таким образом, мы пришли к противоречию.
9.3
Аксиома регулярности
Теперь мы можем сформулировать еще одну, весьма важную аксиому системы аксиом Цермело–Френкеля, называемую аксиомой регулярности, или фундирования (the foundation axiom). Эта аксиома записывается следующим образом: ∀x ¬x = ∅ → ∃y y ∈ x ∧ y ∩ x = ∅ , (ZF7 ) где y ∩ x = ∅ — сокращенное написание формулы
z ∩ y = ∅ := ∃r r = z ∩ y ∧ r = ∅ .
Эта аксиома является несколько искусственной и никогда явным образном не используется в привычной нам математике. Она утверждает, что каждое непустое множество X содержит элементы, минимальные по отношению к отношению
9.3 Аксиома регулярности
69
принадлежности ∈ (а не включения ⊆). С интуитивной точки зрения мы бы хотели, чтобы все наши множества строились из пустого множества ∅. Поэтому мы хотим избавиться от бесконечных последовательностей множеств, убывающих по отношению к порядку, определенному отношением принадлежности ∈. Аксиома регулярности (ZF7 ) утверждает таким образом, что никакое множество, в этом смысле, не может иметь бесконечной “глубины”. В привычной нам математике мы имеем дело с натуральными, рациональными, действительными числами, функциями и т.п. В дальнейшем мы покажем, что все эти объекты явным образом строятся из пустого множества ∅. Условие, налагаемое аксиомой регулярности на отношение принадлежности ∈, очень похоже на понятие фундированного порядка. Правда, стоит иметь в виду, что отношение принадлежности не упорядочивает все множество, например, хотя бы потому, что из x 6= y не следует, что x ∈ / y либо y ∈ / x. Требование справедливости данной аксиомы является весьма сильным, и, в частности, исключает из возможных моделей аксиоматики Цермело–Френкеля всевозможные экзотические объекты, такие как множество всех множеств или множество всех множеств не содержащих себя в качестве элемента. Действительно, если бы существовало множество A всех множеств, не содержащих самого себя, то есть x ∈ A, если и только если x ∈ / x, то оно содержало бы бесконечную (“бездонную”) последовательность множеств, включающихся друг в друга. Вот строгая формулировка и доказательство этого утверждения. Предложение 9.1 ZF ` ∀x(¬x ∈ x) Доказательство: Докажем теперь, что никакое множество не принадлежит самому себе. Воспользуемся аксиомой регулярности и уже доказанным фактом существования одноэлементного множества {x}, а также тем, что ZF ` ∀x(x ∈ {x}), где x ∈ {x} := ∃y(x ∈ y ∧ y = {x}) (докажите этот факт самостоятельно). Дерево доказательства формулы ∀x(¬x ∈ x) выглядит следующим образом. [y ∈ {x} ∧ ∀z(z ∈ {x} → ¬z ∈ x)]1
(∧e)
∀z(z ∈ {x} → ¬z ∈ x)
(∀e)
z ∈ {x} → ¬z ∈ x x ∈ {x} x ∈ {x} → ¬x ∈ x
z=x
(→e)
¬x ∈ x∀i
∃y(y ∈ {x})
∀x(¬x ∈ x)
∀v(∃y(y ∈ v) → ∃y(y ∈ v ∧ ∀z(z ∈ v → ¬z ∈ y)))
(∃y)(y ∈ {x} ∧ ∀z(z ∈ {x} → ¬z ∈ y))1,(∃e)
∀x(¬x ∈ x)
∀e,v={x}
∃y(y ∈ {x}) → ∃y(y ∈ {x} ∧ ∀z(z ∈ {x} → ¬z ∈ y))
(→e)
70
Формальная теория множеств
Упражнение 9.4 Докажите, что в модели аксиоматики Цермело–Френкеля не существует множества всех множеств. Иначе говоря, ZF ` ¬∃x∀y(y ∈ x). Указание: Если бы такое множество существовало, то оно содержало бы себя, что противоречит предложению 9.1
9.4
Аксиома бесконечности
Рассмотренные до сих пор аксиомы системы аксиом Цермело–Френкеля позволяли конструировать различные математические объекты, например, конечные вектора, отношения, отображения как некоторые специальные множества. Однако, легко заметить, что все множества, которые мы таким образом конструировали, были конечными. Так, например, мы доказали существование пустого множества в любой модели системы аксиом Цермело–Френкеля. Следовательно, хотя бы в силу аксиомы множества подмножеств (ZF4 ), существует и одоэлементное множество 2∅ , а также трех (четырех, пяти) элементные множества, и вообще множества с любым конечным числом элементов. Действительно, среди аксиом, которые позволяли формировать новые множества, лишь аксиома пары (ZF2 ), аксиома множества подмножеств (ZF4 ) и аксиома суммы (ZF5 ) позволяли формировать множества, имеющие больше элементов, чем было в исходных множествах, остальные же (например, аксиома выделения (ZF3 )) позволяли лишь уменьшать число элементов в формируемых множествах. Таким образом, пользуясь сформулированными до сих пор аксиомами, мы не сможем вырваться из мира конечных множеств, а, значит, мы не можем утверждать, опираясь на эти аксиомы, существование многих привычных математических объектов, таких как, например, множество натуральных (вещественных, комплексных) чисел и, вообще, любые другие бесконечные множества. Вообще говоря, это не является принципиальным ограничением для построения математики, а именно, можно построить “конечную” математику, то есть оперирующую исключительно с конечными объектами. Однако надо сказать, что такая конечная математика будет существенно беднее общепринятой, так что отказ от последней ради исключения из нее бесконечных множеств создает весьма значительные сложности. Иначе говоря, хотя без бесконечных множеств “прожить” и можно, но это существенно менее удобно: представьте себе, например, как определить вещественную функцию, не используя понятия бесконечных множеств. Впрочем, в этих рассуждениях мы оставили в стороне философский вопрос о том, существуют ли на самом деле бесконечные множества: в окружающей нас природе мы, очевидно не можем указать ни на какой конкретный пример бесконечного множества, а лишь на сколь угодно большие, но все же конечные множества. Иначе говоря, в житейских ситуациях
9.5 Ординалы и стандартная модель арифметики
71
мы вряд ли когда либо можем встретиться с действительной (актуальной) бесконечностью (то есть с действительно бесконечным множеством). И в то же время встречаемся со сколь угодно большими множествами, то есть с потенциальной бесконечностью. Для того, чтобы ввести в формируемую нами теорию бесконечные множества, предназначена специальная аксиома системы аксиом Цермело–Френкеля, называемая аксиомой бесконечности и записываемая следующим образом: ∃x(∅ ∈ x ∧ ∀v(v ∈ x → {v} ∪ v ∈ x)))
(ZF8 )
Данная аксиома утверждает существование множества, содержащего по крайней мере все элементы вида 0 := ∅, 1 := {∅} . . . 2 := {∅} ∪ {{∅}} то есть все элементы вида k = k − 1 ∪ {k − 1}, k ∈ N. Такое множество, очевидно, является бесконечным (по крайней мере счетным). Стоит отметить, что мы не можем сказать ничего более определенного о мощности данного множества. В частности, мы не можем утверждать, что это множество счетно, так как аксиома бесконечности не гарантирует, что в нем содержатся только элементы вида k. С использованием аксиомы бесконечности мы получаем множество новых объектов, и жизнь сразу делается более “приятной”. В частности можно сравнительно легко доказать существование самых разных привычных объектов современной математики. Для примера мы построим в следующем параграфе множество натуральных чисел и, вместе с ним, фактически стандартную модель арифметики. Натуральные числа мы будем отождествлять с только что введенными элементами вида k, где k ∈ N, а “множество натуральных чисел” со множеством, содержащим все “натуральные числа”, то есть множества k, k ∈ N, и только их. Такое множество очевидно содержится в бесконечном множестве, существование которого гарантируется аксиомой бесконечности (ZF8 ). Таким образом, множество “натуральных чисел” можно получить, применяя к последнему множеству аксиому выделения (ZF3 ). Этой конструкции посвящен следующий параграф, в котором попутно вводятся более общие весьма важные объекты, обобщающие как понятие чисел, так и множества натуральных чисел, называемые порядковыми числами или ординалами.
9.5
Ординалы и стандартная модель арифметики
Понятие ординала или порядкового числа — является естественным обобщением понятия натурального числа, точнее, является “мерой величины” всевозможных,
72
Формальная теория множеств
в том числе бесконечных, порядков в той же мере, в какой натуральные числа могут использоваться для измерения величины конечных порядков. Это понятие чрезвычайно важно в теории множеств и математике вообще. Поскольку конструкция ординалов естественным образом связана с возможностью сравнения между собой разных порядков, то нам необходимо для начала определить, что мы понимаем под одинаковыми (точнее, будем говорить изоморфными) порядками. Определение 9.4 Порядки (X, <X ) и (Y,
9.5 Ординалы и стандартная модель арифметики
73
(ii) если Y — частичный порядок, а yˆ — его начальный отрезок, то yˆ также можно рассматривать как порядок (отношение порядка унаследовано от Y ). Тогда любой начальный отрезок порядка yˆ является начальным отрезком порядка Y ; (iii) объединение любого числа начальных отрезков одного и того же линейного порядка является начальным отрезком того же порядка; (iv) из любых двух начальных отрезков полного порядка один обязательно является подмножеством другого. Теперь введем следующее определение. Определение 9.5 Будем говорить, что (i) порядки (X, <X ) и (Y,
74
Формальная теория множеств
ординал является классом эквивалентности всех изоморфных между собой порядков. Например, ординал 1 должен быть классом всех порядков, изоморфных порядку {∅}, ординал 2 должен быть классом всех порядков, изоморфных порядку {∅, 1}, где 1 > ∅. Однако, в строгой теории множеств, которую мы пытаемся строить, подобное “определение” понятия ординала не может быть реализовано. А именно, для того чтобы доказать существование хоть какого-нибудь ординала как класса всех изоморфных порядков, необходимо выделить этот ординал с использованием аксиомы выделения (ZF3 ) из некоторого достаточно большого множества, которому принадлежат все порядки. Достаточно легко заключить, что само существование подобного чересчур “большого” множества весьма проблематично. Для того, чтобы обойти это затруднение, Дж. фон Нейман15 предложил определить понятие ординала слегка по-другому, так что ординал, введенный согласно новому определению, автоматически оказывался бы множеством. Для описания этой конструкции введем следующие определения. Определение 9.6 Множество x называется транзитивным, если для всех y, таких что y ∈ x, и z, таких что z ∈ y, выполнено z ∈ x. Иначе говоря, на языке теории множеств формула T rans(x) := ∀y∀z(z ∈ y ∧ y ∈ x → z ∈ x) “говорит” о том, что x — транзитивное множество. Определение 9.7 Ординалом будем называть транзитивное множество, вполне упорядоченное отношением принадлежности ∈ между своими элементами. Стоит отметить, что на произвольном множестве отношение принадлежности ∈, вообще говоря, не задает даже частичного порядка. Однако на транзитивном множестве это отношение является отношением частичного порядка. На рассматриваемом нами языке теории множеств формула Linord(x, ∈) := ∀y∀z(y ∈ x ∧ z ∈ x → z ∈ y ∨ y ∈ z ∨ y = z) 15
Джон фон Нейман (John von Neumann) (1903–1957) — американский математик. Внес большой вклад в создание первых ЭВМ и разработку методов их применения. Разработал теорию игр. Внес значительный вклад в развитие квантовой механики — краеугольного камня ядерной физики. Участвовал в сверхсекретном Манхэттенском проекте по созданию атомной бомбы. фон Нейман работал в Принстонском институте перспективных исследований, принимал участие в разработке нескольких компьютеров новейшей конструкции. Среди них была, в частности, машина, которая использовалась для решения задач, связанных с созданием водородной бомбы.
9.5 Ординалы и стандартная модель арифметики
75
“говорит” о том, что множество x упорядочено отношением принадлежности ∈, а формула F ound(x, ∈) := (v ⊂ x ∧ (¬x = ∅) → ∃w(w ∈ v ∧ ∀q(q ∈ v → (w ∈ q ∨ w = q)))), “говорит” о том, что отношение принадлежности ∈ превращает x в фундированное множество. Тогда формула Ord(x) := T rans(x) ∧ Linord(x, ∈) ∧ F ound(x, ∈) “говорит” о том, что x — ординал. Пример 9.4 Следующие множества является ординалами: 0 := ∅, 1 := {0}, 2 := 1 ∪ {1}, . . . , k := k − 1 ∪ {k − 1}, . . .
k ∈ N.
Все такие ординалы называются конечными ординалами. Определенные таким образом ординалы можно, в силу теоремы Бернштейна, сравнивать между собой, более того, в силу этой же теоремы, ординалами можно пользоваться как естественной мерой величины полных порядков. А именно, справедливо следующее утверждение. Теорема 9.3 Если система аксиом Цермело–Френкеля ZF не является противоречивой, то любой полный порядок изоморфен единственному ординалу α. (Y, <) ∼ (α, ∈) В цели данной книги не входит подробное изложение теории множеств, будь то наивной или аксиоматической, а лишь иллюстрация применения математической логики для описания различных математических теорий, в том числе теории множеств. Поэтому мы приведем здесь лишь немногие основные свойства ординалов без доказательства, предлагая читателям самим поупражняться в их доказательстве. В случае трудностей, а также при желании более углубленно изучить теорию множеств, мы рекомендуем обращаться к [4], [6]. В связи с этим для начала мы предлагаем читателю в качестве упражнения доказать теорему 9.3. Помочь в этом могут следующие свойства ординалов: (i) любое ограниченное семейство ординалов имеет точную верхнюю грань; (ii) класс всех ординалов вполне упорядочен отношением принадлежности ∈ между своими элементами;
76
Формальная теория множеств
(iii) начальный отрезок ординала также является ординалом; (iv) изоморфные ординалы совпадают. Обратите внимание, что мы говорим о классе, а не о множестве всех ординалов. Действительно, не трудно показать (см. ниже), что множества всех ординалов не существует. Однако понятие частичной (линейной, полной) упорядоченности очевидно можно применять не только к множествам, но и к произвольным совокупностям объектов (классам). С использованием вышеприведенных свойств доказательство теоремы 9.3 можно провести по следующей схеме. Доказательство теоремы 9.3: Обозначим через α− точную верхнюю грань множества тех ординалов α, которые имеют строго меньший порядковый тип, чем Y , т.е. α− := sup {α : α ≺ Y }. Из определения α− следует α− +1 < Y , где формула α < β означает, что либо α β, либо α ∼ β, поскольку иначе выполнялось бы α− + 1 ≺ Y , что противоречило бы определению α− . Но выражение Y 4 α− + 1 означает, что Y изоморфен некоторому начальному отрезку α− + 1 (который, по свойству (iii), является ординалом), или самому α− +1. Единственность ординала α следует из свойства (iv).
Упражнение 9.5 Докажите, что любое вполне упорядоченное множество изоморфно единственному начальному отрезку [0, α) в классе всех ординалов (образованному всеми ординалами, меньшими α). Упражнение 9.6 Докажите, что в предположении непротиворечивости системы аксиом Цермело–Френкеля ZF не существует множества всех ординалов. Данное утверждение известно под названием парадокса Бурали–Форти.
Теперь введем следующее определение. Определение 9.8 Ординал α будем называть непосредственно следующим за ординалом β и писать α = β + 1, если α = β ∪ {β}. Предельным ординалом будем называть ординал, который не следует непосредственно ни за каким ординалом.
9.5 Ординалы и стандартная модель арифметики
77
Формула Limord(x) := Ord(x) ∧ ¬∃y(Ord(y) ∧ x = y + 1), где x = y + 1 := x = y ∪ {y}, “говорит” о том, что x — предельный ординал. Очевидно, что 0 является предельным ординалом, а каждый конечный ординал k, где k ∈ N, отличный от 0, непосредственно следует за ординалом k − 1. Определение 9.9 Минимальным бесконечным ординалом (или первым счетным ординалом) называется предельный ординал ω0 , которому не предшествует никакой предельный ординал, кроме 0. Таким образом, формула x = ω0 := (¬x = 0) ∧ Limord(x) ∧ ∀y (y ∈ x) ∧ (¬y = 0) → ¬Limord(x) “говорит” о том, что ω0 является первым счетным ординалом. С учетом введенных обозначений можно записать свойство конечности ординала следующей формулой: F in(x) := ∃y(y = ω0 ∧ x ∈ y). Данная формула истинна, если и только если множество, соответствующее в модели аксиом Цермело–Френкеля символу x, является конечным ординалом (это можно принять за формулировку определения конечного ординала). Ординалы, не являющиеся конечными, называются бесконечными. Использую аксиоматику Цермело–Френкеля ZF, мы можем показать существование стандартной модели арифметики Пеано. Практически все для этого уже подготовлено. А именно, в качестве универсума рассмотрим N := ω0 определим sN (α) = α + 1, 0N := ∅. Таким образом, натуральные числа оказываются просто конечными ординалами. Осталось определить операции суммирования +N и умножения ∗N и проверить выполнение аксиом Пеано. Читателю предоставляется возможность поупражняться в этом или прочитать об этом в любом стандартном курсе теории множеств ([4], [6]). Таким образом доказывается следующий фундаментальный результат: Теорема 9.4 В предположении непротиворечивости аксиоматики Цермело–Френкеля ZF существует стандартная модель арифметики Пеано.
78
Формальная теория множеств
Кстати, интересно отметить, что ординал ω0 + 1 представляет собой не что иное, как порядок (X, <X ) из примера 9.3 (B). В качестве упражнения рекомендуем читателю представить себе как выглядит ординал ω0 + k. Продолжим рассмотрение структуры класса всех ординалов. Множество ω0 является предельным ординалом и образовано объединением всех конечных ординалов, которые естественным образом отождествляются с натуральными числами, однако ряд ординалов не исчерпывается таким образом. Так, за ординалом ω0 следует ω0 + 1, за последним ω0 + 2, и так далее. Так, что существуют ординалы ω0 + 1, ω0 + 2, . . . , ω0 + k, . . .
k ∈ N.
Вслед за приведенными выше ординалами, очевидно, найдется следующий предельный ординал ω1 , являющийся первым предельным ординалом несчетной мощности (поупражняйтесь в доказательстве этого утверждения), также ω1 называют первым несчетным ординалом. За ним следуют ординалы ω1 + 1, ω1 + 2, и далее в ряду ординалов найдется следующий предельный ординал ω2 , и так далее. Таким образом, ряд ординалов выглядит так: 0, 1, 2, ..., ω0 , ω0 + 1, ω0 + 2, ..., ω1 , ω1 + 1, ω1 + 2, ..., ω2, ... Мы, естественно, привели здесь лишь начальный отрезок этого ряда. Понятие ординала, позволяющее легко сравнивать порядки, может быть адаптировано и для сравнения множеств по мощности. Введем для этого следующее определение. Определение 9.10 Кардиналом называется ординал, не равномощный ни одному из меньших (предыдущих) ординалов. Иначе говоря, формула Card(x) := Ord(x) ∧ ∀y(y ∈ x → ¬(y ∼ x)) означает, что x является кардиналом. Формула y ∼ x означает, что множества y и x равномощны (выпишите “полную версию” этой формулы самостоятельно). Так, 0, 1, 2 и все конечные ординалы являются кардиналами. Также являются кардиналами ω0 и ω1 , однако, например, ω0 + 1, ω0 + 2, и вообще ω0 + k, где k ∈ N, не являются кардиналами, так как все они имеют счетную мощность, и равномощны меньшему ординалу ω0 . Кардиналы являются естественной мерой мощности множеств в той же мере, в той же мере, в какой ординалы являются мерой “величины” порядков. Для обозначения кардиналов часто используются буквы древнееврейского алфавита. Так, ω0 и ω1 , рассматриваемые как кардиналы, обычно обозначают ℵ0 и ℵ1 , соответственно, и при этом о них говорят, что это, соответственно счетный и первый несчетный кардиналы (мощности).
9.6 Аксиома выбора
9.6
79
Аксиома выбора
Сформулируем, наконец, последнюю, наиболее нетривиальную из аксиом Цермело–Френкеля — аксиому выбора. Данная аксиома утверждает, что существует функция (называемая функцией выбора), которая каждому множеству из набора ставит в соответствие ровно один элемент этого множества. Это утверждение кажется весьма тривиальным, однако оно может быть выведено из других аксиом Цермело–Френкеля лишь для конечных наборов множеств. Предположение же его справедливости для произвольного набора множеств (впрочем, не вполне произвольного: эти наборы должны быть множествами) ведет к целому ряду нетривиальных следствий, иногда, казалось бы, противоречащих здравому смыслу. Поскольку в теории, которую мы строим, все объекты являются множествами (в том числе функции и “наборы” множеств, с которыми мы можем работать), то формальная запись данной аксиомы несколько менее интуитивна, чем ее словесное описание. Для упрощения записи введем формулу Disjoint(x) := ∀u∀v (u ∈ x ∧ v ∈ x ∧ ¬u = v → u ∩ v = ∅), которая “говорит” о том, что x состоит из попарно непересекающихся множеств. С помощью этого сокращения аксиому выбора можно записать в следующем, сравнительно компактном виде: ∀x (¬∅ ∈ x ∧ Disjoint(x) → ∃y (∀w (w ∈ x ↔ ∃! z(z ∈ w ∩ y))))
(AC)
Здесь утверждается существование множества y, имеющего ровно по одному общему множеству с каждым из элементов исходного множества x, при условии, что x непусто и его элементы — попарно непересекающиеся множества. В наши цели не входит подробное обсуждение аксиомы выбора. Интересующийся читатель может обратится, например, к [6] или [5]. Здесь отметим только, что аксиома выбора является одним из краеугольных камней современной математики в том смысле, что многие фундаментальные утверждения последней (скажем, целый ряд важных результатов математического анализа) справедливы исключительно в предположении истинности аксиомы выбора. В то же время, интересным следствием данной аксиомы является парадокс Банаха–Тарского, который утверждает, что любое тело (например, шар) может быть разрезано на конечное число непересекающихся частей, из которых можно потом составить два тела, равных исходному. Это утверждение кажется противоречащим здравому смыслу, так как если бы подобное разбиение было бы осуществимо, то легко можно было бы осуществить известное евангельское чудо, а именно “накормление верующих двумя рыбами и пятью ячменными хлебами” (Евангелие от Иоанна 6:13-14). Однако в доказательстве данного утверждения существенным образом
80
Формальная теория множеств
используется аксиома выбора. Последняя является весьма неконструктивной, так как в ней утверждается существование “функции выбора”, но не приводится алгоритма построения этой функции. А значит, любые доказательства, которые существенным образом используют аксиому выбора, в том числе и доказательство парадокса Банаха–Тарского, неконструктивны. Поэтому, например, невозможно привести никакого алгоритма деления тела на составные части, утверждаемого в формулировке парадокса, хотя и можно утверждать существование соответствующего разбиения. Следует отметить, что аксиома выбора является еще одной аксиомой создания множеств, наряду с аксиомами выделения (ZF3 ), пары (ZF2 ), суммы (ZF5 ), множества подмножеств (ZF1 ) и замены (ZF6 ). Аксиоматику Цермело–Френкеля с аксиомой выбора обозначают ZFC. Отметим, что (AC) не зависит от остальных аксиом ZF.
9.7
Теория множеств и основания математики
Материала предыдущего параграфа должно быть вполне достаточно, чтобы убедиться в том, что рассматриваемого нами “примитивного” языка теории множеств (мы называем его “примитивным”, поскольку это язык логики первого порядка, в котором сигнатура состоит всего из двух предикатных символов — равенства = и принадлежности ∈) и системы аксиом Цермело–Френкеля вполне достаточно, чтобы описать и построить практически всю современную математику. Так, этих инструментов было достаточно для построения натуральных чисел и основных действий над ними. Отталкиваясь от этих понятий, можно построить целые числа (целое число можно определить, например, как пару натуральных чисел), рациональные числа (как пары целых чисел) и, наконец, действительные числа, вектора, комплексные числа, геометрические фигуры (как множества векторов), функциональные пространства и так далее. Соответствующие построения проводятся “по нарастающей” (целые числа строятся на основе натуральных, рациональные на основе целых, вещественные на основе рациональных и т.д.). Несколько неожиданным и, возможно, даже не вполне соответствующим интуитивному представлению о математических объектах оказывается то, что в любой модели построенной таким образом математики все объекты (числа, вектора, функции, геометрические фигуры, и т.д.) оказываются множествами, и даже, более того, все без исключения построены на основе одного объекта — пустого множества ∅. То, что построенные таким образом математические объекты оказываются, на первый взгляд, не имеющими отношения к реальной жизни (например, натуральные числа, построенные как конечные ординалы, не имеют отношения к практическому подсчету предметов) можно считать платой за строгость обоснования факта существования всех математических объектов. Кому-то
9.7 Теория множеств и основания математики
81
такая плата, приводящая к формализации математики и ее кажущемуся “отрыву от реальной жизни”, может показаться чрезмерной. В то же время, на наш взгляд, требование формализованности и строгости рассуждений никогда не может чрезмерным, а опасность работы с плохо определенными “интуитивными” понятиями проявляется в многочисленных парадоксах, некоторые примеры которых были приведены в данной главе. Поскольку, как мы уже убедились, математика может быть построена на теоретико-множественных основаниях, возникает естественный вопрос о том, насколько прочными могут быть такого рода основания. А именно, является ли аксиоматика теории множеств (например, аксиоматика Цермело–Френкеля ZFC) непротиворечивой? Из непротиворечивости последней следовала бы непротиворечивость и всей математики. К сожалению, однако, до настоящего времени непротиворечивость аксиоматики Цермело–Френкеля не была ни доказана, ни опровергнута. Не лучшим образом обстоит дело и с другими популярными аксиоматическими теориями множеств, которые также предлагались для построения оснований математики. Поэтому вопрос “строгого обоснования” математики, как ни странно, на сегодняшний день в известной мере является вопросом веры или доверия к многотысячелетнему опыту математиков и “пользователей” математического аппарата (за все известное в истории время использования математического аппарата противоречия получить не удалось, поэтому есть шанс, что математика является непротиворечивой). К сожалению, дело обстоит в известной мере еще хуже, ибо даже в предположении непротиворечивости математики ни системы аксиом Цермело–Френкеля, ни какой-либо другой системы аксиом, достаточно богатой, чтобы построить современную математику, и, в то же время, достаточно “обозримой” (такой, которую можно описать конструктивным образом, как например, мы описали ZFC) не хватит, чтобы доказать непротиворечивость этой системы аксиом. Иначе говоря, в предположении непротиворечивости ZFC, пользуясь только аксиомами ZFC, нельзя доказать непротиворечивость ZFC. Данный результат является следствием второй теоремы Геделя о неполноте формальных теорий (кстати, выводимой из системы аксиом ZFC, как и вся та математическая логика, которую мы строим). Другим важным вопросом является вопрос о том, достаточно ли системы аксиом Цермело–Френкеля для описания всей современной математики. Иначе говоря, все ли интересные математические объекты и теории могут быть описаны в рамках теории множеств, построенной на базе аксиом ZFC? Ответ на этот вопрос также отрицательный, хотя ситуация здесь не настолько трагична, в том смысле, что для построения весьма значительной части современной математики достаточно системы аксиом Цермело–Френкеля с аксиомой выбора. Есть однако, весьма интересные и важные, в том числе в приложениях, утверждения, которые не выводятся из ZFC. К числу таких утверждений относится, напри-
82
Формальная теория множеств
мер, континуум-гипотеза, заключающаяся в том, что множество вещественных чисел R равномощно ℵ1 , то есть #R = ℵ1
(CH)
Заметим, что из аксиоматики ZFC можно вывести, что #R ≥ ℵ1 , однако в отношении континуум-гипотезы (CH) справедливо следующее утверждение, доказанное К. Геделем и П. Коэном. Теорема 9.5 Если ZFC непротиворечива, то ZFC 0 CH
и
ZFC 0 ¬CH. Иначе говоря, в этом случае континуум-гипотеза является независимым относительно аксиоматики Цермело–Френкеля утверждением. В cвязи с возможностью построения математики на теоретико-множественных основаниях возникает естественный вопрос о том, как устроены модели математики, содержащие все мыслимые математические объекты. Очевидно, что, модель математики, построенной на системе аксиом Цермело–Френкеля, существует, если и только если ZF непротиворечива (нетривиальная часть этого утверждения следует из теоремы о модели 6.5). Однако, в этом случае все модели математики будут бесконечными (так как они должны содержать хотя бы все ординалы, число которых бесконечно), поэтому, в силу теоремы Левенгейма– Скулема о повышении мощности модели 7.4, в этом случае математика будет иметь сколь угодно много неизоморфных между собой моделей (с универсумами сколь угодно большой мощности). Но наиболее интересные и нетривиальные результаты дает теорема Левенгейма–Скулема о понижении мощности модели 7.2: в предположении непротиворечивости аксиоматики ZFС построенная с ее помощью математика будет иметь модель A со счетным универсумом. Данное утверждение кажется абсурдным: каким образом в счетном универсуме может уместиться принципиально несчетное число объектов, например, хотя бы несчетное множество вещественных чисел? Тем не менее данный парадокс, называемый парадоксом Скулема, является кажущимся. На самом деле счетность или несчетность множества определяется наличием биекции между данным множеством и ω0 (напомним, последнее можно считать просто множеством натуральных чисел). Множество вещественных чисел в любой модели математики, в том числе и в модели со счетным универсумом, является несчетным (данный факт, доказанный еще Кантором, сравнительно легко выводится из аксиоматики ZFC). Иначе говоря, это означает, что в данной модели нет объекта, соответствующего биекции между RA и ω0 A . В то же время, поскольку универсум A счетен, то можно
9.7 Теория множеств и основания математики
83
рассматривать его в качестве подмножества некоторой большей модели математики B, универсум которой несчетен. В этой большей модели RA и ω0 A являются равномощными (поскольку оба они являются счетными множествами), то есть в ней имеется объект (множество), соответствующий биекции между RA и ω0 A , однако этот объект отсутствует в меньшей модели A. То есть понятия конечности, счетности, несчетности на самом деле зависят от модели.
B A
R
A A
Данная ситуация проиллюстрирована на рисунке, где модель A изображена в виде “плоского мира”, а B в виде “объемного мира”. Биекция между RA и ω0 A изображена в виде мостика между RA и ω0 A , который существует только в “объемном мире” (из “плоского мира” он недоступен).
84
Основы теории алгоритмов
10
Основы теории алгоритмов
Ранее мы занимались изучением языков, предназначенных для описания рассуждений. Теперь мы “поменяем угол зрения” и будем рассматривать языки, предназначенные для записи конкретных действий. Языки логики предикатов относятся к классу декларативных (описательных): смысл элемента такого языка (формулы) заключается в описании чего-либо. Те же языки, к изучению которых мы приступаем, можно назвать языками инструкций, так как их элементы, называемые часто инструкциями, являются предписаниями исполнителю (человеку, компьютеру, другому вычислительному устройству) совершить определенный набор действий. Поскольку набор точных инструкций для выполнения конкретных действий принято называть алгоритмом или программой, такие языки инструкций часто называются алгоритмическими языками или языками программирования. Последние два термина часто употребляются в слегка разных контекстах: под языком программирования обычно понимают язык инструкций для реально существующего вычислительного устройства — компьютера (Fortran, Basic, Pascal, C++ и т.п.), а термин алгоритмический язык употребляется в более широком смысле и включает в себя как языки программирования, так и другие языки инструкций, в частности псевдоязыки, предназначенные для описания алгоритмов. Смещение нашего внимания с логических языков на языки инструкций обусловлено желанием дать ответы на те вопросы, которые остались открытыми в нашем исследовании возможностей логических языков, а именно, на вопросы о том, каким образом проверять истинность различного рода семантических утверждений о формулах языков логики предикатов (например, как проверить, является ли заданная формула языка логики первого или второго порядка тавтологией). Мы уже отметили, что непосредственная проверка семантических свойств формул логических языков при помощи определений практически никогда не представляется возможной, и поэтому специально рассмотрели механизмы, предназначенные для конструктивной проверки семантических свойств (формальные системы). Мы также доказали, что среди таких механизмов есть “хорошие”, то есть одновременно корректные и полные, по крайней мере, для языков логики первого порядка. Пользуясь такой формальной системой, можно заменить проверку того, является ли данная формула тавтологией, на поиск вывода данной формулы при помощи формальной системы из пустого множества посылок (иначе говоря, поиску доказательства данной формулы из пустого множества посылок). Однако остается неясным, каким образом искать такой вывод. Можно ли, например, предъявить конкретный алгоритм вывода всех тавтологий? Интере-
85 сен и другой вопрос: можно ли предъявить такой алгоритм, который по заданной формуле логического языка даст однозначный ответ, выводима ли данная формула из пустого множества посылок, то есть, является ли тавтологией, или нет? Мы пока подобного рода вопросами не интересовались. Кстати, на практике многие люди и не интересуются ими. Например, математики ищут доказательства математических утверждений, как правило, не задумываясь о том, можно ли предъявить универсальный алгоритм их поиска. Подобного рода вопросы можно, конечно, задавать не только о логических языках. Например, игроков в шахматы, возможно, интересует вопрос о том, может ли партия в шахматы всегда быть выиграна белыми (естественно, при соблюдении правил игры). Ответ в данном случае положительный: описание алгоритма решения этой задачи можно найти у Дональда Э. Кнута 16 (“Искусство программирования”, том 1, стр. 314). Правда, проблема в том, что для выполнения этого алгоритма требуется невероятно большое время даже при использовании самых современных и быстродействующих вычислительных устройств, причем нет никакой надежды, что в обозримом будущем появятся компьютеры, способные реализовать этот алгоритм за приемлемое время.17 16 Дональда Э. Кнута (Donald E. Knuth) (род. 1938) — автор классической монографии “Искусство программирования”, ставшее со времени написания первого тома “библией” разработчиков программного обеспечения; автор высокоуровневой системы подготовки текстов TEX, при помощи которой, кстати, написана и эта книга, а также практичеки вся современная математическая литература. 17 Вот что пишет по поводу этого алгоритма Д.Э.Кнут: “Приведенная ниже конструкция демонстрирует способ “решения” достаточно общей задачи — игры для двух лиц, например шахматы, ним или другие более простые игры. Рассмотрим конечное множество узлов, каждый из которых представляет собой возможное состояние игры. Существует несколько шагов (или ни одного), которые позволяют преобразовать каждое состояние в некоторое другое. Назовем состояние x предшественником состояния y (а y — наследником состояния x), если существует такой шаг, который переводит состояние x в состояние y. Состояния без наследников называются проигрышем или выигрышем. Игрок, делающий ход с переходом в состояние х, является соперником игрока, который делает ход с переходом от состояния x к состояниям-наследникам. Имея такую конфигурацию состояний, полный набор выигрышных состояний (в которых может выиграть игрок, делающий следующий ход) и полный набор проигрышных состояний (в которых обязательно проигрывает игрок, делающий следующий ход) можно вычислить, повторяя следующую операцию до тех пор, пока не будет достигнуто неизменное состояние. Обозначим состояние “проигрышным”, если все состояния-наследники являются “выигрышными”, и обозначим состояние “выигрышным”, если хотя бы одно состояние-наследник является “проигрышным”. После бесконечного повторения этой операции некоторые состояния могут быть никак не обозначены. Это значит, что игрок, делающий следующий ход из такого состояния, не может выиграть, но его нельзя победить. Такая процедура вычисления полного набора выигрышных и проигрышных состояний может быть сформулирована для компьютера в виде алгоритма. . . Для этого можно сохранять для каждого состояния количество его состоянийнаследников, которые не отмечены как “выигрышные”, а также список всех его предшествен-
86
Основы теории алгоритмов
В этом разделе мы покажем, что использование языков инструкций помогает ответить на ряд вопросов о логических языках, подобных только что рассмотренным. В качестве побочного эффекта исследования мы сможем доказать и целый ряд нетривиальных и практически важных утверждений о языках инструкций, в частности, о невозможности решения некоторых важных алгоритмических задач. Привыкший к математической строгости изложения читатель наверняка уже обратил внимание на то, что мы неоднократно и весьма вольно пользовались понятием алгоритма, не давая его строго определения. Дело в том, что нам бы не хотелось посвящать слишком много времени формализации этого понятия. Во-первых, потому, что читатель, как мы надеемся, обладает хотя бы элементарными основами алгоритмической культуры, под которой понимается не обязательно умение писать программы для компьютера, но хотя бы умение записать кулинарный рецепт так, чтобы его могла применить любая домохозяйка: написание такого рецепта в математических терминах как раз и есть составление алгоритма приготовления блюда. Во-вторых, вопросу о том, что такое алгоритм посвящены многочисленные пухлые тома специальной литературы, чтение которых, как показывает практика, ни в коей мере не способствуют практической работе с алгоритмами: так, чтобы грамотно записать рецепт приготовления котлет, не нужно знать формального определения алгоритма. Так что для наших целей достаточно будет лишь общего понимания алгоритма, как эффективного описания некоторых действий. Данный термин был впервые введен в 1936 году А. Черчем18 , который предложил считать действие M эффективным (или эффективно описанным), если (E1) M описано конечным числом точных инструкций, каждая из которых выражена конечным числом символов; (E2) в случае, когда M проводится правильно, оно обязательно дает желаемый результат за конечное время (конечное число шагов); (E3) M может быть в принципе проведено человеком вооруженным “пером и бумагой”; (E4) проведение M не требует “ни проницательности, ни изобретательности” от исполнителя. ников.” Подобный подход можно применить и для построения выигрыша в позиционных играх, относящихся к так называемому классу играх на ацикличных графах (к этому классу игр и относяться все упоминаемые в процитированном отрывке из книги Д.Э.Кнута игры, в том числе и шахматы). 18 Алонзо Черч (Alonzo Church) (1903–1995) — американский логик и математик, профессор Принстонского и Калифорнийского университетов. Внес большой вклад в развитие математической логики и теории автоматов.
87 “Человек, вооруженный карандашом, бумагой и системой знаний о предмете представляет собой пример эффективного вычислителя” (А. Тьюринг19 , 1948). Под алгоритмом мы будем понимать эффективное описание действия, при этом позволяя себе достаточно вольно обращаться с терминами алгоритм, программа, эффективное описание, употребляя их почти как синонимы. Единственное отличие, на которое стоит обратить внимание, состоит в том, что программа в нашем понимании может выполняться “бесконечное” время (например, программа, печатающая в бесконечном цикле одно и то же слово). Термин “бесконечное” не зря взят в кавычки, ведь бесконечное время является абстракцией, которую в реальной жизни никто не видел. Опять-таки, любители математического формализма могут считать бесконечно выполняющуюся программу набором бесконечного числа конечных алгоритмов. Предоставляем желающим возможность самим сформулировать соответствующие “строгое” определение, если они видят в этом необходимость. Примером алгоритма из школьной арифметики явлется алгоритм Евклида проверки того, является ли заданное число простым. Рецепт из поваренной книги может тоже, хотя и с некоторыми оговорками, рассматриваться как алгоритм. Рецепт всегда конечен (иначе исполнитель умрет с голода), но вот инструкции в рецепте не всегда точны (вряд ли кто-то станет утверждать, что предписания “возьмите небольшую кастрюлю”, “добавьте сахар по вкусу” и подобные им могут считаться действительно точными), поэтому и желаемый результат (вкусная пища) не всегда достигается. На самом деле для достижения результата как раз требуется “изобретательность и проницательность” исполнителя (в данном случае мастерство повара), что противоречит понятию эффективного действия. Тем не менее, если пренебречь некоторой неточностью, можно считать рецепт примером алгоритма. Нас будут в дальнейшем интересовать два типа алгоритмов: алгоритмы распознавания и алгоритмы вычисления. Начнем с алгоритмов распознавания. Рассмотрим алфавит A. Предположим, задано по некоторым правилам множество L ⊂ A∗ . Нас интересует следующий вопрос: можно ли предъявить такой алгоритм, который будет распознавать элементы множества L? Иными словами, можно ли написать такую программу, которая при подаче на вход слова из A∗ через конечное время (т.е. за конечное число шагов) выдавала бы ответ, принадлежит ли данное слово множеству L или нет. Введем следующее определение. Определение 10.1 Множество L ⊂ A∗ называется разрешимым, если суще19
Алан Тьюринг (Alan Turing) (1912–1954) — английский математик. Внес большой вклад в математическую логику и вычислительную математику. Ввёл математическое понятие уточнённого абстрактного эквивалента алгоритма, или вычислимой функции (получившее впоследствии название машина Тьюринга). В последние годы жизни работал над математическими проблемами биологии.
88
Основы теории алгоритмов
ствует такой алгоритм (программа), при подаче на вход которого произвольного слова из A∗ за конечное число шагов алгоритм завершается выдачей ответа, принадлежит ли данное слово множеству L или нет. Соответствующий алгоритм (программа) называется разрешающим (разрешающей) для данного множества. Нас будет интересовать и другой вопрос: можно ли написать программу, которая генерировала бы на выходе все элементы данного множества, и только элементы этого множества (естественно, эта программа должна выполняться бесконечно, если множество L бесконечно). Введем соответствующее определение. Определение 10.2 Множество L ⊂ A∗ называется перечислимым, если существует такая программа, которая выводит на выход все слова множества L, и только их, то есть в результате работы программы на выходе рано или поздно появится каждое слово из L, и никаких других слов не появится. Соответствующая программа называется перечисляющей программой. Подчеркнем, что перечисляющая программа может печатать элементы множества L в любом порядке и с любым количеством повторений. Определение 10.2 формулирует лишь два требования: • любое слово из L рано или поздно будет выведено; • никаких слов из A∗ \ L выведено не будет. Прежде чем перейти к свойствам разрешимых и перечислимых множеств, приведем некоторые простейшие примеры. Во-первых, если множество L состоит из конечного числа элементов, то оно очевидно разрешимо и перечислимо. Вот чуть менее тривиальный пример. Пример 10.1 Пусть A — латинский алфавит, а L ⊂ A∗ — множество палиндромов (слов, которые одинаково читаются в обе стороны) 20 . Это множество перечислимо: мы можем написать программу, генерирующую последовательно палиндром за палиндромом. Она никогда не остановится, но каждый палиндром рано или поздно появиться на выходе программы. Пример такой программы написанной на псевдокоде, а не конкретом языке программирования приведен ниже. Заметим, что он реализует не самый эффективный способ генерировать палиндромы, а именно, наш алгоритм сначала генерирует все палиндромы нулевой длины, потом длины 1, потом длины 2, потом длины 3 и т.д. Мы сделали так специально, чтобы было очевидно, что таким образом будут напечатаны все палиндромы. 20
Для любопытных: на http://www.palindromelist.com можно найти палиндром, длиной почти 25000 символов (правда, в данном палиндроме не учитываются пробелы и знаки препинания).
89
alphabetic_letters = {set_of_english_letters}; function generate(string old, long length) { if (length(old) < length) then foreach (alphabetic_letters as letter) do generate(letter + old + letter, length); else if (old.length() == length) then print(old); else foreach (alphabetic_letters as letter) do print(letter + old + letter); } length = 0; while (true) do if (length mod 2 == 1) then foreach (alphabetic_letters as letter) do generate(letter, length); else generate("", length); Более того, множество палиндромов L является разрешимым, потому что можно написать программу, которая брала бы на вход любую строчку из A∗ и указывала бы, палиндром это или нет, за конечное время. Предлагаем читателю написать такую программу на любом доступном ему языке программирования. Упражнение 10.1 Пусть A := {0, 1, . . . , 9} — множество десятичных цифр. При этом множество A∗ будем отождествлять с множеством натуральных чисел. Пусть L — множество тех слов из A∗ , которые соответствуют простым числам. Является ли это множество разрешимиым? перечислимым? Возникает вопрос, в каком соотношении находятся перечислимые множества и разрешимые множества. Ответ на него дает следующее предложение. Предложение 10.1 Всякое разрешимое множество перечислимо. Для доказательства нам потребуется определение лексикографического порядка в A∗ . Определение 10.3 Порядок (A∗ , <) назыается лексикографическим, если p < q, когда либо длина слова p ∈ A∗ меньше длины слова q ∈ A∗ , либо, при равной длине слов p и q, слово p предшествует q в алфавитном порядке.
90
Основы теории алгоритмов
Теперь можно доказать предложение 10.1 Доказательство: Следующий алгоритм перечисляет элементы разрешимого множества L ⊂ A∗ : в цикле генерируем в лексикографическом порядке строчки из A∗ (сначала в алфавитном порядке слова длины 1, потом в алфавитном порядке слова длины 2 и т.д.), и подаем каждое сгенерированное слово на вход разрешающей программе. Последняя за конечное число шагов завершится, выдав ответ, либо о том, что данное слово принадлежит L, либо, что оно не принадлежит L. В первом случае выдаем сгенерированное слово на выход, во втором случае игнорируем его и переходим к генерации следующего слова из A∗ . Справедливы следующие простые утверждения. Предложение 10.2 Если разрешимо множество L ⊂ A∗ , то разрешимо, а значит и перечислимо, его дополнение A∗ \ L. Доказательство: Если поменять в разрешающем алгоритме для множества L выдачу ответа “слово принадлежит L” на “слово не принадлежит A∗ \ L” и наоборот, то получится разрешающий алгоритм для A∗ \ L. Предложение 10.3 Множество L ⊂ A∗ разрешимо, если и только если перечислимы одновременно оно само и и его дополнение A∗ \ L. Доказательство: Из предложений 10.1 и 10.2 следует, что разрешимость множества L влечет перечислимость его самого и его дополнения A∗ \ L. Предположим теперь, что L и A∗ \L перечислимы, и докажем, что в этом случае L должно быть разрешимым. Разрешающий алгоритм для L следующий: после ввода слова из A∗ запускаются параллельно перечисляющие программы для L и для A∗ \ L. Рано или поздно принятое на вход слово появится на выходе либо первой, либо второй программы в силу определения перечислимости множества. В первом случае следует выдать ответ о принадлежности проверяемого слова множеству L, во втором — о непринадлежности, после чего следует завершить работу программы. “Параллельность” запуска сразу двух перечисляющих программ достигается чередованием передачи управления на каждую из этих программ, скажем, через регулярные промежутки времени. Иначе говоря, сначала запускается первая программа, через определенный интервал времени она приостанавливается и управление передается второй программе, а затем через регулярные интервалы времени эти программы “меняются местами” (работавшая программа приостанавливается, а управление передается на ранее приостановленную программу). Теперь мы можем дать ответ на гораздо менее тривиальный вопрос о том, существуют ли множества, которые не являются не только разрешимыми, но даже и перечислимыми. Интуитиция возможно подсказывает, что таких множеств
91 нет, ибо в повседневной жизни мы имеем дело либо с конечными множествами, либо с множествами, построенными каким-либо эффективным способом. Однако в данном случае доверять интуиции нельзя, в силу следующего утверждения. Предложение 10.4 Существуют неперечислимые множества. Доказательство: Рассмотрим произвольный конечный алфавит A. Очевидно, что мощность множества перечислимых подмножеств A∗ не превышает мощности множества всех перечисляющих программ. Последние же имеют мощность, не превышающую мощность всех вообще программ, работающих над алфавитом A. Так как все такие программы записываются в виде конечных текстов на некотором языке с конечным алфавитом, то множество всех таких программ не более чем счетно. Следовательно, не более чем счетно и множество всех перечислимых подмножеств A∗ . С другой стороны, множество A∗ счетно, а значит, множество всех подмножеств A∗ более чем счетно. Таким образом, среди подмножеств A∗ найдутся и неперичислимые. Нам понадобятся в дальнейшем также понятия вычислимых и полувычислимых функций. Сформулируем соответствующее определение. Определение 10.4 Пусть A — заданный алфавит. Функция f : Domf ⊂ A∗ → A∗ , где A — заданный алфавит, называется вычислимой, если существует программа, которая при подаче на вход слова a ∈ A∗ , за конечное время (за конечное число шагов) выдаст f (a), если a ∈ Domf , либо, в противном случае, заранее оговоренный признак того, что a ∈ / Domf . Соответствующая программа называется вычисляющей. Обычно приходится иметь дело с функциями, не принимающими значение (пустое слово), так что в этом случае разумно резервировать в качестве признака того, что a ∈ / Domf . В дальнейшем мы будем всегда считать, что имеем дело именно с такой ситуацией. Фунция f : Domf ⊂ A∗ → A∗ называется полувычислимой, если существует программа, которая при подаче на вход слова Domf , за конечное время (за конечное число шагов) выдаст f (a). Соответствующая программа называется полувычисляющей. Работа полувычисляющей программы при подаче на вход слова из A∗ \ Domf не определена (в этом случае программа может даже работать бесконечно). Очевидно, что всякая вычислимая функция является и полувычислимой, так как всякая вычисляющая программа является одновременно полувычисляющей. Также очевидно, что полувычислимая всюду определенная функция (т.е. Domf = A∗ ) является вычислимой. Более точно связь между вычислимостью и полувычислимостью характеризуется следующим утверждением.
92
Тезис Черча. Регистровые машины
Предложение 10.5 Функция f : Domf ⊂ A∗ → A∗ , где A — заданный алфавит, вычислима, если и только если полувычислимы одновременно f и характеристическая функция множества Domf (последняя определяется как функция, принимающая значение на A∗ \ Domf и любое наперед заданное непустое значение из A∗ на Domf ). Доказательство: Если характеристическая функция множества Domf полувычислима, то она и вычислима, так как она определена всюду на A∗ , при этом соответствующая полувычисляющая программа является очевидно и вычисляющей. Если к тому же f полувычислима, то вычисляющую программу для f можно построить следующим образом: при подаче на вход слова a ∈ A∗ сначала запускается вычисляющая программа для характеристической функции множества Domf ; если последняя завершается выдачей ответа о том, что a ∈ Domf , то запускается полувычисляющуая программа для функции f , в противном случае выводится (заранее заданный символ). Теперь по аналогии с вопросом о существовании неперечислимых множеств можно задаться вопросом о существовании функций, не являющихся полувычислимыми (такие функции принято называть абсолютно невычислимыми). Ответ на него дает следующее утверждение. Предложение 10.6 Существуют абсолютно невычислимые функции. Доказательство: Полная аналогия с доказательством предложения 10.4. Упражняйтесь.
11
Тезис Черча. Регистровые машины
В этой главе мы рассмотрим конкретизацию понятия эффективного исполнителя, с которой в дальнейшем будем иметь дело. Подходящих конкретизаций, соответствующих общему интуитивному понятию об эффективном исполнителе и об эффективном действии, описанному в предыдущей главе, существует много. Среди наиболее популярных стоит упомянуть машину Тьюринга предложенную Тьюрингом в 1937 году, рекурсивные и частично рекурсивные функции Черча, алгорифмы Маркова, машину Поста и регистровые машины. Мы будем пользоваться регистровыми машинами. Введем соответсвующие определения. Определение 11.1 Будем называть регистровой машиной M набор следующих объектов: 1 Внешнего алфавита A, состоящего из конечного числа символов;
93 2 Конечного множества регистров R0 , . . . , Rm , каждый из которых представляет собой “ячейку памяти” для хранения произвольного слова из A∗ ; Регистр R0 называется регистром ввода-вывода машины M. Регистровую машину M c внешним алфавитом A и набором регистров R0 , . . . Rm будем обозначать M(A, m). Определение 11.2 Программой P для регистровой машины M(A, m) будем называть конечный набор слов (называемых инструкциями), удовлетворяющих следующим правилам: • каждая инструкция имеет вид α <оператор>, где α ∈ N — последовательный номер инструкции в программе, называемый меткой (первая инструкция имеет номер 0), а <оператор> — одно из выражений следующего вида: (добавить) LET Ri = Ri + a, где i = 0, . . . , m, a ∈ A; (удалить) LET Ri = Ri − a, где i = 0, . . . , m, a ∈ A; (переход) IF Ri = T HEN α0 ELSE α0 OR α1 OR . . . αn , где α0 , α0 , . . . , αn ∈ N — метки каких-либо инструкций программы, i = 0, . . . , m, a ∈ A, n+1 — число символов в алфавите A; (печать) P RINT ; (останов) HALT ; • Инструкция вида (останов) является последней в программе, и других инструкций этого вида в программе нет. Определение 11.3 Выполнение программы P регистровой машиной M(A, m) определим следующим образом. Будем говорить, что • при выполнении инструкции вида α LET Ri = Ri + a машина M дописывает в слово, содержащееся в регистре Ri символ a ∈ A справа и передает управление на следующую по порядку (по возрастанию меток) инструкцию; • при выполнении инструкции вида α LET Ri = Ri − a
94
Тезис Черча. Регистровые машины машина M стирает из содержимого регистра Ri символ a ∈ A, если содержащееся в регистре слово заканчивается на символ a, в противном случае содержимое регистров не изменяется. Затем машина передает управление на следующую по порядку инструкцию; • при выполнении инструкции вида α IF Ri = T HEN α0 ELSE α0 OR α1 OR α2 . . . OR αn управление передается на инструкцию с меткой α0 , если содержимое регистра Ri , пусто, либо на инструкцию с меткой αj , если содержимое регистра Ri заканчивается на символ aj ∈ A, j = 0, . . . , n; • при выполнении инструкции вида α P RINT программа выводит на печатающее устройство содержимое регистра вводавывода R0 и передает управление на следующую по порядку инструкцию. Причем мы можем проверить было ли за время работы программы хотя бы однажды задействовано печатающее устройство; • при выполнении инструкции вида α HALT программа завершает работу.
Определение 11.4 Будем говорить, что программа P для регистровой машины M(A, m), при подаче на вход слова ξ ∈ A∗ , рано или поздно останавливается (в этом случае будем писать P : ξ → HALT ), если при наличие ξ в регистре ввода-вывода R0 и при пустом содержимом всех остальных регистров, при передаче управления на первую инструкцию программы, рано или поздно программа завершит работу, после передачи управления на инструкцию (останов). В противном случае будем писать P : ξ → ∞ и говорить, что программа P при подаче на вход слова ξ зацикливается. Если P : ξ → HALT , причем к моменту останова программы P , начавшей исполнение со словом ξ в регистре ввода-вывода R0 и c пустым содержимым всех остальных регистрах, на выходном устройтстве выведено слово η ∈ A∗ , то будем говорить, что программа P при подаче на вход слова ξ выдает на выходе слово η и писать P : ξ → η.
95 Следует отметить, что рассматриваемый нами эффективный вычислитель — регистровая машина — является идеальным вычислительным устройством, отличным от реальных вычислительных устройств — компьютеров. Идеальность рассматриваемого нами вычислителя заключается в следующем: • во-первых, мы предполагаем, что каждый регистр может вместить в себя сколь угодно большой конечный объем информации. Регистры удобно представлять себе в виде бесконечных лент, на которых записываются слова. • во-вторых, мы не ставим ограничений на длину программы. Реальные компьютеры имеют все же ограниченный объем памяти и в состоянии поэтому работать с программами только конечной, хотя, возможно, и очень большой длины (например, максимальная длина программы, размещаемой в 256Mb оперативной памяти соответствует примерно 87000 страниц текста в формате А4, напечатанного машинописным шрифтом в кодировке ASCII или, порядка 870 километров текста, напечатанного в строчку). Приведем простой пример программы для регистровой машины. Пример 11.1 Пусть A := {|}. Слова из A∗ можно очевидным образом отождествить с натуральными числами: пустое слово отождествляется с нулем, слово | с 1, || с 2, и т.д. Следующая программа для машины M(A, 0) вычисляет остаток от деления поданного на вход числа на 2 (если на входе четное число, то на выходе появится , а если нечетное то |). 1 LET R0 = R0 − | 2 IF R0 = T HEN 5 ELSE 3 3 LET R0 = R0 − | 4 IF R0 = T HEN 6 ELSE 1 5 LET R0 = R0 + | 6 P RINT R0 7 HALT Теперь мы дадим строгое определение разрешимых и перечислимых множеств с учетом выбранной конкретизации понятия эффективного вычислителя. Определение 11.5 Пусть A — заданный алфавит. Множество L ⊂ A∗ называется • регистрово разрешимым, если существует такая регистровая машина M(A, m) и программа P для нее (называемая разрешающей программой) такая, что если на вход программе P подать произвольное слово ξ ∈ A∗ , то программма завершится за конечное число шагов и выдаст , если ξ ∈ L, либо некоторое заранее определенное непустое слово, если ξ ∈ / L.
96
Тезис Черча. Регистровые машины • регистрово перечислимым, если существует такая регистровая машина M(A, m) и программа P для нее (называемая перечисляющей программой), которая, будучи запущенной с пустым словом во всех регистрах, будет выдавать на выходное устройство слова из L в произвольном порядке и с произвольным количеством повторений, но так, что каждое слово из L рано или поздно появится на выходном устройстве и никаких других слов там не появится.
Аналогичным образом мы можем конкретизировать понятие полувычислимых и вычислимых функций. Здесь и далее мы будем для простоты рассматривать только функции принимающие непустые значения (очевидно, что это не ограничивает общности рассуждений). Определение 11.6 Функция f : Domf ⊂ A∗ → A∗ , где A — заданный алфавит, не принимающая пустого значения , называется • регистрово вычислимой, если существует такая регистровая машина M(A, m) и программа P для нее, которая, при подаче на вход слова a ∈ A∗ , напечатает f (a), если a ∈ Domf , либо , если a ∈ / Domf ; • полувычислимой, если существует такая регистровая машина M(A, m) и программа P для нее, которая, при подаче на вход слова a ∈ Domf , напечатает f (a). С учетом приведенных выше определений 11.5 и 11.6, становятся более осмысленными (точнее, более соответствующими современным требованиям к строгости математических рассуждений) и все утверждения главы 10. А именно, эти утвержения и их доказательства очевидно справедливы без каких-либо изменений с точностью до замены слов “разрешимые (перечислимые) множества” и “вычислимые (полувычислимые) функции” на “регистрово разрешимые (перечислимые) множества” и “регистрово вычислимые (полувычислимые) функции” соответственно. Строго говоря, при проверке разрешимости и перечислимости множеств (вычислимости или полувычислимости функций) необходимо установить наличие соответствующей программы для выбранной конкретизации эффективного вычислителя. В нашем случае таковой является регистровая машина. Однако на практике, реализовать даже сравнительно простые алгоритмы (например, такие как написанный на псевдокоде в примере 10.1, перечисляющий множество палиндромов) при помощи регистровой машины весьма непросто (хотя и возможно). Как правило, поэтому, для установления разрешимости (перечислимости) множества считается достаточным предъявить соответствующий алгоритм, который
97 в принципе может быть реализован любым эффективным вычислителем, в соответствии с требованиями (E1) – (E4) из главы 10. Такой подход можно считать основанным на использовании следующего утверждения экспериментального характера: Тезис 11.1 (Черча) Любой алгоритм для эффективного исполнителя может быть реализован при помощи программы для регистровой машины, или для любой другой заранее выбранной конкретизации эффективного исполнителя (например, машины Тьюринга, машины Поста и т.п.) Следует подчеркнуть, что тезис Черча является утверждением чисто экспериментального характера. Он в принципе не может быть доказан, поскольку связывает формализованные понятия (связанные с конкретной версией эффективного исполнителя) с неформализованным понятиям алгоритма для произвольного эффективного исполнителя. Справедливость этого тезиса следует исключительно из значительного опыта работы с различными реализациями эффективных исполнителей, как идеальными (регистровые машины), так и реальными (компьютеры). Такой опыт показывает, что каким бы образом ни был описан алгоритм (в виде блок-схемы, псевдокода, программы для конкретного идеального или реального вычислительного устройства), его всегда можно реализовать и для любого наперед заданного исполнителя. Так, алгоритм, представленный в виде блоксхемы, можно реализовать на любом из современных языков программирования, либо на ассемблере конкретного вычислительного устройства (если, конечно, пренебречь тем, что для реализации некоторых алгоритмов могут потребоваться значительно большие ресурсы оперативной памяти, чем те, которые доступны в конкретных компьютерах). Также и для любых двух выбранных идеальных вычислительных устройств (например, машины Тьюринга и регистровой машины) можно написать алгоритм, преобразующий (“транслирующий”) программы, написанные для одного из этих устройств, в программы, которые могут исполняться на другом. Стоит отметить, что последнее утверждение для каждой конкретной пары идеальных эффективных исполнителей является уже теоремой, которая может быть доказана. Многочисленные теоремы такого рода, являющиеся таким образом одним из сильных аргументов в пользу справедливости тезиса Черча, для конкретных пар исполнителей были доказаны в 30-е годы XX века создателями современной теории алгоритмов, в том числе Тьюрингом, Черчем, Клини21 . 21
Стивен Клини (Stephen Kleene) (1909–1994) — американский логик и математик. Основные труды по теории алгоритмов и рекурсивных функций, а также проблемам интуиционистской логики и математики. Ввёл понятие рекурсивной реализуемости формул. Известна классификация Клини—Мостовского для теоретико-числовых предикатов (1943).
98
Некоторые алгоритмические массовые проблемы
Как и принято в современной теории алгоритмов, впредь мы будем весьма вольно испольовать тезис Черча. В частности, мы будем считать что • Всякое разрешимое (перечислимое) множество является регистрово разрешимым (перечислимым); • всякая вычислимая (полувычислимая) функция является регистрово вычислимой (полувычислимой). Использование этого тезиса позволяет избавиться от лишних хлопот, связанных с необходимостью предъявления программы для регистровой машины в случае, когда имеется лишь описание алгоритма с достаточной степенью подробности, скажем словесное, или в виде псевдокода, или в виде блок-схемы.
12 12.1
Некоторые алгоритмические массовые проблемы Проблема самоприменимости
Зададимся следующим вопросом: является ли разрешимым множество всех самоприменимых регистровых программ, то есть программ, корректно работающих с собственным текстом. Программу будем считать корректно работающей с собственным текстом, если при ее запуске с этим текстом на входе рано или поздно произойдет останов. Иначе говоря, вопрос можно поставить так: существует ли универсальный алгоритм, который по тексту программы за конечное время узнает, корректно ли программа работает с собственным текстом или нет. Эта проблема является типичным примером массовых алгоритмических проблем. А именно, проблема существования алгоритма, распознающего определенные свойства программ называется массовой, если требуется установить существование такого алгоритма, подходящего для всех программ или хотя бы для программ из достаточно широкого класса. Для более строгой формулировки поставленного вопроса необходимо сначала разобраться с тем, как понимать “работу программы с собственным текстом”. Здесь и далее мы будем работать с программами для регистровых машин с самым простым внешним алфавитом A = {|}. Очевидно, что тексты программ не представляют собою слова над этим алфавитом. Однако это затруднение легко обойти. Действительно, слова из A∗ можно очевидным образом отождествить с числами ( с числом 0, | с числом 1, || с числом 2 и т.д.). С другой стороны, легко предъявить алгоритм, который каждой программе (для регистровой машины с внешним алфавитом A), написанной символами из набора ASCII ставит в соответствие единственное натуральное число, которое будем называть номером
12.1 Проблема самоприменимости
99
Геделя этой программы, а также алгоритм, который по номеру Геделя восстанавливает текст программы. Таких способов эффективной нумерации программ можно предъявить очень много. Вот самый простой, хотя и не самый удобный, способ: регистровые программы представляются словами над алфавитом B := A ∪ {A, . . . Z, 0 . . . 1, =, −, +, , ; } , в котором символ ; используется в качестве символа разделения операторов. При этом номер Геделя программы — это номер в лексикографическом порядке слова из B∗ , представляющего эту программу. Естественно, не всем натуральным числам соответствуют программы. Например, никакой программы не соответствует числу 1. Однако в любом случае легко предложить алгоритм, который по тексту программы вычисляет таким образом определенный ее номер Геделя, а также алгоритм, который по заданному на входе числу определяет соотвествующее ему в лексикографическом порядке слово из B∗ , а затем проверяет, является ли оно программой для регистровой машины или нет. Таким образом поставили в соответствие эффективным (то есть алгоритмическим) способом каждой программе P некoторое уникальное число — ее номер Геделя xP , или, что то же самое, соотвествующее ему слово из A∗ , причем так, что существует и эффективный способ решения обратной задачи — восстановления по номеру Геделя x, представленному, например, словом из A∗ , текста соответствующей этому номеру программы Px . Очевидно, что в наших обозначениях PxP = P для любой регистровой программы P . С учетом указанной эффективной нумерации программ поставленный в начале этого параграфа вопрос можно сформулировать так: является ли разрешимым множество Πself номеров Геделя программ, корректно работающих с собственным номером Геделя? Ответ на этот вопрос дает следующее утверждение. Теорема 12.1 Множество Πself номеров Геделя программ, корректно работающих с собственным кодом, неразрешимо. Доказательство: Предположим обратное, то есть существование программы P0 , разрешающей множество Πself . Иначе говоря, P0 : xP → , если xP ∈ Πself и P0 : ξ → η 6= , во всех остальных случаях, где η — заранее выбранное слово, указывающее на то, что анализируемая программа P не является самоприменимой. Модифицируем эту программу следующим образом: заменим оператор k HALT на пару операторов k IF R0 = T HEN k ELSE k + 1 (k + 1) HALT
100
Некоторые алгоритмические массовые проблемы
а все операторы вида α P RINT на оператор α IF R0 = THEN k ELSE k OR k . . . OR k. Полученную в результате такой модификации программу назавем P1 . Если на вход программе P1 подать номер Геделя произвольной программы S, такой что xS ∈ Πself , то рано или поздно управление будет передано на метку k, причем в регистре ввода-вывода R0 будет находиться пустое слово (иначе программа P0 при подаче на вход xS печатала бы некоторое непустое слово). Таким образом, выполнение инструкции с меткой k приведет к зацикливанию программы P1 . Если же на вход P1 подается слово ξ 6∈ Πself , то рано или поздно оператор с меткой k будет достигнут с непутым содержимым регистра ввода-вывода R0 (т.к. в этом случае программа P0 должна печатать некоторое непустое слово). В этом случае, таким образом, управление в дальнейшем будет передано на метку k + 1, что приведет к останову программы P1 . Рассмотрим теперь работу программы P1 при подаче ей на вход ее же собственного номера Геделя xP1 . Как мы установили, если xP1 6∈ Πself , то P1 : xP1 → halt, т.е. P1 самоприменима (иными словами, xP1 ∈ Πself ). В противном случае, если xP1 ∈ Πself , то P1 : xP1 → ∞, т.е. P1 несамоприменима, иными словами, xP1 6∈ Πself . Полученное противоречие завершает доказательство. Отрицательный ответ на поставленный вопрос означает неразрешимость массовой проблемы, что не значит, что для некоторого, быть может, очень узкого класса програм нельзя построить проверяющий алгоритм.
12.2
Проблема останова
Рассмотрим программу, вычисляющую значение некоторой заранее заданной числовой функции. Правильность такой программы обычно проверяется путем тестирования, то есть проверки программы на конечном (пусть и большом) множестве входных данных. Множество же всех возможных входных данных может оказаться бесконечным. Естественно задаться следующим вопросом: можно ли гарантировать, что данная программа при всех входных данных выдает правильные ответы? Конечно, этого невозможно достичь путем тестирования, в связи с чем появляеться искушение попробовать проводить такую проверку при помощи анализа кода проверяемой программы. Такую формальную проверку обычно называют верификацией, а алгоритм (программу), позволяющую анализировать (верифицировать) тексты программ на соответствие заданному критерию, называют алгоритмом верификации (программой верификатором). В этом параграфе мы еще упростим нашу задачу, а именно, будем интересоваться тем, как проверить гораздо более простое свойство программ — незацикливаться (т.е. “корректно работать”) на заданных входных данных. Не ограничивая общности, мы будем интересоваться случаем когда заданные входные данные представляют собой пустое слово. Обозначим Πhalt := {ξp : P : → HALT}. В
12.2 Проблема останова
101
этих обозначениях интересующий нас вопрос формулируется следующим образом: является ли множество Πhalt разрешимым? Важность этого вопроса состоит в том, что если ответ на него положителен (и если реализующая найденный алгоритм программа работает обозримое время), то проверка программы на правильность работы при некоторых входных данных сводится к запуску универсальной проверяющей программы — верификатора. К сожалению, ответ на этот вопрос отрицательный, иначе говоря, такой универсальный (т.е. применимый ко всем программам) проверяющий алгоритм построить нельзя. Стоит подчеркнуть, что это не означает невозможности решения более узкой задачи, а именно, задачи проверки корректности работы программ с заданными входными данными среди какого-либо специального достаточно узкого класса программ. Иными словами, можно утверждать лишь неразрешимость массовой проблемы такого рода. Верификация же отдельных свойств программ, принадлежащих заранее определенным и достаточно узким классам, может быть принципиально разрешимой, хотя и достаточно сложной задачей. В задачах, где цена ошибки чрезвычайно высока (например, создание программного обеспечения для управления ядерным реактором или космическим аппаратом, или медицинской установки повышенной опасности) можно пытаться провести формальную верификацию соответствия отдельных, наиболее ответственных, прогрмамных модулей заранее сформулированным требованиям, т.е. строгое доказательство такого соответствия путем анализа кода. В дальнейшем нами будет рассмотрен один из формальных языков (HOL), который может применяться, в частности, для верификации протоколов общения между различными компонентами программного опеспечения, а также для других частных задач верификации. Нами также будет рассмотрен формальный язык Z, который с известными ограничениями может применяться для описания формальных требований, предъявляемых к проектируемому программному обеспечению, а также для верификации (строгому доказательству) их корретности. Перейдем теперь к доказательству теоремы о неразрешимости множества программ корректно работующих с заданными начальными данными. Теорема 12.2 Множество Πhalt номеров Геделя программ, корректно работающих с пустым входным словом, неразрешимо. Доказательство: Предположим обратное, то есть существование программы P0 , разрешающей множество Πhalt . Иначе говоря, P0 : xP → , если xP ∈ Πhalt и P0 : ξ → η 6= , во всех остальных случаях, где η — заранее выбранное слово, указывающее на то, что анализируемая программа P не является корректно работующей с пустым начальным словом. Мы придем к противоречию, получив с ее помощью разрешающую программу для Πself (напомним, что множество Πself не являеться разрешимым). С этой целью мы научимся строить по тексту любой
102
Некоторые алгоритмические массовые проблемы
программы P новую программу P 0 , такую что, xP 0 ∈ Πhalt тогда и только тогда, когда xP ∈ Πself . Поскольку соответствие между текстом программы P и текстом программы P 0 мы задаем при помощи алгоритма, то эта конструкция позволяет построить разрешающую программу для множества Πself . Действительно, такая программа, принимая на вход слово ξ ∈ A∗ , должна сначала определить, являеться ли это слово номером Геделя какой-то программы P (в противном случае остановиться, выдав ответ о непринадлежности слова ξ множеству Πself ), построить по тексту программы P программу P 0, обладающем указанным выше свойством, а затем проверить программу P 0 на корректность работы с пустым начальном словом, подав ее номер Геделя xP 0 на вход программы P0 . Осталось теперь построить алгоритм, конструирующий программу P 0 по тексту программы P . Этот алгоритм может, например, выглядеть следующим образом. Сначала по тексту программы P строится ее номер Геделя xP ∈ A∗ и находиться его длина n (т.е. то натуральное число, которое отождествляется с этим словом). Далее следует увеличить все метки программы P (как отмечающие номер оператора, так и фигурирующие в операторах переходов) на n, а в качестве первых n операторов дописать 0 LET R0 = R0 + | 1 LET R0 = R0 + | 2 LET R0 = R0 + | ... (ξP0 − 1) LET R0 = R0 + | Получив на вход пустое слово программа P 0 за первые n шагов сформирует в регистре ввода-вывода R0 слово xP , так что дальнейшая работа программы P 0 сводится просто к выполнению программы P с входным словом xP . Останов произайдет, таким образом, если и только если программа P самоприменима. Данная конструкция завершает доказательство. Упражнение 12.1 Доказать, что множества Πself и Πhalt являються перечислимыми. Указание: Поскольку перечислимость множества означает существование программы, которая при пустых входных данных будет выдавать только элементы данного множества, причем рано или поздно выдаст их все, можно переформулировать условие данного упражнения: “предъявить перечисляющий алгоритм для данных множеств”. Общая идея построения алгоритмов как для Πself , так и для Πhalt такова: сначала программы нужно модифицировать (вместо печати программа должна переходить к следующей инструкции, вместо инструкции HALT выводить
12.3 Теорема Райса
103
свой номер Геделя, кроме того, нужно перенумеровать регистры так, чтобы множества регистров разных программ не пересекались) после этого запускаем программы параллельно. Под параллельной работой программ подразумевается следующее: запустим первую программу (множество программ очевидно перечислимо, поскольку перечислимо множество слов, и можно построить алгоритм синтаксического анализа) и выполним первую ее инструкцию. Выполним вторую инструкцию первой программы, перенумеруем регистры второй программы и запустим ее первую инструкцию. Иначе говоря, на шаге с номером n берем программу с номером n, модифицируем ее и выполняем первую инструкцию, для программы с номером n − k, k ∈ [1..n − 1] выполняем ее инструкцию с меткой k.
12.3
Теорема Райса
Естественно теперь задаться вопросом о том, какие вообще свойства программ являются разрешимыми, то есть, какие подмножества множества программ являются разрешимыми. Теорема 12.2 в частности утверждает, что даже такое “простое” свойство программ, как возможность корректно работать с заданным (в данном случае пустым) начальным словом, разрешимым не является. К сожалению, имеет место более общий факт. Теорема 12.3 (Райса) Никакое нетривиальное свойство полувычислимых функций не является разрешимым. Более строго, пусть E произвольный класс полувычислимых функций ϕ : A∗ → A∗ отличный от пустого множества и от множества всех полувычислимых функций, определенных на A∗ , где A — заданный алфавит. Тогда E неразрешимо. Замечание 12.1 Во всех случаях, когда мы говорим о разрешимости (перечислимости) множества полувычислимых функций, мы имеем в виду разрешимость (перечислимости) множества всех программ, реализующих эти функции. Доказательство: Рассмотрим произвольную нигде не определенную фукцию ϕ0 : A∗ → A∗ . Очевидно, что эта функция полувычислима. Выберем теперь полувычислимую функцию ξ : A∗ → A∗ , таким образом, что ξ ∈ E, если ϕ0 ∈ E, и ξ∈ / E в противном случае. Пусть K ⊂ A∗ — произвольное перечислимое, но не разрешимое множество. Определим функцию V : A∗ × A∗ → A∗ формулой ( ξ(x), если n ∈ K, V (n, x) := не определена, если n ∈ / K.
104
Некоторые алгоритмические массовые проблемы
Функция V полувычислима (соответствующая полувычисляющая программа запускает перечисляющую программу для множества K и при появлении на выходе последней слова n печатает слово ξ(x) и завершает работу). Заметим теперь, что V (n, x) = ξ(x) если n ∈ K, и V (n, x) = ϕ0 (x) в противном случае. Предположим теперь, что множество E является разрешимым. Иначе говоря, предположим существование алгоритма PE , работающего с текстами программ, реализующих функции φ : A∗ → A∗ , и проверяющего за конечное время, принадлежит ли множеству E функция, реализуемая поданной на вход алгоритму PE программы. Мы утверждаем, что в этом случае множество K является разрешимым. Для доказательства этого утверждения построим разрешающий алгоритм для множества K. Этот алгоритм должен работать с любым входным словом n ∈ A∗ . Он может выглядить следующим образом: Шаг 1. Получаем по значению входного слова n ∈ A∗ текст программы Pn , реализующей функцию Vn : A∗ → A∗ , определенную по формуле Vn (x) := V (n, x). Программа Pn просто запускает программу, полувычисляющую V , с двумя входами n и x. Шаг 2. Текст программы Pn подается на вход программы PE . Последняя за конечное время останавливается и выдает ответ о принадлежности функции Vn множеству E. Тогда, если ϕ0 6∈ E, то Vn = ξ, а значит алгоритм должен завершить работу, выдав ответ о принадлежности входного слова n множеству K. В противном случае необходимо выдать ответ о не принадлежности входного слова n множеству K. Построенный алгоритм, таким образом, доказывает разрешимость множества K. Полученное противоречие с предположением о неразрешимости K завершает доказательство. Теорема Райса утверждает, что практически все наиболее интересные свойства программ не являются разрешимыми (говоря так, мы имеем в виду, что не являются разрешимыми множества программ, обладающих этими свойствами). Среди них, например, даже такие простые свойства программ как свойства: • вычислять функцию, тождественно равную некоторому заданному значению; • зацикливаться на любых входных данных (иначе говоря, не вычислять никакую функцию, определенную не на пустом множестве); • вычислять всюду определенную функцию (иначе говоря, корректно работать с любыми входными данными);
105 • вычислять функцию, определенную на заданных входных данных, то есть корректно работать с этими данными; • вычислять функцию, принимающую ровно одно значение (не менее одного значения и т.п.). Упражнение 12.2 Покажите с использованием теоремы Райса, что • нельзя с помощью универсального алгоритма проверить, всюду ли определена функция, реализуемая данной программой; • не существует алгоритма проверки того, будет ли программа вычислять функцию, принимающую единственное, заранее заданное значение; • вопрос о том, вычисляют ли две программы одну и ту же функцию, массово неразрешим; • не существует алгоритма, определяющего по тексту программы, будет ли эта программа вычислять некоторую заданную вычислимую функцию. Cтоит отметить, что напротив легко алгоритмически проверить любые синтаксические свойства программ (такие как свойство состоять из не более чем заданного количества операторов, содержать не более заданного количества операторов ввода-вывода и т.п.). Однако наиболее интересными на практике являются не эти свойства, а то, что именно реализуется программой, иначе говоря, какая именно функция вычисляется. Соответствующие свойства программ иногда называют семантическими, имея в виду, что программа “осмысленна”, если она реализует требуемую функциональность. Но именно такие свойства, в силу теоремы Райса, невозможно проверить никаким универсальным (то есть пригодным сразу для всех программ) и эффективным способом.
13
Разрешимость и перечислимость множества тавтологий
В предыдущей главе мы установили ряд интересных и практически важных фактов о неразрешимости некоторых множеств программ (алгоритмов). Используя их, мы выведем аналогичные утверждения для логических языков. А именно, рассмотрим язык логики первого порядка Lσ . Одним из наиболее важных вопросов является вопрос о том, как проверить, является ли заданная формула P ∈ Lσ семантическим (логическим) следствием заданного множества формул Γ ⊂ Lσ . Очевидно, что осуществить такую проверку напрямую, т.е. пользуясь
106
Разрешимость и перечислимость множества тавтологий
только определением семантического следствия невозможно, поскольку невозможно перебрать все мыслимые алгебраические системы и интерпретации формул языка Lσ . В качестве альтернативы обычно заменяют поставленный вопрос на вопрос о поиске доказательства формулы Φ из множества посылок Γ при помощи подходящей формальной системы. Однако как известно из математической практики, поиск доказательства весьма нетривиален. Естественно поэтому попытаться найти алгоритм, позволяющий построить такое доказательство, если, конечно, оно существует. Если такого универсального (т.е. пригодного для всех формул P и для всех множеств посылок Γ) алгоритма найти не удается, то процесс поиска доказательства становится скорее искусством, чем пусть и сложным, но ремеслом. В случае, если язык Lσ является “достаточно богатым”, мы дадим отрицательный ответ на посталенный вопрос о существования алгоритма поиска доказательств даже для случая Γ = ∅ (иными словами, вопрос о разрешимости множества тавтологий языка Lσ ), который интуитивно кажется наиболее простым. В дальнейшем для простоты в качестве Lσ будем рассматривать “самый богатый” из языков логики первого порядка с не более чем счетным алфавитом, в сигнатуре которого присутствует счетное число символов констант, функциональных и предикатных символов любой арности. Сигнатуру такого языка будем обозначать σ∞ . Справедливо следующее утверждение. Теорема 13.1 Множество тавтологий языка логики первого порядка Lσ∞ не является разрешимым. Замечание 13.1 Выбор языка Lσ∞ в формулировки теоремы 13.1 не является принципиальным. В действительности из доказательства теоремы будет понятно, что оно применимо к любому достаточно богатому языку первого порядка с равенством. Минимальные требования к тому, насколько богат должен бьть язык логики первого порядка, чтобы множества тавтологий этого языка не было разрешимым, легко понять при чтении доказательства теоремы. Легко также убедиться, что эти требования являются весьма неограничительными. Для дальнейших рассуждений нам существенно понадобится теория регистровых машин. Мы попытаемся “связать” регистровые машины и логические формулы между собой. Для этого введем следующее определение. Определение 13.1 Упорядоченную (n + 2)-ку (вектор из n + 2 чисел) натуральных чисел (L, m0 , m1 , . . . , mn ) будем называть конфигурацией регистровой машины, исполняющей программу P , после l шагов, если
107 • L ≤ k, где k — номер последней инструкции в программе (т.е. инструкции HALT ); • программа P , принимая на вход пустое начальное слово, после l шагов содержит в каждом регистре Ri слово, состоящее из mi символов, причем следующая инструкция, которая должна исполняться, имеет метку L. С учетом этого определения условие P : → HALT можно сформулировать так: найдутся такие числа l, L, m0 , m1 , . . . , mn , что после l шагов регистровая машина, исполняющая программу P , будет иметь конфигурацию (k, m0 , m1 , . . . , mn ), где k — метка инструкции HALT . Теперь мы можем доказать теорему 13.1. Доказательство: Идея доказательства состоит в сведении проблемы разрешимости множества тавтологий языка Lσ∞ к массовой проблеме разрешимости множества Πself самоприменимых программ. Для этого мы научимся строить по тексту регистровой программы P формулу ϕP ∈ Lσ∞ , которая является тавтологией (т.е. |= ϕP ), если и только если данная программа корректно работает с пустым начальным словом, т.е P ∈ Πhalt . Пусть n + 1 — число регистров регистровой машины, которая исполняет программу P (т.е. используются регистры R0 , R1 , . . . , Rn ). Из символов сигнатуры σ∞ нам понадобятся • один символ предметной константы, который мы будем обозначать 0; • один символ унарный функциональный символ (в дальнейшем обозначаемый s); • бинарный предикатный символ, обозначаемый в дальнейшем < (при написании формул мы будем писать x < y вместо < (x, y), как это и принято в математике, когда этим символом обозначается отношение строгого порядка); • предикатный символ равенства =; • набор предикатных символов, обозначаемых в дальнейшем Rk для всех арностей k ≥ 3 (указание арности в дальнейшем будем опускать, когда это не ведет к непониманию). Нам понадобится также специальная алгебраическая система MP для интерпретации формул, описывающих работу регистровой машины, исполняющей программу P . Универсумом такой алгебраической системы будет являться отрезок
108
Разрешимость и перечислимость множества тавтологий
натурального ряда, содержащий 0. При этом положим 1, если после l шагов регистровая машина MP R (l, L, m0 , m1 , . . . , mn ) := имеет конфигурацию (L, m0 , . . . , mr ), 0, в противном случае,
0MP := 0, символ =, как и принято для языков с равенством, будем интерпретировать как совпадение элементов универсума, а за символом < закрепим обычное отношение строгого порядка на множестве натуральных чисел. Конструкция универсума MP будет зависеть от поведения программы P при подаче на ее вход пустого начального слова. А именно, рассмотрим два случая. Случай 1. P : → ∞. В этом случае положим MP := N, а sMP (x) := x + 1. Случай 2. P : → halt. В этом случае в качестве универсума рассмотрим конечное множество MP := {0, 1, 2, . . . , e}, где e — наибольшее из двух чисел — k (т.е. метки последнего оператора программы P ) и числа шагов, выполняемых программой P до останова при подаче на ее вход пустого слова. Определим ( x + 1, если x < e, sMP (x) := e, иначе. Наконец, обозначим за 1 := s(0), . . . , n := s(n − 1) (мы пишем 1, 2 . . . вместо 1, 2, . . ., подчеркивая тем самым, что это термы языка Lσ∞ , а не числа). Построим формулу ψP ∈ Lσ∞ , которая “описывает работу программы P ” в следующем смысле: (i) MP |= ψP (с эвристической точки зрения это означает, что формула ψP истинна как утверждение о том, как изменяются состояния регистровой машины при выполнении программы P ); (ii) если ψP верно в некоторой другой модели B и (L, m0 , . . . , mn ) — конфигурация регистровой машины после l шагов, то элементы 0B , 1B , . . . , lB попарно различны и B |= R(l, L, m0 , . . . , mn ). Первое из этих свойств можно будет проверить непосредственно при построении формулы ψP , а второе можно будет доказать индукцией по индукцией по l. Запишем формулу для ψP следующим образом: ψP := ψ0 ∧ R(0, 0, . . . , 0) ∧ ψα0 ∧ ψα1 ∧ . . . ∧ ψαk−1 , | {z } n+3
109 где ψ0 — формула, поясняющая как понимать символы ’<’, s() в данной модели, т.е. ∀x∀y∀z(x < y ∧ y < z → x < z)∧ ∀x¬(x < x)∧ ∀x(x > 0 ∨ x = 0)∧ ∀x(x < s(x) ∨ x = s(x))∧ ∀x(∃y(x < y) → (x < s(x) ∧ ∀z(x < z → (s(x) < z ∨ s(x) = z))) или, говоря неформальным языком ψ0 := 0 < — порядок0 ∧ ∀x(0 < x ∨ 0 = x) ∧ ∀x(x ≤ s(x))∧ 0 s(x) — единственный следующий за x, если x — не последний0 R(0, 0, . . . , 0) — состояние машины перед выполнением программы; формулы ψαi отвечают состоянию, в которое переходит машина при выполнении соответствующей инструкции αi . Определим ψαi в зависимости от типа инструкции αi . 1. αi . LET Rj = Rj + |; ψαi := ∀x∀y0 . . . ∀yn (R (x, L, y0 , . . . , yn ) → (x < s (x) ∧ R (s (x) , L + 1, y0, . . . , yj−1, yj + 1, yj+1, . . . , yn ))) 2. αi . LET Rj = Rj − |; ψαi := ∀x∀y0 . . . ∀yn (R(x, L, y0 , . . . , yn ) → (x < s(x)∧ (¬yj = 0 ∧ R(s(x), L + 1, y0, . . . , yj−1, yj − 1, yj+1, . . . , yn ))∨ (yj = 0 ∧ R(s(x), L + 1, y0 , . . . , yj−1, 0, yj+1, . . . , yn )))) 3. αi . PRINT; ψαi := ∀x∀y0 . . . ∀yn (R (x, L, y0 , . . . , yn ) → (x < s (x) ∧ R (s (x) , L + 1, y0, . . . , yn ))) 4. αi . IF Rj = THEN L0 ELSE L0 ; ψαi := ∀x∀y0 . . . ∀yn (R(x, L, y0 , . . . , yn ) → (x < s(x)∧ (yj = 0 ∧ R(s(x), L0 , y0, . . . , yn ))∨ (¬yj = 0 ∧ R(s(x), L0 , y0 , . . . , yn )))) Теперь построим формулу ϕP : ϕP := ψP → ∃x∃y0 ∃y1 . . . ∃yn (R (x, k, y0 , y1, . . . , yn )) Докажем, что |= ϕP ↔ P ∈ Πhalt (т.е. P корректно работает с пустым начальным словом).
110
Разрешимость и перечислимость множества тавтологий
• ’ → ’. ϕP — тавтология (|= ϕP ), следовательно, она истинна в любой интерпретации, в том числе и в нашей, где истинна ψP . Из одновременной истинности ϕP и ψP получаем, что истинна и ∃x∃y0 ∃y1 . . . ∃yn R(x, k, y0 , y1 , . . . , yn ) то есть, программа P остановится после k шагов и таким образом корректно работает с пустым начальным словом. • ’ ← ’. Рассмотрим варианты: – A 6|= ψP . Значит A |= ϕP . – A |= ψP . Тогда A |= R(l, k, m0 , . . . , mn ), следовательно A |= ∃x∃y0 ∃y1 . . . ∃yn R(l, k, y0 , y1 , . . . , yn ). Мы правильно описали работу любой регистровой машины и построили формулу, которая является тавтологией, если и только если регистровая машина, работу которой описывает эта формула, корректно работает с пустым словом. Пусть множество тавтологий разрешимо, следовательно, существует разрешающий алгоритм, который при этом после некоторого преобразования решает проблему останова (например, алгоритм, который получает на вход число Геделя, строит по нему формулу, описывающую работу машины и проверяет ее принадлежность к множеству тавтологий, после чего дает ответ о принадлежности программы множеству Πhalt прогамм корректно работающих с пустым начальным словом). Но, в соответствии с ранее доказанным, существование такого алгоритма невозможно, следовательно, множество тавтологий неразрешимо. Упражнение 13.1 Множество тавтологий языка логики первого порядка перечислимо. Указание: Мы уже умеем отождествлять тавтологии с программами, корректно работающими с пустым словом. Перечеслимость же множества таких программ уже обсуждалась. Замечание 13.2 Если на языке можно записать аналог арифметики Пеано, для него справедливы все вышеприведенные выкладки для языка с бесконечной сигнатурой. Теорема 13.2 Множество тавтологий языка логики второго порядка неперечислимо.
111 Этот факт гораздо более сильный чем то, что нельзя построить одновременно корректную и полную формальную систему. Этот результат очевиден и из нашего результата (а именно, если бы существовала корректная и полная формальная система, то доказательство перечислимости множества тавтологий языков логики первого порядка переносилось бы и на языки логики второго порядка). Более того, верно не только наше утверждение о том, что нельзя построить корректную и полную формальную систему, но нельзя построить формальную систему корректную и полную лишь в слабом смысле (напомним, что система является корректной и полной в слабом смысле, если ` P тогда и только тогда, когда |=Φ P, где P ∈ Lσ ). Мы показали, что для достаточно богатых языков никакие семантические вопросы о их формулах не допускают эффективного решения (нет алгоритма, который давал бы ответ на эти вопросы). Это верно даже для языков логики первого порядка, не говоря уже о языках логики второго порядка. Тем не менее если язык оказывается достоточно беден, то для него можно проверить некоторые семантические факты.
14
Формальные теории
В предыдущих главах мы уже встречались с некоторыми математическими теориями, записанными при помощи логических языков — арифметики Пеано, теорией чисел, теорией множеств Цермело-Френкеля. С формальной точки зрения все они представлялись просто специальными множествами формул соответствующих языков логики предикатов первого или второго порядка, и представляли собой таким образом частный случай общего понятия формальной теории, с которым мы будем работать в дальнейшем. Определение 14.1 Множество T ⊂ Lσ называется теорией, если оно выполнимо и замкнуто относительно семантического следствия (то есть если T |= P, то P ∈ T ). Мы уже говорили, что если на языке можно записать аналог арифметики Пеано, то для него справедливо все, что утверждалось о достаточно богатых языках. Теперь мы зададимся более интересным вопросом — вопросом создания системы аксиом некоторой теории. Кроме того мы можем, например, интересоваться вопросом, можно ли перечислить все формулы данной теории (что автоматически означает, что формулы этой теории доказываются автоматически — путем их перечисления). Также любопытно, а можно ли по данной формуле сказать, истинна ли она в данной теории. Данные вопросы отнюдь не являются праздными. К началу XX в. в теории множеств были обнаружены парадоксы — самые настоящие противоречия. К это-
112
Формальные теории
му времени теория множеств уже успела показать себя как естественная основа и плодотворнейшее орудие математики. Для спасения ее немецкий математик Давид Гильберт22 предложил в 1904 г. свою программу перестройки оснований математики, которая состояла из двух частей: • Представить существующую математику (включая очищенный от парадоксов вариант теории множеств) в виде формальной теории; • Доказать непротиворечивость полученной теории (т.е. доказать, что в этой теории никакое утверждение не может быть доказано вместе со своим отрицанием). Пример 14.1 В качестве примера формальной теории можно рассматривать игру в шахматы — назовем это теорией C. Утверждениями в C будем считать позиции (всевозможные расположения фигур на доске вместе с указанием “ход белых” или “ход черных”, а также дополнительной информацией о том, делали ли стороны ходы королем и каждой из ладей). Тогда аксиомой теории C естественно считать начальную позицию, а правилами вывода — правила игры, которые определяют, какие ходы допустимы в каждой позиции. Правила позволяют получать из одних утверждений другие. В частности, отправляясь от нашей единственной аксиомы, мы можем получать теоремы С. Общая характеристика теорем С состоит, очевидно, в том, что это — всевозможные позиции, которые могут получиться, если передвигать фигуры, соблюдая правила. Если нам предложена теорема А в теории С, вместе с ее доказательством, то мы можем проверить истинность его (просто проверив, все ли переходы соответствуют правилам). Более того, множество всех теорем теории С оказывается конечным. Значит, принципиально, можно проверить является ли данная теорема доказуемой в С (то есть достижима ли данная позиция). Можно также построить цепочку доказательства любой теоремы (последовательность позиций, приводящую к позиции А), поскольку количество всех цепочек также конечно. 22
Давид Гильберт (David Hilbert) (1862–1943) — немецкий математик и логик, основатель Геттингенской математической школы. Основные работы Гильберта относятся к теории алгебраических инвариантов, теории алгебраических чисел, к основаниям математики и математической логики. В работе ”Основания геометрии“ Гильберт строго аксиоматически построил геометрию Евклида, что в значительной степени предопределило дальнейшее развитие исследований по аксиоматизации научного знания. Большое значение имеют работы Гильберта в области высказываний и исчисления предикатов. В 1900 году Гильберт на Втором международном конгрессе математиков предложил в качестве предмета исследования 23 важнейшие математические проблемы — своеобразную эстафету наступающему веку — решение которых способствовало бы дальнейшему развитию математики. Некоторые из этих 23 проблем, названных потом проблемами Гильберта, уже решены, другие еще ждут своего часа.
113 Напомним, что мы говорим лишь о принципиальной разрешимости данных задач, не касаясь проблемы трудоемкости их решения. Отвлекаясь от нашего, не вполне серьезного, примера, заметим, что существует два способа построения теорий: 1. Если M — алгебраическая система, то T h(M) := {P ∈ Lσ : M |= P}. 2. Задание теории при помощи системы аксиом. Пусть Γ ∈ Lσ . Тогда Γ |= T , где T — теория. В первом случае мы имеем некую интерпретацию, универсум и рассматриваем теорию, как все предложения заранее выбранного языка Lσ , верные в этом универсуме, то есть все теоремы, верные для данной интерпретации. Возникает вопрос, можно ли каким-то образом конструктивно сгенерировать все такие теоремы. Поэтому обычно идут другим путем. Существует такой хороший механизм, а именно одновременно корректная и полная формальная система. Их на самом деле много, но мы рассмотрели одну — это естественная дедукция. Далее создают некую систему аксиом Γ, обычно не произвольную, а конечную или хотя бы “обозримую”. Иными словами систему аксиом, состоящую из отдельных аксиом и нескольких схем аксиом. Система аксиом получается бесконечной, но обозримой в том смысле, что она регистрово разрешима (есть такой алгоритм, который для любой формулы может сказать, является ли она аксиомой или не является). Разрешимость здесь как бы исключает произвольность этого множества, оно должно быть в каком-то смысле конструктивным. Далее берется такое множество и строются все семантические следствия. А так как естественная дедукция является корректной и полной, можно утверждать, что все семантические следствия — это и формальные следствия. Далее запускается аппарат, который позволяет выводить из формул Γ с использованием правил вывода другие теоремы, а мы знаем, что все то, что мы выводим — это теоремы нашей теории. Остается нерешенным вопрос, а в каком соотношении находится теория, построенная на множестве аксиом Γ и теория исходной модели. Если Γ подобрали удачно, в том смысле, что все формулы верны в модели M, то ясно, что теория, построенная на Γ будет подмножеством теории модели. А будет ли совпадение? Чуть позже выясним этот вопрос конкретно для арифметики. Рассмотрим некоторую теорию. В нашем примере про шахматы все формулы теории получались из одной аксиомы. Вообще, если можно предъявить множество аксиом, из которых выводятся все формулы тории, то теория называется эффективно аксиоматизируемой. Или, говоря более формальным языком:
114
Формальные теории
Определение 14.2 Теория T ⊂ Lσ называется эффективно аксиоматизируемой, если существует такое разрешимое множество формул Γ ⊂ Lσ , что T = Γ|= . Такое множество Γ, не всегда конечно, если же оно все же оказалось конечным, то такая теория называется конечно аксиоматизируемой. Определение 14.3 Теория T называется конечно аксиоматизируемой, если существует такое конечное Γ : T = Γ|= . Еще нам бы хотелось, чтобы теория не содержала формул, о которых “ничего нельзя сказать”, то есть, чтобы была верна либо формула, либо ее отрицание. Определение 14.4 Теория T называется полной, если для любого P ∈ Lσ либо P ∈ T , либо ¬P ∈ T . Лемма 14.1 Любая теория модели полна. Другими словами, в теории модели, для любой формулы верно, что либо она сама принадлежит этой теории, либо ее отрицание принадлежит этой теории. Лемма 14.2 Эффективно аксиоматизируемая теория перечислима. Доказательство: Пусть Γ — разрешимое множество аксиом теории T, тогда T = Γ|= . Построим программу, которая будет перечислять теорию T: • Генерируем все выводимые секвенции; • Проверяем, принадлежат ли листья дерева доказательства Γ, если да и результат — предложение, то печатаем его. Иначе продолжаем.
Лемма 14.3 Эффективно аксиоматизируемая и полная теория является разрешимой. Доказательство: По лемме 14.2 всякая эффективно аксиоматизируемая теория перечислима. Пусть дано ϕ. Запускаем перечисляющий алгоритм для теории. Т.к. теория полна, то рано или позно на выходе появится ϕ или ¬ϕ. Лемма 14.4 Если T = Γ |= , где Γ перечислимо, то сама теория эффективно аксиоматизируема.
115 Доказательство: Запишем Γ = {ϕ0 , ϕ1 , . . .} — в порядке перечисления. Рас|= смотрим Γ1 = {ϕ0 , ϕ0 ∧ ϕ1 , ϕ0 ∧ ϕ1 ∧ ϕ2 , . . .}. Тогда Γ|= = Γ1 = T . Очевидно, что Γ1 — разрешима. Теорема 14.1 Формальная арифметика (теория чисел) Th(N ) неразрешима. Доказательство: Для доказательства выпишем для любой программы P предложение ϕP ∈ Lσar , такое что N |= ϕP , если и только если P : → HALT . Тогда неразрешимость Th(N ) — тривиальное следствие неразрешимости Πhalt . Чтобы определить ϕP , напишем ψP , которая определяет “работу P ”. Для написания ψP нам понадобиться следующая техническая лемма. Лемма 14.5 Для любой программы P на регистровой машине с регистрами R0 , . . . , Rn найдется формула ψP (υ0 , . . . , υ2n+2) ∈ Lσar (Lσ — достаточно богатый язык), такая что для любой конфигурации (k0 , . . . , kn , L, m0 , . . . , mn ) выполнено N |= ψP (k0 , . . . , kn , L, m0 , . . . , mn ) тогда и только тогда когда программа начинает работу с конфигурации (0, k0 , . . . , kn ) и за конечное число шагов приходит к конфигурации (L, m0 , . . . , mn ). Определим ϕP как ϕp : = ∃υn+2 , . . . , ∃υ2n+2 ψp (0, . . . , 0, k, υ n+2 , . . . , υ 2n+2 ) | {z } n+1
Тогда утверждение N |= ϕP равносильно тому, что программа P за конечное число шагов, начиная с (0, . . . , 0) достигает (k, m0 , . . . , mn ), что равносильно тому, что программа P принадлежит классу Πhalt . Следствие 14.1 Th(N ) не является перечислимой и не является эффективно аксиоматизируемой. Доказательство: Th(N ) полна. Значит, с одной стороны, если она перечислима, то она и разрешима. С другой стороны, если она эффективно аксиоматизируема, то также является разрешимой. Теорема 14.2 (Геделя о неполноте формальной арифметики Пеано) Формальная арифметика Пеано P A|= неполна. Доказательство: Действительно, т.к. Th(N ) не является эффективно аксиоматизируемой, существует формула ϕ такая что ϕ ∈ Th(N ) и P A 6|= ϕ. В силу того, что ¬ϕ 6∈ Th(N ) верно и P A 6|= ¬ϕ.
116
Формальные теории
Таким образом существует теорема теориии чисел о которой ничего нельзя сказать пользуясь P A, вследствие ее неполноты. Заметим, что мы хотя и доказали неполноту P A|= , но мы не предъявили ту формулу, для которой ни она, ни ее отрицание не выводятся из системы аксиом. Таким образом наша теория (P A|= ) оказалась несовершенной. А несовершенную теорию следует усовершенствовать. Может быть, мы “забыли” какие-то важные аксиомы? Следует найти их, присоединить к аксиомам P A, но получим ли мы в результате совершенную систему? Оказывается нет. К сожалению наш результат распространяется и на любые расширения теории. Если мы найдем эту “недостающую” аксиому и добавим ее в P A, то все равно P A|= останется неполна. К сожалению мало того, что P A|= не полна, еще T h(N) неразрешима, и даже неперечислима. То есть, хотя мы можем перечислить все следствия из аксиом, но мы не можем даже перечислить все теоремы теории чисел. Мы собираемся сформулировать теорему Геделя в форме независимой от арифметического языка, и, кроме того, предъявим конструкивный алгоритм построения данной формулы. Для того, чтобы перейти к этому нам понадобятся некоторые определения. Определение 14.5 Будем говорить, что Q ⊂ Nr , является выразимым при помощи Φ ⊂ Lσar , если существует формула ϕ(υ0, υ1 , . . . , υr−1) ⊂ Lσar , такая что если (n0 , n1 , . . . , nr−1 ) ∈ Q, то Φ ` ϕ(n0 , n1 , . . . , nr−1 ) если (n0 , n1 , . . . , nr−1 ) 6∈ Q, то Φ ` ¬ϕ(n0 , n1 , . . . , nr−1 ) для произвольного вектора (n0 , n1 , . . . , nr ) ∈ Nr . Определение 14.6 Функция f : Nr → N называется выразимой при помощи Φ ⊂ Lσar , если существует формула ϕ(υ0 , υ1, . . . , υr−1), такая что если f (n0 , n1 , . . . , nr ) = nr , то Φ ` ϕ(n0 , n1 , . . . , nr ) если f (n0 , n1 , . . . , nr ) 6= nr , то Φ ` ¬ϕ(n0 , n1 , . . . , nr ) и Φ ` ∃!υr ϕ(n0 , n1 , . . . , nr−1 , υr ) для произвольного вектора (n0 , n1 , . . . , nr ) ∈ Nr . Замечание 14.1 1. Если Φ ⊂ Φ0 ⊂ Lσar , то все выразимые в Φ функции выразимы и в Φ0 . 2. Если Φ ` ⊥, то в Φ выразимы все функции. 3. Если Φ 0 ⊥, и Φ разрешимо, то разрешимо любое множество выразимое в Φ и вычислима любая функция выразимая в Φ.
14.1 Теорема о неподвижной точке
117
Введем следующее определение. Определение 14.7 Множество Φ ⊂ Lσar называется представляющим, если в нем выразимы все разрешимые множества Q ⊂ Nr и все вычислимые функции f : Nr → N (для любого n ≥ 1). Лемма 14.6 Если множество Q ⊂ Nr разрешимо, то существует формула арифметики ϕ(υ0 , υ1 , . . . , υr−1 ), такая что для любых k0 , . . . , kr−1 ∈ N верно (k0 , . . . , kr−1) ∈ Q, если и только если N |= ϕ(k0 , . . . , kr−1) Иначе говоря, любое отношение на Nr выразимо в N (или в Th(N )). Теорема 14.3 Th(N ) и P A|= — представляющие множества.
14.1
Теорема о неподвижной точке
Определение 14.8 Будем называть эффективной нумерацией множества F всюдо определеноое сюръективное вычислимое отображение U : N → F , такое что для любой всюдо определеноой сюръективной вычислимой функции V : N → F существует всюдо определенная функция s, такая что V (m) = U(s(m)). Теорема 14.4 (О неподвижной точке) Пусть A — класс вычислимых функций первого порядка и на нем задана какая-то эффективная нумерация U(n). Пусть h ∈ A и h всюду определена. Тогда существует n такое, что U(n) = U(h(n)), т.е. n и h(n) — номера одной функции. Замечание 14.2 Возможна и другая формулировка: нет алгоритма, преобразующего программы, который бы по каждой программе выдавал не эквивалентную ей. Доказательство: Расмотрим следующее отношение эквивалентности ≡ на натуральных числах. Будем говорить, что x ≡ y, если функции с номерами x и y совпадают, т.е. U(x) = U(y). Покажем, что для любой вычислимой функции f : N → N существует вычислимая и всюду определенная функция g : N → N, такая что если f определено при некотором x ∈ N, то g(x) ≡ f (x). Действительно, достаточно положить ( f (n), n ∈ Domf, g(n) := номер функции ϕ0 иначе, где ϕ0 — некоторая заранее выбранная нигде не определенная функция. Теперь покажем, что не существует вычислимой и всюду определенной функции
118
Формальные теории
h : N → N, такой что n 6≡ h(n) для любого n ∈ N. Пусть такая h существует. Рассмотрим функцию f : N → N, определенную по формуле f (x) := U(x)(x). Она вычислима и никакая другая вычислимая функция не отличается от f всюду. Однако функция t : N → N, определенная по формуле t(x) := h(g(x)), всюду отличается от f в силу нашего предположения. Полученное противоречие завершает доказательство. Следствие 14.1 Существует программа, которая при любом входе печатает свой текст. Иными словами, существует такая программа P , что P : ξ → xP для любого входного слова ξ ∈ A∗ . Доказательство: Пусть U — какая-либо эффективная нумерация вычислимых функций. Доказательство утверждения эквивалентно доказательству того, что существует p ∈ N, такое что U(p)(x) = p для любого x ∈ N. Пример 14.2 Напишем на языке PASCAL программу, которая при любом входе печатает свой текст. var a: array [1..100] of string; i: integer; begin a[1] := ’var a: array [1..100] of string; i: integer;’; a[2] := ’begin’; a[3] := ’for i := 1 to 3 do writeln(a[i]);’; a[4] := ’for i := 1 to 11 do begin’; a[5] := ’ write(chr(97), chr(91), i);’; a[6] := ’ write(chr(93), chr(58), chr(61));’; a[7] := ’ writeln(chr(39), a[i], chr(39), chr(59));’; a[8] := ’end;’; a[9] := ’for i := 4 to 11 do writeln(a[i]);’; a[10] := ’end.’; for i := 1 to 3 do writeln(a[i]); for i := 1 to 11 do begin write(chr(97), chr(91), i); write(chr(93), chr(58), chr(61)); writeln(chr(39), a[i], chr(39), chr(59)); end; for i := 4 to 11 do writeln(a[i]); end. Приведем соответствие между символами и их кодировками: a [ ] : = ’ ; 97 91 93 58 61 39 59
14.1 Теорема о неподвижной точке
119
Запишем все формулы арифметики. Каждой формуле будем соотносить некоторый номер — число Геделя формулы (например номер формулы при записи в лексикографическом порядке). Будем за nϕ обозначать число Геделя для ϕ ∈ Lσar . Приведем другую формулировку теоремы о неподвижной точки (для формул) и другое доказательство. Далее мы будем ссылаться именно на этот вариант теоремы. Теорема 14.5 (О неподвижной точке) Пусть задано представляющее множество Φ ⊂ Lσar . Тогда для любой ψ ∈ Lσar , #Free(ψ) = 1 существует предложение (т.е. замкнутая формула) ϕ = ϕψ ∈ Lσar , такое что Φ ` ϕ ↔ ψ(nϕ ). Иначе говоря, если Φ “достаточно богато”, то для любого свойства ψ найдется формула ϕ, говорящая “я имею свойство ψ”. Доказательство: Определим функцию F : N × N → N следующим образом: ( nχ(m) , если n — число Геделя формулы χ с одной свободной переменной F (n, m) = 0, иначе Поясним как вычисляется формула F . Число n рассматривается как число Геделя какой-то формулы (назавем ее χ). Затем смотриться если #Free(χ) = 1, то выдается число Геделя формулы, которая получается из χ подстановкой χ[x/m], где x — свободная переменная в формуле χ. Если же #Free(χ) 6= 1, то выдается 0. Ясно, что F — вычислимая функция, а т.к. Φ — представляющее множество, то найдется выражающая F формула α(υ0 , υ1 , υ2). Для заданой ψ с одной свободной переменной построим формулы β := ∀z(α(x, x, z) → ψ(z)) ϕ := ∀z(α(nβ , nβ , z) → ψ(z)) Таким образом имеем формулу β с одной свободной переменной и замкнутую формулу ϕ = β[nβ /x]. Следовательно F (nβ , nβ ) = nϕ и Φ ` α(nβ , nβ , nϕ ). Теперь докажем, что Φ ` ϕ ↔ ψ(nϕ ): • Докажем Φ ` ϕ → ψ(nϕ ). По определению ϕ: Φ ∨ {ϕ} ` α(nβ , nβ , nϕ ) → ψ(nϕ ). Так как Φ ` α(nβ , nβ , nϕ ), то Φ, ϕ ` ψ(nϕ ). Следовательно Φ ` ϕ → ψ(nϕ ) по правилу (→ i). • Докажем Φ ` ϕ ← ψ(nϕ ). Т.к. α выражает F (в Φ), то Φ ` ∃!z α(nβ , nβ , z). Но Φ ` α(nβ , nβ , nϕ ), а значит Φ ` ∀z(α(nβ , nβ , z) → z = nϕ ). Таким образом, Φ ` ψ(nϕ ) → ∀z(α(nβ , nβ , z) → ϕ(z)) или Φ ` ψ(nϕ ) → ϕ.
120
14.2
Формальные теории
Теорема Тарского
Определение 14.9 Пусть Φ ⊂ Lσar — система аксиом. Тогда Φ` := {ϕ ∈ Lσar : Φ ` ϕ} — множество следствий из Φ (“истинные предложения”). Будем говорить, что Φ` выразимо в Φ, если множество соответствующих номеров Геделя ({nϕ : ϕ ∈ Φ` }) выразимо в Φ (“истина выразима в Φ”). Лемма 14.7 Пусть Φ представляющее и совместное множество аксиом. Если Φ` выразимо в Φ, то существует ϕ ∈ Lσar , такая что ϕ 6∈ Φ` , ¬ϕ 6∈ Φ` . Доказательство: Пусть χ(υ) ∈ Lσar выражает Φ` в Φ, т.е. χ — свойство “быть истинным”. Если α — предложение Lσar , то Φ ` χ(nα ), если и только если Φ ` α. Рассмотрим “неподвижную точку” ϕ ∈ Lσar для свойства ¬χ: Φ ` ϕ ↔ ¬χ(nϕ ). (“ϕ говорит: Я лгу!”) • Докажем Φ 6` ϕ. Пусть Φ ` ϕ, тогда Φ ` ¬χ(nϕ ). Следовательно Φ ` ¬ϕ, но Φ — совместно. • Докажем Φ 6` ¬ϕ. Аналогично. Пусть Φ ` ¬ϕ, тогда Φ ` χ(nϕ ). Следовательно Φ ` ϕ, но Φ — совместно.
Теорема 14.6 (Тарского) 1. Пусть Φ представляющее и совместное множество аксиом. Если Φ|= выразимо в Φ, то Φ|= — не полно. 2. Th(N ) не выразима в Th(N ). Т.е. теория стандартной модели арифметики не выразима в себе самой. Доказательство: 1. Т.к. Φ|= = Φ` , то это тривиальное следствие предыдущей леммы. 2. Очевидно следует из первого пункта если положить Φ = Th(N ) и учесть, что Th(N ) = Th(N )|= — полно.
Следствие 14.1 Существует абсолютно невычислимая функция.
14.3 Вторая теорема Геделя
121
Доказательство: Определим F : N → N следующим образом: ( 2, n = nϕ , где ϕ ∈ Th(N ) F (n) := 1, иначе Пусть F — полувычислима, следовательно она вычислима, т.к. всюду опрелена. Но если F — вычислима, то Th(N ) — разрешимо, а значит, в силу того, что Th(N ) — представляющее, то оно выразимо в Th(N ), что противоречит cледствию из теоремы Тарского. Теорема 14.7 (Геделя о неполноте) Пусть Φ представляющее, совместное и выполнимое множество аксиом. Тогда можно выписать предложение ϕ ⊂ Lσar , для которого Φ 6` ϕ, Φ 6` ¬ϕ. Доказательство: Иначе Φ` полно, следовательно, Φ` — разрешимо. Т.к. Φ — представляющее, то Φ` выразимо в Φ. Противоречие.
14.3
Вторая теорема Геделя
В этой части положим σar ⊂ σ, если не оговорено обратное. Пусть Φ ⊂ Lσ — система аксиом. Множество Φ — представляющее и разрешимое. Рассмотрим эффективную нумерацию всех выводов из Φ и определим M ⊂ N × N так, что (n, m) ∈ M тогда и только тогда, когда m-ый вывод оканчивается секвенцией ψ0 , . . . , ψk−1 ` ϕn , где ψ0 , . . . , ψk−1 ∈ Φ и ϕn — n-ая формула из Lσ . Т.к. Φ — разрешимо, то и M — разрешимо. Кроме того, Φ ` ϕ IFF ∃m ∈ N : (nϕ , m) ∈ M Т.к. M — разрешима, а Φ — представляющее, то существует формула ϕM (υ0 , υ1) ∈ Lσ , выражающая M. Определим предикат (“x выводимо из Φ”): DerΦ (x) = ∃yϕM (x, y) Рассмотрим “неподвижную точку” — предложние ϕ (ϕ “говорит” я невыводимо из Φ): Φ ` ϕ ↔ ¬Degϕ (nϕ )) Лемма 14.8 Если Φ — выполнима, то Φ 6` ϕ. Доказательство: Предположим обратное Φ ` ϕ. Рассмотрим m: (nϕ , m) ∈ M, тогда Φ ` ϕM (nϕ , m), а значит, Φ ` DerΦ (nϕ ), следовательно Φ ` ¬ϕ. Таким образом мы получили, что Φ — несовместно. Значит наше предоположение неверно.
122
Язык Пролог
Запишем утверждение о совместности Φ: ConsisΦ := ¬DerΦ (n0=s(0) ) Т.е. Φ совместно если из него не выводится, что 0 = s(0). Лемма 14.9 Если P A|= ⊂ Φ, то Φ ` ConsisΦ ` ¬DerΦ (nϕ ). Теорема 14.8 (Вторая теорема Геделя о неполноте) Пусть Φ — разрешимое совместное представляющее множество формул из Lσ , такое что P A|= ⊂ Φ. Тогда Φ 6` ConsisΦ . Доказательство: Докажем от противного. Пусть Φ ` ConsisΦ , следовательно Φ ` ¬DerΦ (nϕ ), но тогда Φ ` ϕ. Получили противоречие с только что доказаным утверждением. Возьмем в качестве Lσ язык теории множеств. Из аксиом ZF выводится арифметика. Пользуясь только аксиомами ZF, мы не можем доказать ее непротиворечивость. Средствами математики нельзя доказать непротиворечивость математики. Кроме того, никакое нетривиальное семантическое свойство программ не является разрешимым (тривиальные свойства — те которым удовлетворяют все программы, или которым не удовлетворяют программы вообще).
15
Язык Пролог
В предыдущих главах мы неоднократно рассматривали вопрос о том, можно ли установить, является ли заданная формула P ∈ Lσ логическим следствием заданного множества формул Γ ⊂ Lσ . Имеет смысл подытожить наши результаты. Мы установили: • непосредственная проверка утверждения о том, что Γ |= P (в соответствии с определением логического следствия) не может быть практически реализована (иначе бы пришлось перебирать необозримое число всех возможных интерпретаций). Поэтому такую проверку заменяют на поиск доказательства формулы P из множества посылок Γ при помощи подходящей формальной системы. С формальной точки зрения процесс доказывания представляет собой просто манипуляцию символами при помощи некоторого конечного набора правил. Однако лишь для языков логики предикатов первого порядка существуют одновременно корректыне и полные формальные системы. Это значит, в частности, что любая корректная формальная система языка логики второго порядка не является полной, а значит, если Lσ — язык второго порядка, то может оказаться, что Γ |= P, но невозможно найти никагого доказательства P из множества посылок Γ, пользуясь
123 любой наперед заданной корректной формальной системой. Более того, мы сформулировали и более сильное утверждение: если Lσ — язык второго порядка, то такое может произойти даже в случае Γ = ∅, иными словами, даже для произвольной тавтологии нет шансов получить ее вывод из пустого множества посылок, пользуясь любой заданной корректной формальной системой; • Даже если Lσ — язык первого порядка, и для ответа на поставленный вопрос мы пользуемся одновременно корректной и полной формальной системой, сам факт существования доказательства формулы P из множества посылок Γ не гарантирует возможности получить это доказательство каким-либо эффективным (алгоритмическим) способом, если только язык Lσ достаточно богат. Более того, в этом случае не найдется даже алгоритма проверки того, является ли заданная формула P является тавтологией. Понятно, что сама по себе задача является алгоритмически неразрешимой. Максимум, на что можно надеятся — это на “половину” решения: если действительно P является семантическим следствием, то тогда рано или поздно такое доказательство мы найдем, но если P не является семантическим следствием, то не бедет никакой возможности выяснить, появится ли доказательство через годы или оно не появиться никогда. На большее расситывать даже в принципе не следует. Теперь будем строить эту систему. Определение 15.1 Подстановкой называется запись вида: n o t t t 1 2 n σ= /x1 , /x2 . . . /xn ,
где x1 , x2 . . . xn — символы предметных переменных, а t1 , t2 . . . tn — это термы. Если E — либо терм, либо атомная формула, либо отрицание атомной формулы, то тогда результат подстановки σ в E будем обозначать как Eσ . Определение 15.2 Если E — это либо терм, либо атомная формула, либо отрицание отомной формы, то E будем называть выражением. Определение 15.3 Атомную форму или ее отрицание будем еще называть литералом. Пример 15.1 Если E — литерал: E = A (x, f (y) , z), а n o c g (b) a σ = /x, /y , /z ,
124
Язык Пролог
то тогда Eσ = A (c, f (g (b)) , a) . Определение 15.4 Если σ и Θ — две подстановки: n o t t t 2 n 1 δ= /x1 , /x2 . . . /xn , o n Θ = v1/y1 , v2/y2 . . . vn/yk
Определим композицию подстановок σ и Θ следующим образом: o n t Θ t Θ t Θ v v v 1 2 n 1 2 k /x1 , /x2 . . . /xn , /y1 , /y2 . . . /yk σ◦Θ=
Вычеркнем все замены вида [x/x]; если среди y1 , y2, . . . , yk есть переменные из множества {x1 , x2 , . . . , xn }, соответствующая подстановка также удаляется. Результирующая подстановка и будет являться композицией подстановок σ и θ: σ ◦ θ. Пример 15.2 n o n o σ = f (c)/x, b/y , y/z , θ = c/u, a/y , b/z ⇒ n o n o σ ◦ θ = f (c)/x, b/y , a/z , c/u, a/y , b/z = f (c)/x, b/y , a/z , c/u Упражнение 15.1 Рассмотрим пустую подстановку ε := {}. Доказать: 1. ∀σ (σ ◦ ε = ε ◦ σ = σ); 2. Для любого выражения E верно: (Eσ1 ) σ2 = E (σ1 ◦ σ2 ); 3. Порядок применения композиций несущественен: (σ1 ◦ σ2 )◦σ3 = σ1 ◦(σ2 ◦ σ3 ). Определение 15.5 Подстановка σ называется унификатором (unifier) множества выражений {E1 , E2 , . . . , En }, если E1 σ = E2 σ = . . . = En σ. n o Пример 15.3 E1 = A (x, c), E2 = A (y, c), σ = z/x, z/y ; σ — унификатор, так как E1 σ = E2 σ = A (z, c). Замечание 15.1 Теория унификаторов была разработана в 60-х годах 20 в. Джулией Робинсон (J. Robinson).
125 Определение 15.6 Унификатор σ множества выражений {E1 , E2 , . . . , En } называется самым общим унификатором (most general unifier) этого множества, если для любого другого унификатора θ этого множества верно θ = σ◦ρ, причем ρ 6= ε. Определение 15.7 Множество выражений называется унифицируемым, если у него есть хотя бы один унификатор. Теорема 15.1 Любое унифицируемое множество выражений имеет самый общий унификатор, причем единственный с точностью до переобозначения переменных. Доказательство: Докажем существование самого общего унификатора. Представим алгоритм его нахождения и рассмотрим работу этого алгоритма на примере. 1. Запишем выражения из множества E = {E1 , E2 , . . . , En } в столбик, используя символы с постоянной шириной, то есть, чтобы i-ые символы разных строк были записаны один под другим. Например: E1 = A (x,f (u)) E2 = A (g (y) ,f (h (z))) 2. Составим disagreement set —множество несовпадений D следующим образом: будем «сканировать» записанные выражения вертикальными линиями. Пропустив k столбцов, состоящих из одинаковых символов, внесем в множество D все термы, попадающие в k + 1-ый столбец. В нашем случае D (E) = {x, g (y)}. n o 3. Построим унификатор σ1 для множества D (σ1 = g (y)/x ) и применим его к выражениям: E1 σ1 = A (g (y) , f (u)) , E2 σ1 = A (g (y) , f (h (z))); в дальнейшем будем работать уже с этими выражениями. 4. Если множество E еще не унифицировано, перейдем к шагу 1, работая уже с множеством E = {E1 σ1 , E2 σ1 }. Очевидно, что, в соответствии с алгоритмом, рано или поздно E n множество o будет унифицировано (в нашем случае — на втором шаге, σ2 = h (z)/u ), причем полученный унификатор σ = σ1 ◦ σ2 ◦ . . . ◦ σn будет самым общим. В случае, если множество неунифицируемо (например, разные выражения содержат различные константы), алгоритм будет выполняться бесконечно, однако такая ситуация невозможна по условию теоремы (множество выражений унифицируемо).
126
Язык Пролог
Трудоемкость данного алгоритма является не почти линейной, как может показаться вначале, а экспоненциальной вследствие действия под названием occur check , то есть “проверка вхождения”: ∃ (x ∈ Var, t ∈ Ter) : x ∈ / t. Она предотвращает зацикливание алгоритма, гарантируя, что disagreement set содержит только те термы, которым не принадлежит некоторая входящая в него переменная, то есть, позволяет избежать циклических замен вида [f (x)/x] для множества D = {x, f (x)}.
15.1
Формальная Система Опровержения
Нормальная форма Скулема. Любая формула языка логики первого порядка может быть приведена к нормальной форме Скулема — к виду ∀x1 ∀x2 ∀x3 . . . ∀xn (C1 ∧ C2 ∧ C3 ∧ . . . ∧ Cn ) где Ci — фразы, конечные дизъюнкции литералов. Все кванторы всеобщности (∀) выносятся вперед, кванторы существования (∃) недопустимы. В скобках находится выражение в конъюнктной нормальной форме (КНФ) — конъюнкции элементарных дизъюнкций. Замечание 15.2 Литерал — атомная формула или ее отрицание. Процесс приведения выражения к нормальной форме Скулема состоит из следующих этапов: сначала с помощью семантических эквивалентностей осуществляется переход к КНФ, после чего все кванторы выносятся за скобки и исключаются кванторы существования. Проиллюстрируем исключение квантора существования на примерах. Для исключения ’∃x’ из ∃x∀y (A (x, y)) внесем в сигнатуру языка новую константу c и запишем: ∀y (A (c, y)). В случае другого расположения кванторов, например, ∀y∃x (A (x, y)), необходимо ввести в сигнатуру уже новую унарную функцию f : ∀y (A (f (y) , y)); приведение ∀y∀z∃x (A (x, y, z)) требует введения бинарной функции: ∀y∀z (A (g (y, z) , y, z)). В дальнейшем мы будем работать только с формулами в нормальной форме Скулема. Это не сужает круг рассматриваемых формул, так как любая формула языка логики первого порядка может быть записана в таком виде. Будем писать для краткости: P = {C1 , C2 , C3 , . . . , Cn } вместо P = ∀x1 ∀x2 ∀x3 . . . ∀xn (C1 ∧ C2 ∧ C3 ∧ . . . ∧ Cn )
15.1 Формальная Система Опровержения
127
Информация о наличии кванторов всеобщности не теряется, так как здесь мы имеем дело только с замкнутыми формулами и для переменных всеобщность следует автоматически. Введем правила вывода. Пусть C1 , C2 , Q — некоторые фразы. Будем говорить, что C1 и C2 выводят Q в формальной системе опровержения R и записывать C1 , C2 |=R Q, если: • Существуют такие подстановки σ1 , σ2 , что C1 σ1 и C2 σ2 не имеют общих имен переменных; • Существуют такие множества литералов {L1 , L2 , L3 , . . . , Ln } ∈ C1 σ1 и {L01 , L02 , L03 , . . . , L0n } ∈ C2 σ2 , где литералы второго множества являются отрицаниями литералов первого, что объединенное множество со снятыми отрицаниями {L1 , L2 , L3 , . . . , Ln , L01 , L02 , L03 , . . . , L0n } унифицируемо, его самый общий унификатор — σ; • Формула Q имеет вид: ((C1 σ1 \ {L1 , L2 , L3 , . . . , Ln }) ∪ (C2 σ2 \ {L01 , L02 , L03 , . . . , L0n })) σ Пример 15.4 C1 = {A (z) ∨ ¬B (y) ∨ A (g (x))} , C2 = {¬A (x) ∨ ¬C (x)} Переименуем переменные в соответствии с правилом 1: σ1 = ε(пустая замена), σ2 = {u/x} Далее, рассматривая множества литералов, получим n o σ = g (x)/z , x/u n o Здесь наличие множеств {L~i } и L~0j позволяет избавиться от не унифицируемых литералов, входящих в одну формулу в положительном, а в другую — в отрицательном виде. Замена переменных позволяет избежать неунифицируемых множеств вида {x, f (x)}. Например, {¬x, f (x)} |=R ⊥, так как в процессе редукции (удаления литералов, ведущих к лжи) остается пустое множество, которое семантически эквивалентно лжи.
128
Язык Пролог
Теорема 15.2 Пусть множество фраз S невыполнимо, тогда S выводит пустую фразу в этой формальной системе опровержения (S |=R ). Эту теорему можно назвать теоремой о “полноте наоборот”: тогда как полнота в обычном понимании означает, что, если некое выражение семантически истинно, то оно истинно и синтаксически, эта теорема утверждает о том, что семантическая ложь выводит пустой литерал. Рассмотрим алгоритм проверки выполнимости множества фраз: REPEAT {S := Res (S)} UNTIL { ∈ S} : PRINT ’S невыполнимо’ Здесь Res (S) — множество резольвентов, то есть всех возможных выводов из пар фраз, принадлежащих S. Если множество выполнимо, данный алгоритм будет работать бесконечно. Пример 15.5 Запишем формулировку Парадокса Брадобрея: ∀x∀y (B (x) ∧ ¬S (y, y) → S (x, y)) ∧ ∀x∀y (B (x) ∧ S (y, y) → ¬S (x, y)) Мы хотим доказать, что ¬∃xB (x), или, что то же самое, что ∃B (x) |= ⊥, то есть, существование семантического противоречия. Представим данную формулу (а также цель) в виде множества фраз в нормальной форме Скулема: {¬B (x) , S (y, y) , ¬S (x, y)} , {¬B (x) , ¬S (y, y) , ¬S (x, y)} , {B (c)} Выведем из двух первых фраз новую: {¬B (x)}, и получим новую систему: {¬B (x)} , {B (c)} , из которой выводится пустое множество . Алгоритм представляет каждую формулу в виде набора фраз и, совмещая каждую с каждой, пытается сократить результат с учетом унификации до получения пустой фразы на выходе. Можно оптимизировать алгоритм путем ввода правил, ограничивающих полный перебор. Таким образом, получаем два класса стратегий, которых придерживаются алгоритмы: полные стратегии, которые для противоречивого набора входных фраз всегда рано или поздно получают на выходе ложь, и неполные, позволяющие оптимально обрабатывать некоторый класс задач, но допускающие невозможность найти ответ для других (грубо говоря, алгоритм зацикливается при некоторых корректных входных данных). Рассмотрим структуру PROLOG-программы. Автоматический доказатель языка PROLOG основан на схожих принципах и использует неполную стратегию, которая заключается в следующем: рассматриваются первые две фразы;
15.1 Формальная Система Опровержения
129
затем к выводам из них добавляется третья и рассматриваются выводы уже из этого набора и так далее. Неполноту этой стратегии можно продемонстрировать на примере: из (A ∨ B) ∧ (A ∨ ¬B) ∧ (¬A ∨ B) ∧ (¬A ∨ ¬B) никогда не будет получена ложь. Однако, при некоторых ограничениях на входные фразы данная стратегия является полной, а именно, если программа состоит только из фраз Хорна. Определение 15.8 Фразы Хорна — это фразы, содержащие не более одной положительной атомной формулы. Например, A ∨ ¬B, ¬A ∨ B и ¬A ∨ ¬B — фразы Хорна, а A ∨ B — нет. Фразы Хорна также записываются следующим образом: A0 ∨ ¬A1 ∨ ¬A2 ∨ ¬A3 = A0 ← A1 , A2 , A3 На языке PROLOG: A0 : − − A1, A2, A3. Фраза Хорна, не содержащая положительных литералов, называется целью: ← A1 , A2 , A3 = : − − A1 , A2 , A3 . Таким образом, PROLOG-программа состоит из набора фраз Хорна и цели. Пример 15.6 Dog(Rex). Cat(Felix). Animal(X) :- Cat(X). Animal(X) :- Dog(X). :- Animal(Rex). Программа говорит о том, что Rex — это Dog, Felix — это Cat, любой Cat — это Animal и любой Dog — также Animal; доказать: Rex —Animal. Автоматический доказатель выдаст ответ ’Yes’. Можно также задать цель :– Animal(X), и ответ будет ’Rex’ и ’Felix’. Скажем в заключение, что автор не претендует на полноту изложения в данной книге тем в ней затронутых. Что касается языков логического программирования, то читатель заинтерсовавшийся, может продолжить свое знакомство с ними.
Литература [1] Дж. Шенфилд, Математическая логика, “Наука”,Москва, 1975. [2] Математическая теория логического вывода, под редакцией А. В. Иделсона и Г .Е. Минца, “Наука”,Москва, 1967. [3] И. А. Лавров, Л. Л. Максимова, Задачи по математической логике и теории алгоритмов, “Наука”,Москва, 1984. [4] Н. К. Верещагин и А. Шень, Начала теории множеств, МЦНМО, Москва, 1999. [5] K. Hrbacek and T. Jech, Introduction to Set Theory, Marcel Dekker, Inc., New York, 1999. [6] Пол Дж. Коэн, Теория множеств и континуум-гипотеза, “Мир”, Москва, 1969.