Мене цікавить концепція "повноти р-Тюрінга", визначена Axelsen та Glück (2011) . Система r-Turing завершена, якщо вона може обчислити той самий набір функцій, що і оборотна машина Тьюрінга, не створюючи жодних даних про "сміття". Це те саме, що вміти обчислювати кожну функцію, яка є (а) обчислювальною та (б) ін'єктивною.
Я б хотів обчислювально дослідити простір обчислюваних ін'єкційних функцій. Для цього я шукаю "найменш" зворотну мову програмування --- те, що може грати еквівалентну роль для обчислюваності r-Тьюрінга, що для обчислення Тьюрінга відіграє лямбда-числення.
Я знаю, що існує багато оборотних мов, які люди розробили і довели, що їх р-тюрінг є повним. Однак вони розробляються з урахуванням практичних застосувань, і тому їх автори зосереджуються на наданні їм виразних рис, а не роблячи їх мінімальними.
Хтось знає, чи була описана така мінімально обернена мова, чи є якісь дослідження в такому напрямку? Я досить новачок у літературі на цю тему, тому легко міг її пропустити. Як варіант, чи має хтось уявлення про те, як така мова могла бути створена?
Нижче наведено короткий підсумок того, що я шукаю. Я не знаю, чи можна це створити шляхом зміни самого числення лямбда, чи потрібно використовувати зовсім інший тип мови.
- r-Turing повна мова - обчислює всі обчислювані обертові функції і може обчислювати лише обертові функції
- Синтаксис і семантика максимально мінімальні. (Наприклад, обчислення лямбда має лише визначення функцій та застосувань, і нічого іншого.) Не потрібно, щоб синтаксис чи семантика були пов'язані з умовами обчислення лямбда, хоча вони могли бути.
- Програма = дані. Тобто програми працюють на виразах, а не на будь-яких інших видах даних. Це гарантує, що вихід програми завжди може бути інтерпретований як програма. Це, мабуть, означає, що це має бути функціональний, а не імперативний стиль мови.
- Існує деякий систематичний спосіб перетворення програми в її зворотний, який не передбачає істотно більше обчислень, ніж той, який бере участь у фактичному виконанні обернених обчислень. (Не всі обернені мови мають цю властивість, але деякі мають.)
Я мушу підкреслити, що підхід Аксельсена та Глюка до оборотних обчислень сильно відрізняється від відомого підходу завдяки Беннету, де (взагалі неперевернута) програма робиться незворотною, повертаючи деяку інформацію про історію обчислень разом із результатами. Повнота r-Turing полягає в тому, щоб можна було обчислювати інжективні функції без додаткового виводу. Є кілька речей, які називаються варіантами "оборотного обчислення лямбда", які є оборотними в сенсі Беннета - це не те, що я шукаю.