Чи може елементарна логіка Affine використовуватись як основна система практичної мови програмування?


9

Елементарна афінна логіка - це система типу, яка фіксує клас λ-термінів, який може бути скорочений за елементарний час. Більше того, терміни типу EAL можна зменшити за допомогою абстрактного фрагмента алгоритму Лампінга, який особливо цікавий мені, оскільки я вивчаю відповідні комбінатори взаємодії.

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


"Елементарна логіка афін" - це система типів, яка фіксує клас λ-термінів, який може бути скорочений за елементарний час ": це неточно. EAL фіксує сувору підмножинуλ-терміни, що представляють елементарні функції (wrt церковне кодування). Це правда, що всі елементарні функції охоплені: для кожної елементарної функціїf, існує принаймні один термін обчислення EAL f, але зазвичай є тонни інших термінів, що відповідають елементарним алгоритмам обчислення fяких немає в EAL.
Даміано Мацца

Вуп, правильно. Крім того, наскільки я розумію, є також терміни, які можна скоротити за допомогою абстрактного алгоритму, але не мають типу EAL, правда? Отже, хоча всі терміни EAL можна скоротити без оракула, все-таки існує деяка невідповідність між абстрактним алгоритмом та EAL. @DamianoMazza
MaiaVictor

Так, це правильно.
Даміано Мацца

1
"У будь-якому разі, ніхто не забороняє вам спробувати і подивитися, що ви можете отримати!" - 3 роки потому: так, мені ніхто не забороняє, тому я це зробив! docs.formality-lang.org . Дякую за всю допомогу :)
MaiaVictor

Відповіді:


10

Щось дуже схоже, але використовуючи легку афінну логіку (LAL) замість EAL, кілька років тому намагалися здійснити Baillot, Gaboardi та Mogbil (ви можете знайти тут папери ). Я думаю, що їх робота може бути легко узагальнена до EAL, що є більш ліберальною системою.

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

Одним із наслідків є те, що в EAL ви можете використовувати довільну точку фіксування типів (див., Наприклад, цей інший документ від Baillot) та визначати типи даних у природно-рекурсивному стилі (наприклад,лiст А: =нiл|А  лiст А), поряд із менш природною (з точки зору програмування) системою визначення F. Однак, за вищенаведеним зауваженням про нетипізовану нормалізацію, мова програмування, заснована на EAL, завжди буде тотальною , а це означає, що у вас не буде комбінатора виправлених точок, а використання рекурсивних типів не так природно, як можна було б очікувати. Наприклад, візьміть цифри Скотта: без рекурсивних визначень (заданих комбінатором фіксованої точки) важко виразити що-небудь поза операціями постійного часу з цим поданням цілих чисел. Тому вам все одно потрібно буде використовувати церковні цифри для ітерації (тобто,fоr циклі), за допомогою яких ви будете зазнавати принципового обмеження стратифікації легкої логіки (що надає їм властивості їх складності): ви не можете повторити функцію NатNат що було визначено ітерацією (Nат ось тип цілих чисел Церкви).

Приклад: з деяким "злом на цілі числа", це можна визначити в EAL гбл:NатNат такий як гбл н_=2н_ без використання ітерації. Тоді ви можете повторитигбл визначити експоненціальну функцію ехpяка, однак, сама по собі не може бути повтореною. Тому будь-яка мова програмування на базі EAL повинен мати якийсь механізм, який забороняє ітерацію певних дефінітонів; важко уявити, як таке обмеження не призведе до того, що програміст почуває себе незручно. У всякому разі, ніхто не забороняє вам спробувати і подивитися, що ви можете отримати!

У будь-якому випадку, якщо вас цікавить співвідношення оптимальної оцінки, EAL та легкої логіки загалом, пропоную вам поглянути на документи Копполи з початку до середини 2000-х.

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