Характеристика лямбда-термінів, які мають типи союзів


29

Багато підручників охоплюють типи перетину лямбда-числення. Правила введення перехрестя можна визначити наступним чином (поверх просто набраного лямбда-числення з підтипом):

ΓM:T1ΓM:T2ΓM:T1T2(I)ΓM:(I)

Типи перетину мають цікаві властивості щодо нормалізації:

  • Лямбда-термін можна вводити, не використовуючи правила, якщо він сильно нормалізується.I
  • Лямбда-термін допускає тип , який не містить тоді і тільки тоді він має нормальну форму.

Що робити, якщо замість додавання перехресть ми додамо спілки?

ΓM:T1ΓM:T1T2(I1)ΓM:T2ΓM:T1T2(I2)

Чи має лямбда-числення з простими типами, підтипами та об'єднаннями якусь цікаву схожу властивість? Як можна охарактеризувати терміни, які можна ввести із союзом?


Цікаве запитання. Чи можете ви сказати, що інтерфейси від OOP відповідають цьому?
Рафаель

Можливо, вас може зацікавити цей cs.cmu.edu/~rwh/courses/refinances/papers/Barbaneraetal95/…
Фабіо Ф.

Відповіді:


11

У першій системі, що ви називаєте субтипізацією, є ці два правила:

Γ,x:T1M:SΓ,x:T1T2M:S(E1)Γ,x:T2M:SΓ,x:T1T2M:S(E2)

Вони відповідають правилам усунення для ; без них сполучна більш-менш марна.

У другій системі (із сполучниками та , до якої ми також могли б додати ) вищезазначені правила підтипу не мають значення, і я вважаю, що супровідні правила, які ви мали на увазі, такі:

Γ,x:T1M:SΓ,x:T2M:SΓ,x:T1T2M:S(E)Γ,x:M:S(E)

Для чого це варто, ця система дозволяє набрати (за допомогою правила ), яку не можна набрати просто простими типами, яка має нормальну форму, але сильно не нормалізується .(λx.I)Ω:AAE


Випадкові думки: (можливо, це варто запитати на TCS)

Це призводить мене до думки, що пов'язані властивості є чимось на зразок:

  • a λ-член допускає тип, що не містить iff має нормальну форму для всіх яка має нормальну форму. ( не відповідає обом тестам, але вищевказані λ-терміни проходять їх)MMNNδ
  • λ-термін може бути набраний без використання правило тоді і тільки тоді сильно нормалізації для всіх сильно нормалізує .MEMNN

Вправа: доведіть мене неправильно.

Крім того, це здається виродженим випадком, можливо, ми повинні розглянути можливість додавання цього хлопця до картини. Наскільки я пам’ятаю, це дозволило б отримати ?A(A)


Хороший момент щодо правил підтипу, вони показують, що типи з'єднання не є настільки природними, як перетини (які набираються ортогонально стрілками). Про другу частину мені потрібно подумати ще трохи.
Жил "ТАК - перестань бути злим"

Я думаю, що відповідає на вправу, якщо ви говорите про типи об'єднань. M=(λx.xx)(λy.y)
jmad

Про call / cc: йому потрібні більше, ніж просто лямбда-терміни (наприклад, лямбда-му-терміни або інша рамка), але системи типів є більш складними, логічними системами, в яких типи об'єднання можуть бути неактуальними.
jmad

@jmad: Дійсно, для введення цього терміна потрібні типи перетину :-( Можливо, цікаво розглядати спілки та перехрестя?
Стефан Гіменез

Мені було б цікаво λ-термін, який можна вводити з типами об'єднання (rs. З типами перетину), але не з простими типами (rs. З типами перетину).
jmad

16

Я просто хочу пояснити, чому типи перетину добре підходять для характеристики класів нормалізації (сильні, головні чи слабкі), тоді як інші системи типу не можуть. (просто введений або системний F).

Ключова відмінність полягає в тому, що ви повинні сказати: "якщо я можу набрати та я можу набрати ". Це часто не вірно для типів, що не перетинаються, оскільки термін можна дублювати:M2M1M2M1

(λx.Mxx)NMNN

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

M:T1T2T3N:T1N:T2
M:T1T2T1T2T3N:T1T2
(λx.Mxx):T1T2T3N:T1T2
(λx.Mxx)N

Тепер про типи об'єднання: припустимо, ви можете ввести з деяким типом союзу, тоді ви також можете ввести а потім отримати для деяких типів Але ви все одно повинні довести, що для кожного , що здається неможливим, навіть є типом об'єднання.(λx.xx)(λy.y)λx.xxS,T1,

x:T1T2Tnxx:S
ix:Tixx:SS

Ось чому я не думаю, що існує нормальна характеристика щодо нормалізації для типів об'єднання.

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