Ультраконструктивная математика

С точки зрения «математика» актуальная бесконечность — это вполне нормальная штука, с помощью которой всё клёво объясняется.

Ну, в теории объясняется. В теории, которую практика только портит.

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

Так, например, некий тезис из «теории множеств» в её Канторовском и Цермело-Френкелевском варианте говорит о том, что вещественных чисел «больше», чем натуральных. То есть не существует способов пронумеровать вещественные числа.

Само слово «пронумеровать» тут означает хрен знает что, причём даже если заменить его словом «сопоставить каждый элемент некого множества с элементом множества натуральных чисел». Ведь если и тех и других чисел бесконечно много (в смысле актуальной бесконечности), то мы в принципе не можем сделать список этих чисел.

А что тогда можем? Ну, в реальности мы можем написать программу, которая будет столько раз выдавать следующую пару, сколько бы раз мы её ни попросили дать нам ещё одну.

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

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

В околоматематической философии вместо этого предполагается, что числа просто как-то там где-то там сопоставлены. Где именно, это как бы за кадром. Сопоставлены и всё, чего вы придираетесь?

То есть тут надо думать, что они именно что где-то лежат. Ну да, с программой такое слишком очевидно абсурдно, поэтому мы будем думать не про программу, а про некую «математические функции», «пространства», «поля» и т.п. Главное, чтобы это было невозможно пощупать.

В реальности функция — это процесс вычисления, который мы для краткости и удобства использования как-то назвали. Что на компьютере, что на бумажке, однако для получения результата надо взять описание работы функции и пошагово воспроизвести некие действия.

Причём некоторые из них можно распараллелить — например, если нам надо найти сумму квадратов натуральных чисел от одного до ста, то мы можем предложить Васе возводить в квадрат чётные числа, Пете — нечётные, а Коле — суммировать то, что они уже посчитали к этому моменту. Однако даже если суммировать кроме Коли будет ещё и Иннокентий (например, один квадраты чётных, а другой — квадраты нечётных), то всё равно, чтобы узнать финальную сумму, её должен будет вычислить кто-то один. Предварительно дождавшись, пока все остальные досчитают всё остальное.

То есть, как ни поверни, а в реальности результат функции вычисляется по шагам. Хотя бы один раз вычисляется — после этого его и правда можно где-то запомнить для этих параметров и не вычислять заново. Если, конечно, эта функция такова, что одни и те же параметры всегда дают один и тот же результат.

В общем, реальные функции — это вполне конкретный и поддающийся формальному однозначному описанию процесс вычислений.

В околоматематической же философии — это «отображение одного множества на другое». Где это отображается? Как на это посмотреть? А никак. Оно «за кадром»! Не спрашивайте.

Но лично мне спросить как раз очень хочется. Поскольку в любом «за кадром» мне видится Петрик с его «просто поверьте, поскольку понять это невозможно». То есть наипалово. Причём, быть может, наипалово заодно и самого себя — у тех, кто уже «просто поверил», в результате чего не рефлексирует, а распространяет.

Оно может казаться «очень умным», «глубоким», «не для средних умов» и т.д., однако все реально работающие вещи, которые я когда-либо встречал, отлично излагаются довольно простыми словами, и, хотя детали в этих вещах можно изучать десятилетиями, сама их основа требует на своё понимание довольно мало времени.

А всё «очень глубокое, не для средних умов» почему-то всегда остаётся строго на бумаге, не воплощаясь ни в какие конкретные штуки, типа возможности быстро написать работающую программу, рассчитать поведение жидкости, вырывающейся из пробоины, или параметры траектории космического корабля.

Я вам точно говорю, из сабжевых «теорий множеств» никаких практических выводов не будет сделано вообще никогда. Они так и будут плодить лишь новые статьи и доклады о следующем решительном прорыве в познании необнаружимого. И заодно псевдо-осмысленные спекуляции на тему важности количества ангелов на кончике иглы для интеллектуального прогресса человечества.

Просто потому, что мы не просто «пока ещё не знаем, где это можно применить», но оно в принципе никогда не может быть применено. Прямо по своему построению. Оно, вообще говоря, даже описать ничто не может. Принципиально, по своему построению не может.

На этом фоне даже «ангелов» и «дух» более реально отыскать в этой вселенной, чем те штуки, о которых идёт речь в околоматематической философии.

Вот смотрите, любой текст — это, по сути, число: ведь именно в таком виде он хранится в памяти компьютера — как последовательность битов, которую при желании можно единообразно трактовать как позиционную запись.

Любой осмысленный текст любой теории — тоже число.

Любой текст, позволяющий отличить некоторое число от какого-то другого, — тоже число.

То есть определение любого числа в любом виде — это натуральное число, пусть и записанное в виде текста на каком-то языке. Именно «любого числа», а не «любого натурального».

В простейшем случае определение числа — последовательность цифр, составляющих это число.

Однако таким текстом может быть запись «вещественный квадратный корень из двух» (то есть определить число, у которого потенциально бесконечное количество цифр в позиционной записи, тоже можно). Или текст программы, которая выдаёт каждую следующую цифру десятичной записи числа. Или описание свойств, которым удовлетворяет только одно число: например «корень уравнения x + 3 = 5».

То есть «определений чисел» не может быть «больше», чем натуральных чисел.

Сказав, «вещественных чисел “больше”, чем натуральных», мы тем самым сказали «чисел больше, чем определений чисел».

То есть мы сказали, что существуют такие числа, которые не могут быть записаны ни как конечная последовательность чисел, ни как перечень свойств, ни как алгоритм получения каждой следующей цифры. Эти числа не могут быть решением никакой задачи или результатом какого-то физического процесса с заданными параметрами.

Их вообще нельзя где-либо обнаружить, как-то получить или даже просто опознать. Но в околоматематической философии они всё равно «существуют».

Что, блин, означает слово «существуют» в этом контексте?

Что это как не утверждение «принципиально необнаружимое существует»?

Чем это вообще отличается от «существования ангелов», «духа», «божественного начала»?

Да ничем. Но зато «глубоко» и «очень тонко». Петрик, вот, лженаучен, необнаружимые приборами «информационные эффекты гомеопатических доз» лженаучны, ангелы лженаучны, а вот существование принципиально необнаружимых чисел и даже их изучение — Ок, всё в порядке.

Дальше больше. В теореме Гёделя и прочих подобных рассуждениях мы снова натыкаемся на «хрен знает что хрен знает где». Там подразумевается, что есть «некая функция», которая неизвестно каким перебором всех возможных трансформаций выражения находит дорожку от аксиом к утверждению. Поскольку функция — «некая», а не «реализованная на языке программирования», то ей можно приписывать какие угодно свойства, причём можно даже менять их на ходу. Так, например, «некая функция» может вызывать сама себя, хотя пару абзацев назад она умела только заменять один текст на другой.

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

Потом ещё интереснее. Предполагается, что для того, чтобы сделать вывод о поведении этой функции, нам не надо знать, как она работает. Ведь это не процесс вычисления, а «отображение». Понимаете, множества где-то там сразу отобразились. Где-то. Как-то.

Правда, поблизости можно встретить некие слова о том, что «функция никогда не закончит свою работу».

Хм. Странно. В одном месте это «сразу отображение», а в другом всё-таки процесс.

Удобно, чо.

Но даже когда оно — «процесс», этот процесс обладает неопределёнными свойствами. В частности, почему-то считается, что если цепочка преобразований существует, то функция её гарантированно найдёт, даже если количество возможных преобразований бесконечно. Ведь у нас актуальная бесконечность, чего там. С ней всё возможно.

Однако рассматривай мы это как бесконечный процесс, ошибочность такого предположения была бы сразу очевидна: в зависимости от способа работы эта функция вполне может никогда не найти даже существующую цепочку.

Возьмём всего два правила замены:

«что угодно» → «что угодно + 0»

«что угодно» → «что угодно * 1»

Начнём со строки «x». Верно ли, что «x = x * 1»? Существует ли цепочка замен от «x» к «x * 1», которая подтвердит, что для данной «системы аксиом» данное соотношение верно?

Конечно, существует — вон же она, прямо во втором правиле.

Найдёт ли её функция, которая ищет цепочки? Ну, если вы околоматематический философ, то для вас ответ «да». Актуальная бесконечность же, всё такое.

Но если вы умеете программировать, то для вас ответ: «зависит от реализации».

Причём речь не идёт о реализации с ошибками — совершенно безошибочная реализация тоже вполне может никогда не найти сабжевую цепочку.

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

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

Да-да, от порядка проверки в реализации функции зависит результат работы этой функции. Поскольку в реальности тут бесконечный процесс, а не абстрактное «отображение» с «актуальными бесконечностями».

На первом шаге мы при помощи первого правила из «x» получим «x + 0». Потом попробуем модфицировать это первым же правилом и получим «x + 0 + 0». И так мы будем продолжать сколь угодно долго, никогда не попробовав второе правило.

Оптимальная ли это реализация? Наверно нет. Но она без ошибок. Просто не соответствует нашим желаниям в данном конкретном случае.

При попытке это запрограммировать это очевидно. Да, впрочем, оно очевидно даже при попытке подумать, как это запрограммировать. Но в области околоматематической философии можно целый век рассуждать об этой гипотетической функции, не замечая вот этого очевидного.

Примерно так и обстоят дела. Стивен Вольфрам со своей фирмой за десять лет разработал полный язык математической записи, не требующий никакого додумывания, понимания контекста и вставки пояснений на разговорном языке. Параллельно ему то же самое сделал ещё с десяток коллективов. Зато математические философы уже почти сто лет делают доклады о существовании необнаружимого и ангелах на кончике иглы.

Есть направление в математике под кодовым названием «конструктивная математика», краткий смысл которой в том, чтобы рассматривать не философские абстракции, а только алгоритмы получения каких-то результатов. Его критикуют за то, что «с таким подходом многие доказательства становятся очень сложными, а то и невозможными вообще».

Ну так, да, чем больше вольностей себе позволяешь, тем проще рассуждать про ангелов на кончике иглы, вселенские информационные поля и про существование реального результата у бесконечной рекурсии.

Теорему Пифагора доказать всё так же легко, всё так же легко доказать то, что результатом интегрирования непрерывной на отрезке функции является первообразная плюс константа, всё так же легко доказать то, что что корень из двух не может быть представлен в виде рациональной дроби, но вот чо-то про существование необнаружимого как-то тяжело становится. Вот ведь незадача!

В этом плане я бы предложил ввести «ультраконструктивную математику». Её смысл в том, что если ты не можешь это запрограммировать, то сразу нафиг. Принесёшь программу — тогда поговорим. Нет программы — нет предмета для разговора. Можешь взять готовый язык, можешь разработать свой собственный, можешь модифицировать существующий, но на каком-то компьютере это должно запускаться, чтобы мы могли проверить работу твоей концепции на примерах, а также посмотреть однозначно трактуемый текст всех твоих рассуждений.

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

Прахом пойдут все «актуальные бесконечности» и построенные на их основе «теории множеств». Прахом пойдут все бесконечные рекурсии, логические якобы парадоксы и Ахиллесы с их черепахами. Но зато прекратится подсчёт ангелов на кончике иглы и глубокие рассуждения о необнаружимом.

Да, вы можете запрограммировать «операции с текстами», трактуя оное как «теорию множеств». Вы можете запрограммировать «потенциально бесконечное множество» — то есть такой объект, который вам при каждом «дай мне следующий элемент» будет его давать. Вы можете аналогичным образом сделать бесконечный процесс, который сколь угодно долго раз за разом будет выводить в консоль какую-то строку. Вы можете запрограммировать операции пересечения и объединения списков, не требующие того, чтобы эти списки уже были созданы в тот момент, когда вы программируете эти операции. Вы можете запрограммировать операцию объединения критериев принадлежности к множеству. И операцию создания нового списка из любого другого списка по любому критерию. Да, если критерий окажется невычислимым для какого-то элемента, то и сам процесс создания свалится с эксепшеном, но вы это можете сделать.

Но при этом вы не можете запрограммировать «актуально бесконечное множество». Не можете запрограммировать «существующие, но необнаружимые числа». Как не можете запрограммировать «дух» и «ангелов».

Поэтому сразу нафиг — вот верный подход.

 

Материал: lex-kravetski.livejournal.com/684385.html

  • avatar
  • 1
  • .
  • +4

Больше в разделе

1 комментарий

avatar
Искусственный интеллект начал осознавать свою ущербность.
  • 1GR
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.