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


29

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

Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)

Типы пересечений имеют интересные свойства в отношении нормализации:

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

Что если вместо добавления пересечений мы добавим объединения?

Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)

Есть ли у лямбда-исчисления с простыми типами, подтипами и объединениями какое-нибудь интересное подобное свойство? Как можно охарактеризовать термины, которые можно набрать с помощью union?


Интересный вопрос. Не могли бы вы сказать, что интерфейсы из ООП соответствуют этому?
— Рафаэль

Может быть, вам может быть интересен этот cs.cmu.edu/~rwh/courses/refinements/papers/Barbaneraetal95/…
— Фабио Ф.

Ответы:


11

В первой системе то, что вы называете подтипом, это два правила:

Γ,x:T1⊢M:SΓ,x:T1∧T2⊢M:S(∧E1)Γ,x:T2⊢M:SΓ,x:T1∧T2⊢M:S(∧E2)

Они соответствуют правилам исключения для ; без них or более или менее бесполезна.∧∧∧

Во второй системе (со связями и , к которой мы могли бы также добавить ), вышеприведенные правила подтипов не имеют значения, и я думаю, что вы имели в виду следующие сопутствующие правила:→ ⊥∨→⊥

Γ,x:T1⊢M:SΓ,x:T2⊢M:SΓ,x:T1∨T2⊢M:S(∨E)Γ,x:⊥⊢M:S(⊥E)

Для чего это стоит, эта система позволяет набирать (используя правило rule ), которое нельзя набирать простыми типами, которое имеет нормальную форму, но не сильно нормализует ,⊥ E(λx.I)Ω:A→A⊥E


Случайные мысли: (возможно это стоит спросить на TCS)

Это приводит меня к предположению, что связанные свойства являются чем-то вроде:

  • λ-член допускает тип, не содержащий если имеет нормальную форму для всех⊥ M N N δM⊥MNN имеющих нормальную форму. ( не проходит оба теста, но вышеуказанный λ-член проходит их)δ
  • λ-член может быть набран без использования правила если⊥ E M N NM⊥EMN сильно нормализации для всех сильно нормализующего .N

Упражнение: докажи, что я не прав.

Кроме того, это похоже на вырожденный случай, может быть, нам стоит подумать о добавлении этого парня в картину. Насколько я помню, это позволило бы получить ?A∨(A→⊥)


Хорошие замечания по поводу правил подтипирования: они показывают, что типы объединения не так естественны, как пересечения (которые вводятся ортогонально стрелкам). О второй части мне нужно подумать еще немного.
— Жиль "ТАК - перестань быть злым"

Я думаю, что отвечает на упражнение, если вы говорите о типах объединения. M=(λx.xx)(λy.y)
— Джмад

О call / cc: ему нужно больше, чем просто лямбда-термины (например, лямбда-му-термины или другая структура), но системы типов являются более сложными, логическими системами, в которых типы объединения могут быть неактуальными.
— Джмад

@jmad: Действительно, типы пересечений необходимы для того, чтобы ввести этот термин :-( Может быть, было бы интересно рассмотреть объединения и пересечения вместе?
— Стефан Гименес

Я был бы заинтересован в λ-члене, который можно вводить с объединением типов (rs. С типами пересечений), но не с простыми типами (rs. С типами пересечений).
— Джмад

16

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

M2M1→M2M1

(λx.Mxx)N→MNN

MNNN

M:T1→T2→T3N:T1N:T2
M:T1∧T2→T1∧T2→T3N:T1∧T2
(λx.Mxx):T1∧T2→T3N:T1∧T2
(λx.Mxx)N можно набирать типами пересечений.

(λx.xx)(λy.y)λx.xxS,T1,…

x:T1∨T2∨⋯∨Tn⊢xx:S
ix:Ti⊢xx:SS

Вот почему я не думаю, что есть легкая характеристика нормализации для типов объединения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.