Як комбінатор Y ілюструє "невідповідність обчислення лямбда"?


44

На сторінці Вікіпедії для комбінаторів фіксованих точок написаний досить загадковий текст

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

Чи я вступив у якийсь шпигунський роман? Що у світі мається на увазі під твердженнями, що -calculus є "непослідовним" і що це слід "сприймати з підозрою" ?λ


3
FWIW, цей пункт міститься у статті Вікіпедії з січня 2014 року, коли він був внесений у цю масову переписку майже всієї статті .
Ільмарі Каронен

Відповіді:


51

Він натхненний реальними подіями, але те, як заявлено, ледве впізнаваний і "слід розглядати з підозрою" - це нісенітниця.

Послідовність має чітке значення в логіці: послідовна теорія - це те, де не всі твердження можна довести. У класичній логіці, це рівносильно відсутності суперечності, тобто теорія суперечливаякщо і тільки якщо є заяватакимщо теорія доводитьякі його заперечення.AA¬A

Отже, що це означає щодо обчислення лямбда? Нічого. Обчислення лямбда - це система переписування, а не логічна теорія.

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

Це, однак, працює лише тоді, коли умовний доказ поєднується з доказом правильної гіпотези. Якщо у вас є умовний доказ, який передбачає а ви також маєте доказ , ви не можете їх об'єднати. Якщо ви хочете зробити таке тлумачення роботи лямбда-числення, вам потрібно додати обмеження, що до умовних доказів застосовуються лише докази належної гіпотези. Це називається системою типів , а обмеженням є правило введення тексту, яке говорить про те, що при передачі аргументу функції тип аргументу повинен відповідати типу параметра функції.n=3n=2

Переписка Каррі-Говарда паралель між типізованих числень і коректорів систем.

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

Введене числення, у якого є комбінатор з фіксованою точкою, такий як дозволяє будувати термін будь-якого типу (спробуйте оцінити ), тож якщо ви сприймете логічну інтерпретацію за допомогою листування Кері-Говарда, ви отримаєте суперечливу теорію. Див. Чи суперечить комбінатор Y проти листування Кері-Говарда? для отримання детальної інформації.YY(λx.x)

Це не має значення для чистого обчислення лямбда, тобто для обчислення лямбда без типів.

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

На закінчення:

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

2
Нічого собі, тут мені багато чого розпакувати. Дякую за детальне пояснення. Це займе у мене трохи часу, щоб спробувати все це обробити.
Бен І.

4
Технічно, перегляд нетипізований , як ип я збірний, ви можете зробити CH відповідність між безтиповою лямбда - обчисленням і логікою. Це просто дуже, дуже нудна (і, звичайно, непослідовна) логіка. Підтверджені помічники, як NuPRL, трохи замулили води. Мова об'єктів NuPRL містить нетипізоване обчислення лямбда, і ви можете легко визначити Y-комбінатор. NuPRL розбиває речі дещо інакше, тому у нього є система уточнення типу, а не система типів, і вправа полягає не в тому, щоб створювати чітко введені терміни, а виробляти введення слововведення.
Дерек Елкінс

Це тільки я, чи дивно нав'язувати парадигму "пропозиції як типи" на нетипізоване обчислення лямбда? Я завжди бачив , що люди говорять про логіку в Нетипізовані лямбда - обчисленні шляхом введення конкретних об'єктів , щоб бути логічними значеннями trueі false, і пропозиції були речі , які мали Булевозначний вихід. (І розглядалися тільки пропозиції по області речей , де він робить вихід A логічне значення).

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

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

6

Я хотів би додати його до того, що сказав @Giles.

Переписка Каррі-Говарда робить паралель між -термінів (точніше, типу з -терміни) і системи докази.λλ

Наприклад, має тип (де означає "функцію від до "), що відповідає логічному твердженню . Функція має тип , що відповідає . Ми можемо перетворити будь-який тип лямбда-числення в логічну тавтологію шляхом, у певному сенсі, «узгодження зразка» на функції.λx.λy.xa(ba)ababa(ba)λx.λy.xy(ab)(ab)(ab)(ab)

Проблема виникає, коли ми розглянемо комбінатор Y, визначений як . Проблема виникає тому, що ми очікуємо, що комбінатор Y, як комбінатор "виправлення точок", має тип (тому що він приймає функцію від типу до того ж типу і знаходить фіксовану- крапка для тієї функції, яка має цей тип). Перетворення цього в логічне твердження дає результат . Це суперечність:λf.(λx.f(xx))(λx.f(xx))(aa)a(aa)a

(aa)aaa(¬a¬a)(¬a)¬a¬a

Прийняття у системі типу призводить до того, що система типів є непослідовною. Це означає, що ми можемо будь-яке(aa)a

  • Заборонити такі типи, як в системі типів (це дає вам просто введений -calculus ) або(aa)aλ
  • Живіть із системою типу, яка є непослідовною як система логічного виведення.

1
CH відноситься до типів пропозицій, програм до доказів і навіть скорочень до доказів перетворень. Йдеться не лише про типи. Далі тавтології відповідають лише заселеним типам. - тип поліморфного обчислення лямбда, навіть якщо жоден термін не населяє його. Якщо припустити, що ви маєте на увазі такі типи, як , то прийняття таких типів цілком чудово, питання полягає в тому, чи є у цього типу мешканець чи ні. І навпаки, ми можемо додати примітивні терміни до STLC, які зроблять відповідну логіку непослідовною без розширення системи типів. a . ( a a ) aa,b.aba.(aa)a
Дерек Елкінс

@DerekElkins, які примітивні терміни? Крім того, якщо я правильно розумію, це просто припустити, що (a -> a) -> a завжди мешкає, що викликає непослідовність? Тож немає більше невідповідності мові програмування, яка вимагає підтвердження припинення? Або є якесь інше джерело неузгодженості в типовому чи лямбдальному обчисленні, яке набрав Хіндлі-Мілнер?
Hibou57

1
@ Hibou57 Примітивні терміни, тобто константи, як fix. Ви можете просто стверджують , що існує постійна для кожного типу . Це вже дасть вам непослідовну систему, що стосується СН, оскільки це означатиме, що кожен тип населений . Ви можете додатково додати -rules, щоб зробити обчислення, і це перетворило б, скажімо, STLC з натуралами в систему, повну Тьюрінга, але вам не потрібно додавати ці обчислювальні правила та систему все ще буде непослідовною. A f i x (λx.x)δ f i xfixAAfix(λx.x)δfix
Дерек Елкінс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.