disclaimer: я дилетант в матлогике, и по этому буду говорить общо, но при этом мне кажется, что при необходимости я смогу перейти к конкретным формальным выражениям (но мне лень). Если это не так - скажите.
В начале я хотел спросить, верно ли мое мировоззрение:Математика распадается на 2 области:
- алгоритмически невычислимую
- и алгоритмически вычислимую, но экспоненциально сложную
Возьмем какой-нибудь набор (непротиворечивых, или кажущихся таковыми) аксиом, напишем алгоритм, который бы генерировал верные утверждения (сначала все утверждения с доказательствами, длина которых не превышает n, потом длина которых не превышает n+1, потом n+2 и т.д.)
По т.Геделя он не сможет сгенерировать некоторые утверждения (и их отрицания).
Получается математика - искусство подбирать новые (непротиворечивые) наборы аксиом, в которых можно было бы сгенерировать утверждения, которые в предыдущих наборах аксиом были недоказуемыми.
Но какой толк от такого алгоритма с практической точки зрения (даже если не рассматривать недоказуемые утверждения)?
Ведь ни кто не будет просматривать все эти утверждения, да и физической памяти на них ни какой не хватит.
Рациональнее было бы сделать алгоритм, который на вход получал бы некоторое утверждение и искал бы доказательство этого утверждения или его отрицания путем перебора всех доказательств сначала длины n, потом n+1, потом n+2 и т.д.
Такой алгоритм рано или поздно найдет доказательство заданного утверждения, если оно, конечно, доказуемо.
Но количество всевозможных доказательств растет экспоненциально с их длиной, и на классических компьютерах на практике эта затея неосуществима, в результате чего эти задачи приходится решать тоже своей головой.
(Конечно некоторые частные случаи утверждений можно доказать за полиномиальное время на классическом компьютере, такие как проблема 4 красок, но в общем случае мне не известно об алгоритмах поиска произвольного доказательства, работающих быстрее чем за экспоненциальное время.)
Таким образом получается, что математика распадается на 2 области:
- алгоритмически невычислимую(недоказуемую)
- и алгоритмически вычислимую, но экспоненциально сложную
Но после создания квантового компьютера, на котором на практике можно будет вычислять экспоненциально сложные задачи перебора, помимо того, что полетит вся криптозащита, также многие математические задачи (из второй области) будут доказаны на нем.
Но потом меня чё-то еще пропёрло:Но изначально для заданного утверждения мы не знаем, в какую область оно попадет.
А как доказывают недоказуемость?
Подбирают новые аксиомы (аксиоматику), в которой предыдущие аксиомы верны (т.е. или являются подмножеством новых аксиом или являются теоремами в новой аксиоматике), и доказывают новое утверждение: что утверждение, которое пытались доказать ранее - недоказуемо в предыдущей аксиоматике.
Но ведь множество наборов(конечных множеств) аксиом - счетно.
И для каждого набора (в котором старые аксиомы верны*) надо доказать новое утверждение.
Т.е. как-будто мы запускаем и запускаем и запускаем счетное количество машин Тьюринга, которые начинают искать доказательство нового утверждения в новом наборе аксиом.
Очевидно мы можем сделать это на одной МТ (псевдо-параллелизм). (Точно так же как декартово произведение N*N счетно)
*Перед доказательством нового утверждения нужно доказать предыдущие аксиомы.
Этот этап опять можно запустить (псевдо)параллельно, и если они все доказуемы, то этот этап рано или поздно будет завершен, и можно будет перейти к поиску доказательства нового утверждения, а если нет, то это просто замедлит работу других (псевдо)параллельно выполняющихся МТ, но нам как-то
параллельно.
А т.к. каждое утверждение либо доказуемо либо недоказуемо (в исходной аксиоматике), то мы можем запустить 2 МТ, одна из которых будет пытаться доказать его, а другая - искать аксиоматику, в которой будет доказано, что оно недоказуемо.
Раз уж мы счетное кол-во МТ смогли запустить на одной, то и 2 МТ - тоже сможем.
Если бы мы могли для любого утверждения
- либо его доказать,
- либо найти систему аксиом (в которой верны предыдущие аксиомы), в которой могли бы доказать недоказуемость этого утверждения (в исходной аксиоматике),
то получившаяся МТ гарантированно остановилась бы (для любого исходного утверждения), и ответила бы тем самым на вопрос, доказуемо ли данное утверждение или нет.
А т.к. это эквивалентно ответу на вопрос "остановится ли алгоритм, который пытается доказать исходное утверждение в исходной аксиоматике", то это было бы решением проблемы остановки, а его не существует.
Значит, существуют утверждения, которые не только недоказуемы, но и доказать недоказуемость которых невозможно, причем ни в одной аксиоматике (т.е. в конечном наборе исходно верных утверждений) (в которой верны предыдущие аксиомы).
По моему во всем вышеизложенном доказательстве можно убрать требование того, чтобы в новой аксиоматике были верны старые аксиомы.
Т.е. я просто попытался написать алгоритм, доказывающий недоказуемость
Я хотел было назвать это теоремой о неполноте неполноты,
Но на лицо явное противоречие, т.к. мы к старому набору аксиом можем добавить аксиому о том, что исходное утверждение недоказуемо в исходной аксиоматике
Может я не учел, что аксиоматика должна быть непротиворечивой...
Но что на одной МТ можно псевдопараллельно запустить счетное кол-во других МТ (стартовое состояние этих МТ генерируется еще одной МТ-менеджером, а остановка происходит как только произойдет остановка хотя бы одной МТ(ну может не сразу, а с конечной задержкой)) - я проверил, теперь это мне действительно очевидно.
Но общий вектор мысли состоит в том, что что поиск доказательства, что поиск аксиоматики с доказательством недоказуемости (заданного утверждения в заданной аксиоматике) - !одинаковые!(в том смысле, что их оба можно запрогать) алгоритмические процессы, которые может быть никогда и не остановятся.
Или разные?
! |
FeelUs Предупреждение за нецензурную лексику // Lia |