
Свободная воля и законы природы, или Занимательная философия
– Я куплю себе дом.
– Но у тебя нет денег.
– Я займу у Р.
– Но у Р. тоже нет денег.
– А он займет у меня.
Чтобы дерево доказательства не ушло в бесконечность, оно должно обрываться в тех местах, где используется такое утверждение, которое в этой математической теории считается аксиомой. Поэтому дерево доказательства всегда конечно, и на его низших концах находятся только аксиомы этой теории.
Можно спросить: "Из чего же следует истинность аксиом?". А ни из чего. Любая теорема этой теории доказывается в предположении, что все аксиомы этой теории истинны. Все аксиомы данной теории не должны противоречить друг другу, и должны быть независимы друг от друга, т.е. ни одна из них не должна быть следствием остальных.
Какой во всем этом смысл, и для чего все это нужно, если истинность аксиом не доказывается? А вот какой. Теория – это аппарат, пригодный для использования в других теориях или в конечном счете на практике. Смысл такой же, как и в любом разделении труда. Если кто-то исследует свойства некоторого конкретного класса объектов, и если он установит, что для этих объектов истинны утверждения аксиом какой-то уже разработанной абстрактной теории (как он это установит – это уже его проблемы), то он может без риска ошибиться использовать любую теорему этой теории по отношению к своим конкретным объектам. А формулировать и доказывать эти теоремы непосредственно для конкретных объектов было бы для него очень трудной, а может быть и практически невыполнимой задачей.
Так, например, тригонометрия и теория логарифмов очень облегчают жизнь мореплавателям. Дифференциальное и интегральное исчисление очень помогают физикам и инженерам, и т.д. Или взять теорию графов, т.е. объектов, имеющих некоторое количество точек (вершин), и некоторое количество соединяющих их линий (ребер). Допустим, оптовая торговая фирма занимается поставками товаров. Ее клиентов можно считать вершинами графа, а транспортные пути между ними – ребрами. Задача состоит в том, чтобы за минимальное время поставить товары максимальному количеству клиентов (т.н. "Задача коммивояжера"). Если клиентов много, а транспортная сеть достаточно сложная, применение теории графов дает хорошие результаты.
Так что смысл построения абстрактной теории примерно тот же, что и в производстве станков (и вообще инструментов). Сам станок не имеет потребительных свойств: не годится ни в пищу, ни в качестве одежды, жилья, и т.п. Но может использоваться для производства предметов, имеющих потребительные свойства.
7.3.
––
Коммутативность умножения
––
Зная, что А+В=В+А, очень легко доказать, что А*В=В*А. А*В – это сумма А множеств по В единиц в каждом.
b(1) + b(2) + b(3) + ........................ + b(A) = А*В
В каждом из множеств b(k) содержится В единиц. Возьмем из каждого множества b(k) по одной единице, и сложим в одно множество а(1). Очевидно, что в нем будет А единиц. Затем также сконструируем множества а(2), а(3), и т.д. Всего получится столько множеств а(m), сколько единиц в одном множестве b(k), т.е. ровно В множеств по А единиц в каждом. Это как раз равно В*А. Значит, А*В=В*А.
7.4.
––
Коммутативность сложения
––
Но как доказать, что А+В=В+А (коммутативность сложения)? С первого взгляда кажется, что очень просто. Ведь сложить А и В, значит свалить в одну кучу все единицы множеств А и В, и не все ли равно, в каком порядке это сделать? Вот, например, на столе лежат А спичек и В спичек. Если смотреть слева, то получится А+В, а если справа, то В+А, а ведь от этого сумма не зависит, можно проверить, не отходя от стола. И все-таки остается сомнение. В данном случае все ясно, а в других? Всегда ли результат не зависит от порядка, в котором пересчитываются элементы множества? Например, если зайти в большой лес, пройти его из одного конца до другого и пересчитать все деревья, а потом повернуть назад и снова пересчитать в обратном порядке, то результаты вряд ли сойдутся. Конечно, можно списать это на ошибки в подсчете, ну, там, после 18 сразу пошло 20, или после 35 сразу перескочил на 46, какое-то дерево пропустил, или наоборот, посчитал 2 раза, и т.п. Но все же, нельзя ли доказать убедительнее? Попробую.
Во-первых, нужно взять коробку спичек, и с их помощью составить таблицу сложения для чисел, каждое из которых меньше десяти. Убедиться, что в этих пределах всегда А+В=В+А. Дальше рассмотрим суммы А+В и В+А, записав эти числа в десятичной системе счисления:
_____аk________a3_a2_a1_a0__________bm___________b3_b2_b1_b0
_+___________________________и____+
__bm___________b3_b2_b1_b0_____________аk________a3_a2_a1_a0
____________________________________________________________
_=_____________c3_c2_c1_c0________=______________d3_d2_d1_d0
Все а,b,c,d меньше десяти.
Складываем справа налево поразрядно.
а0+b0=b0+a0 Это я проверил на спичках. Значит, c0=d0 . Если a0+b0 > 9 , то единица прибавится к следующему разряду.
В следующем разряде a1+b1=b1+a1 , это тоже проверено на спичках. Если из 0-го разряда был перенос единицы, то тогда a1+b1+1=b1+a1+1 , все равно это верно, т.к. если a1+b1=х , то и b1+a1=х , х+1=х+1 , значит c1=d1 .
И т.д. справа налево. В следующий разряд всегда будет переноситься 1 или ничего. Ясно, что все десятичные цифры суммы А+В совпадут с десятичными цифрами суммы В+А .
Кажется, уже все ясно. И все-таки ощущается какая-то смутная неудовлетворенность. Все равно при записи числа цифрами в десятичной системе неявно предполагается, что число элементов множества не зависит от порядка, в котором пересчитываются эти элементы. Хотя это достаточно очевидно и можно принять за аксиому, но с другой стороны, это слишком примитивный подход. Если как попало вводить новые аксиомы, их может набраться миллион, и многие можно будет доказывать исходя из других.
Ломал, ломал голову – ничего не могу придумать. Помчался к Коле К., все-таки профессор-математик. Залетаю к Коле:
– Как доказать, что А+В=B+А, хоть общая идея, какой тут подход?!
Коля хотя и не внес ясности ("Основания арифметики" – не его епархия, там свои спецы), но отослал к литературе. Прибегаю в библиотеку, открываю книгу: Е-мое! Оказывается, все очень просто, а сам бы в жизни не додумался.
Вот одно из возможных доказательств.
Сначала нужно сформулировать подходящие аксиомы.
Аксиома (1): Если к единице (т.е. числу 1) последовательно прибавлять единицу
1+1=2
2+1=3
3+1=4 и т.д.,
то таким способом можно получить любое натуральное число, ни одно натуральное число не будет пропущено.
Аксиома (2): Если к обеим частям равенства прибавить одно и то же число, то равенство не нарушится. Например:
если A=B
то A+1=B+1
и вообще A+C=B+C
Аксиома (3): Допустим, мы имеем сумму
A+B=S
Если к одному из слагаемых, и неважно к какому, первому или второму, прибавить единицу, то и сумма увеличится на единицу, т.е.
(A+1)+B=S+1
A+(B+1)=S+1
Эти три аксиомы очевидны даже для людей далеких от математики, и их уже достаточно для доказательства теоремы A+B=B+A.
Доказательство я проведу по шагам.
Шаг 1. Возьмем простое и очевидное равенство:
1+1=1+1
Шаг 2. Прибавим в левой части равенства 1 к первому слагаемому, а в правой части равенства прибавим 1 ко второму слагаемому. В обоих случаях сумма увеличится на 1, это следует из аксиомы (3). А из аксиомы (2) следует, что равенство при этом не нарушится:
(1+1)+1=1+(1+1),
т.е. 2+1=1+2
Будем повторять эту операцию и получать равенства:
3+1=1+3
4+1=1+4 и т.д., пока не получим равенство
A+1=1+A Аксиома (1) ручается за то, что это обязательно произойдет.
Шаг 3. Прибавим в левой части полученного в Шаге 2 равенства
A+1=1+A
единицу ко второму слагаемому, а в правой части этого равенства прибавим 1 к первому слагаемому. В обоих случаях сумма увеличится на 1, это следует из аксиомы (3). А из аксиомы (2) следует, что равенство при этом не нарушится:
A+(1+1)=(1+1)+A
т.е. A+2=2+A
Будем повторять эту операцию и получать равенства:
A+3=3+A
A+4=4+A и т.д., пока не получим равенство
A+B=B+A Аксиома (1) ручается за то, что это обязательно произойдет.
Таким образом, теорема A+B=B+A полностью доказана.
7.5.
––
Что важнее: содержание утверждения или его формулировка?
––
Вы может быть удивляетесь, к чему я все это горожу? А вот к чему. В произведениях Канта встречаются такие утверждения, которые невозможно ни доказать, ни опровергнуть. Да и вообще это не редкость. Много есть утверждений вроде бы очевидных, но которые никак не удается доказать. Ну, например, первое, что пришло в голову: наше пространство 3-х мерное, имеет длину, ширину и высоту, положение любой точки в выбранной системе отсчета можно описать всего тремя числами, т.е. координатами X, Y, Z. А как логически доказать, что именно 3-х чисел для этого достаточно, а не, скажем, 4-х или 5-ти и т.д.? Никак не удается это доказать. И таких примеров тьма. Можно, конечно, списать эту недоказуемость на дефицит ума, на недостаточное развитие науки: дескать, наука до этого еще не дошла, но когда-нибудь дойдет. Но во многих случаях дело бывает совсем в другом. Многие вроде бы очевидно истинные утверждения не удается доказать просто потому, что они, вообще говоря, неверны, точнее, не везде верны. Почему же их бывает невозможно и опровергнуть? Потому что они все-таки где-то могут быть верны.
Поясню свою мысль. Надо различать содержание утверждения, т.е. реальные факты, на которых оно основано, от конкретной формулировки утверждения. Формулировка имеет такое роковое значение, о котором человек обычно даже не подозревает. Дело в том, что математика и математическая логика – универсальные науки, действительные для всех миров, как существующих, так и всего лишь возможных. (При этом надо иметь в виду, что математическая логика – это подмножество общей логики, т.е. некоторая ее часть.) Математически можно доказать только такую формулировку, которая истинна для любого мира, как действительного, так и только возможного, а находить такие универсальные формулировки непросто. Если говорить об общей логике, то она не столь универсальна, но тоже создана не только для нашего мира. Чтобы утверждение было доказуемым, его нужно конкретизировать, ограничивать, обставляя целым рядом условий, характерных именно для нашего мира.
Впрочем, даже если говорить только о нашем мире, основная масса утверждений тоже не универсальна, и верна только в определенных границах. Например, законы идеальных газов действительны только в определенных интервалах давлений и температур.
7.6.
––
Всегда ли можно найти правильную формулировку утверждения?
––
Но тут-то и вырисовывается огромная проблема: как же определить, какие условия, характерные именно для нашего мира, нужно добавить к конкретной формулировке утверждения? Ведь для этого надо знать, чем наш мир отличается от других. Но мы же не можем бывать в других существующих мирах, не говоря уже о несуществующих, но возможных, это нам не дано. И однако некоторым иногда удается находить выход из этого затруднения с помощью идей. Здесь я только обозначаю этот факт, а речь об идеях будет впереди.
Пример. Допустим, на некой планете живет не очень сообразительное существо. Климат там такой: ровно полгода лето, и вся планета зеленая, затем резко наступает зима, и вся планета белая от снега. И вот это недалекое существо формулирует " Закон цветов": "Зеленый цвет имеет свойство сменяться только белым, а белый цвет – только зеленым". Что получится, если этот инопланетный придурок вознамерится логически доказать такой "закон"? Он может пыхтеть над доказательством хоть миллион лет, но никогда не докажет свой "закон", потому что он в таком общем виде неверен, хотя и безотказно действует на той планете. Но на других планетах есть много цветов, и сменяться они могут произвольно.
В нашем мире подобные ситуации тоже не редкость. В свое время знаменитый математик Гаусс (1777-1855) писал: человек, которому удастся доказать, что через точку на плоскости можно провести только одну прямую, параллельную данной, заслужит в качестве приза бриллиант размером с весь земной шар. Но впоследствии Лобачевский (1792-1856) (да и сам Гаусс) понял, что доказать это невозможно, потому что существуют разные геометрии, и не все они обладают таким свойством.
Если даже отвлечься от других миров, надо иметь ввиду следующее. Количество разных факторов, влияющих на ход явлений, очень велико. Когда человек хочет что-то логически доказать, он выделяет ряд факторов, достаточных, по его мнению, чтобы объяснить некую закономерность. Но тут очень возможны ошибки, какие-то существенные в данном случае факторы могут ускользнуть от внимания, и тогда логическое доказательство этой закономерности окажется невозможным. Например, из опыта известно, что вода кипит при 100 градусах Цельсия. Но тщетно было бы пытаться доказать это, исходя только из строения самой воды. Есть еще существенный фактор: атмосферное давление. Вода кипит при 100 градусах Цельсия только в условиях нормального атмосферного давления, само существование которого далеко не очевидно, и было обнаружено чрезвычайными усилиями гениальных людей.
Так что если для всех наук, кроме математики, эмпирические знания считать хлебом, то строгие логические доказательства – это пирожные.
7.7.
––
Натуральные числа
––
Рассмотрим множество натуральных чисел: 1, 2, 3, 4, 5, 6, 7, 8, 9,… В этом бесконечном множестве есть числа простые, есть мудреные, есть элегантные, есть корявые, есть серьезные, есть с юмором. Каждое число имеет свое лицо, свою индивидуальность, свой характер, свое уникальное и неповторимое сочетание свойств. В отличие от людей они никогда не обманут, каждое из них прекрасно знает свое дело и свою роль. Множество целых чисел с их свойствами гораздо разнообразнее и содержательнее множества людей уже потому, что множество людей конечно, а множество целых чисел бесконечно.
Первым понял философское значение натуральных чисел Пифагор (ок.580-500 до н.э.)
Сначала человек догадывается о существовании целых чисел, пересчитывая предметы. Но количества предметов – это еще не сами числа, а только их тени, их очень несовершенные воплощения.
Бывают и другие воплощения множества целых чисел (см. Глава 5 "Физика").
7.8.
––
Теорема Геделя о неполноте. Невозможность полной логической формализации процесса познания
––
В 1931 году Гедель доказал свою знаменитую теорему о неполноте: все свойства любого математического объекта, включающего множество натуральных чисел, не могут быть формально-логически выведены ни из какой конечной системы аксиом. В ее рамках всегда можно сформулировать истинное утверждение, которое нельзя доказать с помощью данной системы аксиом. Тогда можно принять истинность этого утверждения за новую аксиому и присоединить ее к уже имеющимся. Получится новая, более широкая система аксиом. Или можно принять за аксиому отрицание этого утверждения, тогда получится другая новая система аксиом. На первый взгляд может показаться, что расширение системы аксиом приводит к более общей теории, но это не так. Как раз наоборот, получится более частная теория, но в ней можно будет доказывать много таких утверждений, которые в рамках старой системы аксиом были недоказуемы.
Значение теоремы Геделя о неполноте выходит далеко за рамки чистой математики. Из нее следует, что полная логическая формализация человеческого познания в принципе невозможна (см. Глава 2 "Рассудок"). Довольно ясно, что чисто логическое познание мира было бы возможно только в том случае, если бы любое истинное утверждение можно было чисто логически доказать, а любое ложное утверждение можно было чисто логически опровергнуть. Но из теоремы Геделя о неполноте как раз и следует, что при наличии лишь конечной системы аксиом (а в человеческом разуме не может быть ничего бесконечного) не любое истинное утверждение является логически доказуемым.
7.9. *
––
Математическое доказательство существования свободной человеческой воли *
––
Изложить здесь доказательство теоремы Геделя о неполноте совершенно невозможно, оно слишком сложное. Вместо этого я приведу популярное доказательство того, что не любая истина в нашем мире доказуема.
Гедель доказал свою теорему о неполноте в 1931 году. В середине 30-х годов Тьюринг доказал эту теорему с помощью его "теории машин Тьюринга". Приводимое здесь доказательство основано на доказательстве Геделя-Тьюринга.
Как и доказательство теоремы Геделя о неполноте, популярное доказательство использует "диагональный метод", с помощью которого Кантор доказал несчетность множества точек отрезка прямой. Поэтому для начала полезно ознакомиться с доказательством теоремы Кантора: "Множество точек отрезка прямой невозможно пронумеровать натуральными числами."
Доказательство. Возьмем для примера отрезок оси X, соответствующий интервалу действительных чисел
0 <= x < 1
Как известно, каждое число в этом интервале изображается бесконечной десятичной дробью с нолем целых. При этом дроби, заканчивающиеся бесконечной последовательностью числа 9, не рассматриваются, т.к. если в такой дроби заменить хвост из девяток нолями и прибавить 1 к разряду, непосредственно предшествующему хвосту из девяток, то величина дроби не изменится.
И наоборот, каждой бесконечной десятичной дроби с нолем целых (с только что указанным ограничением) соответствует точка интервала
0 <= x < 1
Теперь допустим, что удалось пронумеровать все эти бесконечные десятичные дроби с нолем целых натуральными числами. Изобразим эти дроби (без ноля целых) в виде матрицы. Дробь, пронумерованная натуральным числом 1, будет 1-й строкой этой матрицы, дробь, пронумерованная натуральным числом 2, будет 2-й строкой, и т.д.
_______A11__A12__A13__A14__A15__A16__A17________________
_______A21__A22__A23__A24__A25__A26__A27________________
_______A31__A32__A33__A34__A35__A36__A37________________
_______A41__A42__A43__A44__A45__A46__A47________________
_______A51__A52__A53__A54__A55__A56__A57________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
Все Aik – это цифры от 0 до 9.
i – это номер строки матрицы, т.е. то натуральное число, которым пронумерована эта бесконечная десятичная дробь.
k – это порядковый номер цифры в десятичной дроби. 1 соответствует первому знаку после запятой, 2 – второму знаку после запятой, и т.д. до бесконечности.
Теперь составим бесконечную десятичную дробь с нолем целых и десятичными знаками, находящимися на диагонали матрицы:
_______A11__A22__A33__A44__A55__A66_A77________________
и преобразуем ее в дробь Bm:
_______Bm1__Bm2__Bm3__Bm4__Bm5__Bm6__Bm7____________
из цифр, вычисленных по формулам:
______________________Bm1=9-A11
______________________Bm2=9-A22
______________________Bm3=9-A33
______________________Bm4=9-A44
_______________________________
и т.д. Т.е. заменим в диагональной дроби все цифры на их дополнение до 9. Получится новая бесконечная дробь с нолем целых. Попробуем найти ее в матрице, т.к по предположению в этой матрице должны быть все бесконечные десятичные дроби с нолем целых.
Строка Bm не совпадает с первой строкой матрицы, т.к. отличается от нее в первом знаке после запятой:
Bm1=9-A11, значит Bm1 не равно A11
Строка Bm не совпадает со второй строкой матрицы, т.к. отличается от нее во втором знаке после запятой:
Bm2=9-A22, значит Bm2 не равно A22
Строка Bm не совпадает с третьей строкой матрицы, т.к. отличается от нее в третьем знаке после запятой:
Bm3=9-A33, значит Bm3 не равно A33
и т.д. до бесконечности. Значит, строки Bm нет в матрице. Значит, предположение, что ВСЕ бесконечные десятичные дроби были пронумерованы натуральными числами и помещены в матрицу, оказывается неверным.
––
Теперь можно приступать к доказательству утверждения, близкого к теореме Геделя о неполноте:
"Существуют недоказуемые истины"
Сначала надо дать некоторые определения.
––
Я предполагаю известным, что такое "компьютерная программа", и буду называть ее просто "программа". Замечу только, что программу можно считать чисто логико-математической конструкцией лишь пока она находится в голове программиста или записана на бумаге. Но выполнение программы компьютером – это уже чисто физический процесс.
––
"Программа с входным параметром" – в данном случае это программа, которая в начале работы запрашивает у человека-оператора только одно целое число большее или равное единице, ждет ответа оператора, и после получения целого числа от оператора (в данном случае это число называется "значение параметра") молча выполняет заложенные в ней команды над числами до самого конца. При этом:
a.) Или программа при данном значении параметра через конечное время заканчивает работу, выдает на выход некое вычисленное ею целое число >=1 и останавливается.
b.) Или программа при данном значении параметра никогда не останавливается (работает вечно).
Причем у одной и той же программы с входным параметром при одном значении параметра может получиться случай a.), а при другом значении параметра может получиться случай b.).
(Вот простейший пример программы, которая никогда не остановится. Программа работает с одним целым числом. Если результат предыдущих вычислений – число четное, то программа прибавляет к нему единицу. Если нечетное – отнимает от него единицу. Программа должна закончить работу и выдать на выход результат вычислений, если этот результат делится без остатка на 3. Если такая программа получит на входе число 4, то она никогда не закончит работу, т.е. никогда не остановится.)
Чтобы программа могла исполняться компьютером, она должна быть написана с помощью определенного набора знаков, понятных данному компьютеру. Этот набор знаков всегда конечен и может быть назван "алфавитом". Предполагается, что знаки этого "алфавита" каким-нибудь образом упорядочены.
Будем считать, что все конечные тексты, составленные из знаков этого "алфавита", раз и навсегда упорядочены:
a.) По размеру, т.е. по количеству содержащихся в них знаков.
b.) При одинаковом размере по "алфавиту".
Такой способ упорядочения текстов гарантирует, что при их просмотре в указанном порядке за конечное число шагов дело дойдет до просмотра любого текста, хотя в целом множество конечных текстов бесконечно. (Этот способ упорядочения использует Гедель в своей знаменитой статье 1931 г. Правда, у Геделя в подробностях немножко не так, но в принципе аналогично.)
Допустим сначала, что каждая "Программа с входным параметром" при любом целом значении параметра >=1 за конечное время заканчивает свою работу и дает на выходе какое-то целое число >=1. (Это допущение ложное, т.к. каждый программист, к своему сожалению, по опыту знает, что программа не всегда заканчивает свою работу. Но допустим это для интереса, чтобы посмотреть, что получится.) В таком случае можно построить матрицу, такую что номер строки i соответствует порядковому номеру программы в списке конечных текстов (если считать только тексты, являющиеся "Программами с входным параметром"), а номер столбца j соответствует значению входного параметра. (Эта матрица похожа на матрицу Aij, описанную выше, только значения ее элементов не 0-9, а любые целые числа >=1). Число Aij – это то число, которое выдает на выходе i-я "Программа с входным параметром" при значении входного параметра, равном j. Тогда можно построить программу (назовем ее "Особая программа"), которая делает следующее:
– получив на входе число j, просматривает наш список конечных текстов и считает встречающиеся "Программы с входным параметром";
– дойдя до j-й по порядку "Программы с входным параметром" запускает ее на выполнение, давая входному параметру значение j;
– ждет, когда эта программа закончит свою работу и выдаст на выходе целое число >=1;
– выдает на свой выход число на 1 большее, и останавливается.
Теперь используем логику диагонального доказательства Кантора. "Особая программа" отличается:
– от 1-й "Программы с входным параметром" результатом работы при значении входного параметра, равном 1;
– от 2-й "Программы с входным параметром" результатом работы при значении входного параметра, равном 2;
– и т.д. до бесконечности.