Що таке λ-обчислення по суті?


11

У мене є те, що я б назвав філософським питанням про λ-обчислення.

Коли ви досліджуєте λ-обчислення, ви здивуєтеся, побачивши все, що ви можете там зробити. Ви можете визначити цілі числа, арифметичні операції, булеві, висловлювання "if-then-else", цикли, рекурсивні функції тощо. Я вважаю, що це було обчислено завершено.

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

Тож як можна отримати результат з обчислень?

Припустимо, результат вираження - функція f. Ви хочете перевірити, чи fочікували ви. Ви можете перевірити його, взяти відому вам функцію, застосувати fдо неї та отримати g. Але щоб перевірити, gчи правильно, тепер потрібно перевірити, що gробить. І ти починаєш все спочатку. То як ти можеш щось розповісти f?

Мені здається, що ви можете замінити всі функції в λ-обчисленні однією функцією, функцією ідентичності I = λx.x, і все ще працює, як описано в λ-обчисленні. Церковна цифра, 3коли дається fта xповертається f(f(f(x))). Але оскільки fі xтільки може бути I, вона повертається I. Iзастосовано до, Iа Iтакож повертається I. Так Iзадовольняє визначення 3. "Булевим" (λxy.x)і (λxy.y)потрібні 2 аргументи, які будуть Iі Iтому обидва булеві повернуться I. Кожна рівнозначна ідентичності, навіть якщо вони поводяться точно відповідно до своїх визначень.

Тож як ти можеш змінити? Як ви показуєте, що λ-обчислення має справу не лише з однією функцією?

Чи існує поняття ідентичності? Чи можете ви відразу визначити функцію, не оцінюючи її? Я вважаю, що було доведено, що немає можливості перевірити 2 функції на рівність.

Або λ-обчислення не стосується функцій, а формального опису того, що вони роблять? Це означає, що вирази λ визначають не лише те, що виконують функції, але й дані, якими функції маніпулюють. Отже, коли ви пишете A B, ви не застосовуєтесь Aдо цього B, але ви застосовуєте описану рядок функцію Aдо формального визначення функції, що міститься у Bповерненні іншого формального визначення.

Що насправді відбувається в λ-обчисленні? Якими математичними предметами вона займається?


Слідувати:

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


2
Не могли б ви переформулювати остаточне запитання на щось трохи менше орієнтоване на думку? На це має бути тверда невпевнена відповідь.
Теластин

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

Відповіді:


9

Справді неможливо визначити смислову еквівалентність термінів обчислення лямбда. Це одне застосування теореми Райса. Однак легко порівняти терміни синтаксично , тобто перевірити, чи вони мають точно таку ж структуру (що еквівалентно, якщо їх "рядкове представлення" однакове). Це дійсно все, що потрібно для отримання результатів.

Наприклад, для обчислення функцій n = f(i)від натуралів до натуралів, ви надаєте кодування церкви iяк параметр для функції обчислення лямбда, застосовуєте правила зменшення, поки ви не зупинитесь, і не перевірите отриманий термін. Якщо вона відповідає структурі церковних цифр, витягніть число, nяке вона кодує. Це ваш результат. Якщо отриманий термін не схожий на церковну цифру або зменшення не припиняється, функція не визначена i.

Терміни фактично тягнуть подвійне мито як "код" і "дані". Це нічого особливого: стрічка машини Тюрінга (рядок над деяким алфавітом) може бути --- і часто інтерпретується як кодування машини Тьюрінга або якогось його аспекту. Аналогічно, біти в основній пам'яті машини фон Неймана можуть бути або кодуванням програми, або кодуванням чогось іншого. Або навіть обидва одразу. Це лише "перспектива за замовчуванням", яка відрізняється.


Чи завжди вираз результату обчислення, що включає церковні цифри, завжди буде відповідати канонічній формі типу (λfx.f (f (fx)))? Або ви можете отримати різні еквівалентні вирази однієї чисельності?
Флоріан F

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