Шрифт:
Интервал:
Закладка:
Конструктивное направление математики получается последовательным распространением на другие разделы идей и результатов конструктивной математической логики. Конструктивную математическую логику некоторые считают не самостоятельным направлением, а философской, «материалистической» интерпретацией интуиционистской математической логики. Основания для этого есть, но интуиционистских логик можно построить много, не каждая из них соответствует идеям конструктивизма. Основное отличие от классической логики — отказ от аксиомы, разрешающей автоматически снимать двойное отрицание. То есть в конструктивной математике «ложно, что ложно» еще не означает «истинно», «не может не быть объекта» с какими-то свойствами еще не значит, что такой объект есть и с ним можно что-то делать дальше. Отсюда следует отказ от безусловной истинности закона исключенного третьего — «суждение либо ложно, либо истинно», «либо объект есть, либо его нет». В конструктивной математике для снятия двойного отрицания необходимо указать «способ» построения объекта, для истинности суждений вида «исключенного третьего» необходимо указать способ определения какая именно из альтернатив верна «ложно» или «истинно». «Способ» — это алгоритм в одной из «полных» алгоритмических систем — машины Тьюринга, нормальные алгорифмы, рекурсивные функции (Черч), ассоциативные исчисления и т.д. Для этих алгоритмических систем доказана эквивалентность и фактически (для каждой) сформулированы аксиомы, что более мощных алгоритмических систем не существует. Вообще при конструктивном подходе отказываются рассматривать объекты, не имеющие описания каким-то конечным текстом. «Бесконечные» по своей «классической» природе объекты вроде числа «пи» описываются алгоритмами их порождения (скажем, алгоритмом, выдающем по N приближение к «пи» с точностью N знаков). Вот тут и начинается самое интересное.
Появляются невычислимые функции, неразрешимые алгоритмические проблемы, оные можно классифицировать по сложности разрешения, конструровать неразрешимые проблемы с заранее заданной сложностью разрешения. Сложность разрешения неразрешимой проблемы можно интерпретировать как количественную оценку Божьей помощи (в литературе использовался термин «оракул»), необходимой для разрешения ограниченного варианта проблемы. Скажем, есть алгоритм с одним числовым параметром и мы пытаемся узнать, на каких числах он зациклится. Есть алгоритмы, для которых это сделать невозможно (таковые, например, легко строятся из интерпретаторов языков программирования). Для решения задачи для всех входных чисел меньше N потребуется «Божья» подсказка одной длины, для чисел меньше М (М > M) — другой. Получаемая функция и называется сложностью разрешения неразрешимой проблемы. Можно также количественно исследовать универсальность Божьей помощи — предположим Бог помогает нам подсказками для решения одной неразрешимой проблемы, помогут ли они (если да, то насколько) при решении другой неразрешимой проблемы. Ладно, это уже теория алгоритмов. По жизни мне приятно считать, что конструктивная логика отражает неоднозначность операции отрицания (помните в диалектике закон отрицания отрицания).
Конструктивная математика, кроме распознавания неосуществимости (невычислимости) объектов, интересна еще тем, что разрешает оперировать лишь со счетным множеством объектов (поскольку счетно множество всех конечных текстов), но достаточна для полного описания областей математики, в которых количество объектов традиционно считается несчетным. Например, конструктивное действительное число задается парой алгоритмов и потому их количество счетно. Несчетности классических действительных чисел в конструктивной математике соответствует «неперечислимость» конструктивных действительных чисел — невозможность построения алгоритма, который по параметру N будет выдавать какое-то действительное число и когда-нибудь, при каком-то N, выдаст каждое действительное число. Это невозможно, даже если разрешить выдавать действительные числа с повторами. Помните классическое «диагональное» доказательство несчетности действительных чисел? «Предположим, что счетно и выпишем их десятичные представления одно под другим». Так вот счетность одно, а для «выписывания» требуется больше чем счетность, требуется перечислимость, должен быть алгоритм перечисления, кого на первое место поставить, кого на второе и т.д. Так что классическое доказательство несчетности не проходит из-за отсутствия алгоритма перечисления действительных чисел. Жить с конструктивной математикой, конечно, сложнее, чем с классической, но теорема Левенгейма—Скулема о том, что всякая непротиворечивая теория имеет счетную модель, позволяет надеяться на полноту конструктивного подхода.
В принципе с конструктивным подходом можно выразить всё, что угодно, но вряд ли кто это делать будет. А если кто и «выразит», то вряд ли кто сие «выражение» читать будет, разве что ради любопытства. Если конструктивные вещественные числа задаются парой алгоритмов (генератор приближений + оценщик их сходимости), то можете представить себе как описываются функции вещественных переменных. Если еще учесть, что распознавание равенства конструктивных вещественных чисел является неразрешимой алгоритмической проблемой... А так как конструктивисты не отказываются от анализа невычислимых (или еще не вычисленных) объектов, главное, чтобы у них имелось конечное описание. Если доказано, что «не может не быть» функции с какими-то свойствами, то это доказательство и есть ее описание». Несуществование в конструктивизме обычно получается при переходе от единичного «не может не быть» к их серии. Скажем, для любой программы и конкретного набора ее входных данных не может не быть ответа на вопрос, зациклится ли она. Вы скажете — зациклится, я скажу — нет, и один из нас ответит верно, снимет двойное отрицание для единичного случая. А вот алгоритма, который сможет давать верные ответы для любых входных данных (разрешит проблему распознавания зацикливания для этой программы), может и не быть.
В.Н. Левин:
Самое старое известное доказательство бесконечности простых чисел было дано Евклидом в «Началах» (книга IX, утверждение 20). Его доказательство может быть кратко воспроизведено так. Представим, что количество простых чисел конечно. Перемножим их и прибавим единицу. Полученное число не делится ни на одно из конечного набора простых чисел, потому что остаток от деления на любое из них даёт единицу. Значит, число должно делиться на некоторое простое число, не включённое в этот набор.
Евклид, я считаю, должен из своего рассуждения сделать вовсе не тот вывод, который он сделал (будто множество всех простых чисел — бесконечно). Свой вывод — я берусь откорректировать Евклида — я привожу ниже.
За основу беру только что указанный текст Евклида, добавляю и выделяю слова, корректирующие ход ЕГО мысли и получаю следующее:
«П Р Е Д С Т А В И М, что количество простых чисел конечно. (ПРЕДСТАВИМ себе их ВСЕ). Перемножим (ВСЕ, ПРЕДСТАВЛЕННЫЕ конечным набором простые числа) и прибавим (к ВООБРАЖАЕМОМУ результату) единицу. Полученное число не делится ни на одно из (ПРЕДСТАВЛЕННОГО) конечного набора простых чисел, потому что остаток от деления на любое из них даёт единицу. Значит, полученное число должно делиться на некоторое простое