Функції, які ввели лямбда-числення, неможливо обчислити


12

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

Оскільки я початківець, вдячність буде певна.

Дякую.

Редагувати: набравши лямбда-калькуляції, я мав намір дізнатися про System F та просто набране лямбда-числення. Під функцією я маю на увазі будь-яку обчислювану функцію Тьюрінга.


Для -calculi існує багато дисциплін, що стосуються введення тексту , і відповідь на ваш запит частково залежить від того, який вибір дисципліни введення тексту ви маєте на увазі. Це також залежить від того, що ви розумієте під функцією. Одним із прикладів різниці є те, що вводити дисципліни, такі як System F, можна лише вводити нормалізуючі програми, тоді як нетипізований λ -рахунок містить ненормалізуючі терміни. λλ
Мартін Бергер

Я думав про Систему F та просте обчислення лямбда. Під функцією я маю на увазі функцію тюрінга, що обчислюється.
Тимофій Закхарі

Відповіді:


15

Гарний приклад наводить Godelization: в обчисленні лямбда, єдине, що ви можете зробити з функцією, це застосувати її. Як результат, немає можливості записати закриту функцію типу , яка бере аргумент функції і повертає код Годеля для неї.(NN)N

Додавання цього як аксіома до арифметики Хейтінга зазвичай називається "конструктивною тезою Церкви" і є сильною антикласичною аксіомою. А саме, послідовно додавати його до HA, але не до арифметики Peano! (В основному, це класичний факт, що кожна машина Тьюрінга зупиняється чи ні, і немає обчислювальної функції, яка б свідчила про цей факт.)


Я не розумію, наскільки це відповідає теорії розширення: візьміть f і g екстенсіонально рівними, але з різними реалізаціями і, отже, різними кодами godel. Чи повертає ваша функція однакове число для f і g?
cody

3
Це не відповідає розширеності! Однак у HA і є логічні сполучники, а не функції / записи. Тому вони повинні бути реалізованими, але їх реалізатори не повинні бути розширеними. Андрій Бауер є експертом у цій справі, тому якщо ви задасте питання, ви обов'язково отримаєте хорошу відповідь.
Ніл Крішнасвамі

11

Найпростіша відповідь дає той факт, що набрані лямбда-обчислення відповідають логіці (просто набране лямбда-числення -> логіка предиката; система f -> логіка другого порядку) і послідовна логіка не можуть довести власну послідовність.

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

Застереження 1: Якщо логіка другого порядку є непослідовним, це може бути можливим , щоб написати в системі F ... і / або може же не бути можливості запису F в безтипових лямбда - обчислення - ви могли б написати що - то, але це не може завжди припиняється, що є критерієм "обчислювальної".ff

Застереження 2: Іноді під "просто набраним лямбда-численням" люди мають на увазі "просто набране лямбда-числення з оператором з фіксованою точкою або рекурсивними функціями". Це був би більш-менш PCF , який може обчислити будь-яку обчислювальну функцію, як і нетипізоване обчислення лямбда.


10

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

Звичайно, ви завжди можете продовжити просто набраний -рахунок, щоб він відповідав потужності Y , але тоді ви змінюєте правила гри.λY


Чомусь у мене було в голові, що ти можеш зробити Акермана в Системі F ...
Роб Сіммонс,

@Rob, як я розумію, Андрій не каже, що це не так.
Каве

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

О, так, я просто був німим. (Оскільки питання було досить неоднозначним між розмовою про System F і розмовою про STLC, я вибрав більш сильну систему і забув про простіше питання.)
Роб Сіммонс,

Функція Акермана в -калькулюсі дорівнює λ m . m ( λ f n . n f ( f 1 _ ) ) s u c . Відповідно до виводу типу, який я побудував у цьому семестрі, він має простий тип: ( ( ( ( ( f e ) f e ) h ) ( ( ( ( f e ) f λλм.м(λfн.нf(f1_)) суch g ) g ) ( ( ( b c ) a b ) ( b c ) a c ) d ) d , що є жорстоким, але можливо правильним . Проблема STS - це не Ackermann - це, наприклад, моделювання машини Тьюрінга. Ви просто не можете цього зробити безкомбінатора Y. (((((fе)fе)год)((((fе)fе)год) годг)г)(((бc)аб)(бc)аc)г)гY
Франсіско Мота

6

Просто набране лямбда-числення насправді напрочуд слабке. Наприклад, він не може розпізнати звичайну мову . Я ніколи не знайшов точної характеристики набору мов, які STLC може розпізнати, хоча.а


5
Я думаю, що обчислюється залежить від типів, на які ти дивишся. Коли ви представляєте натурали над типом , де p - базовий тип, і приймаєте рівність як бета-рівність, визначальними функціями є розширені многочлени (поліноми + якщо-то-інше). IIRC, Schwichtenberg довів це, хоча я ніколи не читав його оригінальний документ (німецькою мовою). (Я думаю, що назва статті в перекладі - "Визначні функції в набраних лямбда-калькуляторах", 1976 р.)(pp)ppp
Ніл Крішнасвамі

2
@ Ніл. Трохи кращим перекладом було б Визначні функції у -калькуляції з типамиλ . Ви можете завантажити його тут , довжиною всього дві сторінки. Чи відомо, що відбувається в інших типах, з іншими поняттями рівності або з іншими кодуваннями натуральних чисел?
Мартін Бергер

@Marting: Дякую! Зараз я живу в Німеччині, тому це приємний додатковий стимул практикувати свою німецьку мову. :)
Neel Krishnaswami

4

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

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

Ці межі дають вам "природні" приклади функції, які не можна набрати в цій фіксованій лямбда-обчисленні: всі арифметичні функції, які асимптотично перевершують цю межу.

Якщо я правильно пам'ятаю, терміни , набрані в просто типизированного лямбда-числення можуть бути оцінені в баштах експонентний: O(2^(2^(...(2^n)..); Функція, що росте швидше, ніж усі подібні вежі, не буде виразною в цих розрахунках. Система F відповідає інтуїтивістській логіці другого порядку, тому обчислювальна потужність просто величезна. Щоб застосувати силу обчислення навіть більш потужних теорій, ми зазвичай міркуємо з точки зору теорії множин та теорії моделей (наприклад, які порядки можна побудувати) замість теорії обчислюваності.


0

Δ=λх.ххΔΔβ ΔΔΔАА=АА


λАААА

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

ΔΔΔΔ

@Kaveh Чому є такий тип A, що A \ident A \rightarrow Aне дивно? Мені це звучить абсурдно, що я не помічаю?
Martijn

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