Конструктивистская логика - это система, которая исключает Закон Исключенной Среды, а также Двойное Отрицание как аксиомы. Это описано в Википедии здесь и здесь . В частности, система не допускает доказательств от противного.
Мне интересно, кто-нибудь знаком с тем, как это влияет на результаты, касающиеся машин Тьюринга и формальных языков? Я замечаю, что почти каждое доказательство того, что язык неразрешим, основано на противоречии. И аргумент диагонализации, и концепция сокращения работают именно так. Может ли быть когда-нибудь «конструктивное» доказательство существования неразрешимого языка, и если да, то как он будет выглядеть?
РЕДАКТИРОВАТЬ: Чтобы быть ясным, мое понимание доказательств от противоречия в конструктивистской логике было неправильно, и ответы прояснили это.
Ответы:
Да. Вам не нужна исключенная середина, чтобы получить противоречие. В частности, диагонализация все еще работает.
Вот типичный аргумент диагонализации Конора МакБрайда. Эта конкретная диагонализация касается неполноты, а не неразрешимости, но идея та же. Важно отметить, что полученное им противоречие имеет форму не «P и не P», а форму «x = x + 1».
Конечно, теперь вам может быть интересно, допускает ли конструктивная логика «x = x + 1» как противоречие. Оно делает. Основным свойством противоречия является то, что все вытекает из противоречия, и, используя «x = x + 1», я действительно могу конструктивно доказать «x = y» для любых двух натуральных чисел.
Одна вещь, которая может отличаться в конструктивном доказательстве, - это способ определения «неразрешимого». В классической логике каждый язык должен быть либо разрешимым, либо неразрешимым; поэтому «неразрешимый» просто означает «неразрешимый». Однако в конструктивной логике «не» не является примитивной логической операцией, поэтому мы не можем выразить неразрешимость таким образом. Вместо этого мы говорим, что язык неразрешим, если допущение, что он разрешим, приводит к противоречию.
На самом деле, даже если «не» не является примитивом в конструктивной логике, мы обычно определяем «не P» как синтаксический сахар для «P можно использовать для построения противоречия», поэтому доказательство с помощью противоречия на самом деле является единственным способом конструктивно доказать утверждение вида «не P», такое как «язык L неразрешим».
источник
Если конструктивно говорить о доказуемости классических утверждений, то зачастую имеет значение, как мы их формулируем. Классически эквивалентные формулировки не должны быть эквивалентными конструктивно. Также важно, что именно вы подразумеваете под конструктивным доказательством, существуют различные школы конструктивизма.
Например, утверждение, утверждающее, что существует неисчислимая полная функция, было бы неверным в тех разновидностях конструктивной математики, которые предполагают тезис Черча-Тьюринга (т. Е. Каждая функция вычислима) в качестве аксиомы.
С другой стороны, если вы будете осторожны, вы можете сформулировать это так, чтобы это было доказуемо: для любого вычислимого перечисления полных вычислимых функций есть полная вычислимая функция, которой нет в перечислении.
Вы можете найти этот пост Андреем Бауэром интересным.
PS: Мы также можем взглянуть на диагонализацию с точки зрения теории категории. Видеть
источник
Я думаю, что доказательство количества элементов все еще имеет место, демонстрируя существование языков, которые не являются вычислимыми языками (поэтому определенно неразрешимы).
Непосредственное доказательство довольно прямолинейно, оно просто замечает, что машины Тьюринга кодируются в некотором конечном алфавите (может быть также двоичным), так что их много, и множество всех языков в фиксированном алфавите (может также снова быть двоичным) ) - это набор всех подмножеств набора строк в этом алфавите, т. е. набор мощностей счетного набора, который должен быть неисчислимым. Поэтому машин Тьюринга меньше, чем языков, поэтому что-то не вычислимо.
Мне кажется, что это достаточно конструктивно (хотя физически заниматься невозможно, это дает вам возможность указывать на некоторый набор языков и знать, что он не поддается вычислению).
Затем мы можем спросить, можно ли показать, что счетные и несчетные множества имеют разную мощность, в частности, избегают диагонализации. Я думаю, что это все еще возможно. Первоначальный аргумент Кантора также представляется достаточно конструктивным.
Конечно, это действительно должен проверить кто-то, кто знает гораздо больше о конструктивистской логике.
источник
Я думаю, что согласен с другими, что аргумент диагонализации является конструктивным, хотя из того, что я могу сказать, в некоторых кругах есть некоторые разногласия по этому поводу.
Я имею в виду, предположим, что мы смотрим на множество всех разрешимых языков. Я могу построить неразрешимый язык, используя диагонализацию. Стоит отметить, что я не считаю, что «конструктивизм» и «финитизм» - это одно и то же, хотя исторически я считаю, что это были связанные дуги.
Во-первых, я думаю, что все - даже конструктивисты - согласны с тем, что множество разрешимых языков исчислимо. Поскольку множество машин Тьюринга является счетным (мы можем кодировать все действительные ТМ, используя конечные строки), это соглашение следует довольно легко.
Технически, мы создали язык, который «не решаем»; будет ли конструктивист утверждать, что «неразрешимое» не следует путать с «неразрешимым» - интересный вопрос, но на который я плохо подготовлен для ответа.
Чтобы прояснить, я думаю, это демонстрирует следующее: мы можем конструктивно доказать, что существуют языки, не определяемые машинами Тьюринга. Как вы решите интерпретировать это в определенных рамках, это более сложный вопрос.
источник