Чи існують невідмінні мови в конструктивістській логіці?


24

Конструктивістська логіка - це система, яка знімає як аксіоми Закон виключеного середини, а також подвійне заперечення. Це описано у Вікіпедії тут і тут . Зокрема, система не дозволяє довести протиріччя.

Мені цікаво, чи знайомий хтось із тим, як це впливає на результати стосовно машин Тюрінга та формальних мов? Я зауважую, що майже кожен доказ того, що мова є невідрізним, покладається на доказ протиріччя. Як аргумент Діагоналізації, так і концепція скорочення працюють таким чином. Чи може коли-небудь бути "конструктивним" доказом існування нерозбірливої ​​мови, і якщо так, то як би це виглядало?

EDIT: Щоб було зрозуміло, моє розуміння доказу протиріччя в конструктивістській логіці було помилковим, і відповіді це прояснили.


5
Інтуїціоністична логіка не забороняє доказів, які говорять "Припустимо , виводить протиріччя, тому ". Це можна зробити за визначенням , як . Що ви не можете зробити, це "Припустимо, , вивести протиріччя, отже, ." ¬ ϕ ¬ ϕ ϕ ¬ ϕ ϕϕ¬ϕ¬ϕϕ¬ϕϕ
Майлз Рут

2
Ваша редакція на питання про "але все-таки дозволяє підтверджувати негативні твердження протиріччям" робить мою відповідь такою, що я лише повторюю те, що
запитувач

3
Замість того, щоб змінювати це вже відповідне запитання, щоб воно ставило дещо складніше запитання, як щодо створення (та відповіді) на окреме запитання?
гелісам

1
@gelisam Так, як запитувач, я точно не підтримую редагування. Я поверну це.
jmite

Відповіді:


18

Так. Вам не потрібна виключена середина, щоб вивести протиріччя. Зокрема, діагоналізація все ще працює.

Ось типовий аргумент діагоналізації Конора Макбрайда. Ця конкретна діагоналізація стосується незавершеності, а не невизначеності, але ідея така ж. Важливим моментом, що слід зазначити, є те, що суперечність, яку він виводить, має не форму "Р і не Р", а форму "х = х + 1".

Звичайно, зараз вам може бути цікаво, чи конструктивна логіка визнає "x = x + 1" як протиріччя. Це робить. Основна властивість суперечності полягає в тому, що все, що випливає з протиріччя, і, використовуючи "x = x + 1", я справді конструктивно можу довести "x = y" для будь-яких двох натуральних чисел.

Єдине, що може бути різним щодо конструктивного доказу, - це спосіб визначення "невизначеного". У класичній логіці кожна мова повинна бути або рішучою, або невизначною; тому "невирішається" просто означає "не вирішується". Однак у конструктивній логіці "не" не є примітивною логічною операцією, тому ми не можемо висловити невідповідність таким чином. Натомість ми говоримо, що мова не може бути визначеною, якщо припустити, що вона рішуча призводить до суперечності.

Насправді, незважаючи на те, що "не" не є примітивним у конструктивній логіці, ми зазвичай визначаємо "не P" як синтаксичний цукор, оскільки "P може бути використаний для побудови протиріччя", тому доказ суперечливістю насправді єдиний спосіб конструктивно доведіть твердження форми "не Р" типу "мова L не визначимо".


На мою думку, у вашій відповіді чітко не розмежовано закон виключеного середини ( ) та принцип незаперечення ( ). Останнє має місце в конструктивній / інтуїтивістській логіці. ¬ ( P ¬ P )P¬P¬(P¬P)
Майлз Рут

9

Якщо говорити про доказовість класичних висловлювань конструктивно, часто має значення те, як ми їх формулюємо. Класично еквівалентні рецептури не повинні бути еквівалентними конструктивно. Також має значення, що ви точно маєте на увазі під конструктивним доказом, є різні школи конструктивізму.

Наприклад, твердження про те, що існує незаперечна загальна функція, не було б істинним у тих ароматах конструктивної математики, які вважають тезу Церкви Тьюрінга (тобто кожна функція обчислюється) як аксіому.

З іншого боку, якщо ви обережні, ви можете сформулювати його таким чином, щоб воно було доказовим: для будь-якого обчислюваного перерахування загальних обчислюваних функцій існує загальна обчислювальна функція, яка не перелічена.

Ви можете вважати цю публікацію Андрія Бауера цікавою.

ps: Ми також можемо розглянути діагоналізацію з теоретичної точки зору категорії. Побачити


4

Я думаю, що докази кардинальності все ще зберігаються, демонструючи існування мов, які не піддаються обчислюванню (так, безумовно, не можна визначити).

Безпосередній доказ доволі прямо, він просто зауважує, що машини Тьюрінга кодуються деяким кінцевим алфавітом (може бути і двійковим), тому їх чимало, а набір усіх мов на фіксованому алфавіті (може бути також і двійковим знову ) - це набір усіх підмножин набору рядків над цим алфавітом - тобто набір потужності лічильного набору, і повинен бути незліченним. Тому машин Тюрінга менше, ніж мов, тому щось не можна обчислити.

Мені це здається достатньо конструктивним (хоча фізично переслідувати це було б неможливо, це дає вам змогу вказувати на якийсь набір мов і знати одну з них не можна обчислити).

Тоді ми можемо запитати, чи можна показати, що налічувані та незлічувані множини відрізняються кардинальністю, зокрема, уникають діагоналізації. Я думаю, що це все-таки можливо. Оригінальний аргумент Кантора також здається належним чином конструктивним.

Звичайно, це дійсно потрібно перевірити тим, хто знає набагато більше про конструктивістську логіку.


3

Я думаю, що я погоджуюся з іншими, що аргумент діагоналізації є конструктивним, хоча з того, що я можу сказати, є певна незгода щодо цього в деяких колах.

Я маю на увазі, припустимо, що ми дивимося на набір усіх мов, що вирішуються. Я можу побудувати нерозбірливу мову за допомогою діагоналізації. Варто зазначити, що я взагалі не вважаю "конструктивізм" та "фінітизм" однаковим, хоча історично я вважаю, що це були дуги, що пов'язані між собою.

По-перше, я думаю, що всі - навіть конструктивісти - погоджуються, що набір рішучих мов можна підрахувати. Оскільки набір машин Тьюрінга є підрахунковим (ми можемо кодувати всі дійсні ТМ за допомогою кінцевих рядків), ця угода дотримується досить легко.

Так як безліч нерозв'язних мов лічильно, ми можемо припустити деякий перерахування цих мов: . Ось процедура, яка генерує мову, яка не є в наборі:L1,L2,...,Lk,...

  1. Розглянемо рядок .0i
  2. Якщо , то наша мова не повинна містити .0 i0iLi0i
  3. Якщо , то наша мова повинна містити .0 i0iLi0i

Після го кроку нашою мовою не може бути жодна з мов . Після довільної (або потенційно нескінченної) кількості кроків, ми не змогли знайти мову в наборі, щоб відповідати тій, яку ми тільки що створили.л 1 , л 2 , . . . , Л нnL1,L2,...,Ln

Таким чином, технічно ми створили мову, яку "не можна вирішити"; чи може конструктивіст стверджувати, що "не вирішується" не слід плутати з "невирішеним" - цікаве питання, але таке, на яке я не готовий відповісти.

Для уточнення, що, на мою думку, це демонструє, полягає в наступному: ми можемо конструктивно довести, що існують мови, про які не визначили машини Тьюрінга. Як ви вирішите трактувати, що в певних рамках - складніше питання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.