Дисциплина типа пересечения - Intersection type discipline

В математическая логика, то дисциплина типа перекрестка это филиал теория типов охватывающий системы типов которые используют конструктор типа пересечения присвоить несколько типов одному термину.[1]В частности, если срок может быть назначен обе тип и тип , тогда можно присвоить тип пересечения (и наоборот). Таким образом, конструктор типа пересечения может использоваться для выражения конечных неоднородных специальный полиморфизм (в отличие от параметрический полиморфизм Например, λ-член можно присвоить тип в большинстве систем типов пересечений, предполагая в качестве термопеременной оба типа функции и соответствующий тип аргумента .

Известные системы типов перекрестков включают систему присвоения типов Коппо-Дезани,[2] система присвоения типов Барендрегта-Коппо-Дезани,[3] и система присвоения основных типов перекрестков.[4]Наиболее поразительно то, что системы типов пересечений тесно связаны (и часто точно характеризуют) свойства нормализации λ-члены под β-редукция.

В языках программирования, таких как TypeScript[5] и Scala,[6] типы пересечений используются для выражения специальный полиморфизм.

История

Дисциплина типа перекресток была впервые предложена Марио Коппо, Мариангиола Дезани-Чанкаглини, Патрик Салле и Гаррель Поттинджер.[2][7][8]Основная мотивация заключалась в изучении семантических свойств (таких как нормализация ) из λ-исчисление посредством теория типов.[9]В то время как первоначальная работа Коппо и Дезани установила теоретико-типовую характеризацию сильной нормализации для λI-исчисления,[2] Поттинджер распространил эту характеризацию на λK-исчисление.[7]Кроме того, Салле внесло понятие универсального типа. который можно сопоставить любому λ-члену, тем самым соответствуя пустому пересечению.[8]Использование универсального типа позволил провести детальный анализ нормализации, нормализации и строгой нормализации.[10]В сотрудничестве с Хенк Барендрегт была дана λ-модель фильтра для системы типов пересечений, еще более тесно связавшая типы пересечений с семантикой λ-исчисления.

Из-за соответствия с нормализацией, типичность в выдающихся системах типа пересечений (исключая универсальный тип) неразрешимый. Дополнительно, неразрешимость двойственной проблемы тип проживания в известных системах типа перекрестков был доказан Павлом Уржичином.[11]Позже этот результат был уточнен, показывая экспоненциальная полнота пространства жилья типа пересечения 2-го ранга и неразрешимость жилого помещения 3 ранга пересечения.[12]Примечательно, что главный тип обитания разрешим в полиномиальное время.[13]

Система присвоения типов Коппо-Дезани

В Система присвоения типов Коппо-Дезани расширяет просто типизированное λ-исчисление позволяя использовать несколько типов для переменной-терма.[2]

Термин язык

Термин "язык" дан кем-то λ-члены (или же, лямбда-выражения ):

Тип языка

Типовой язык индуктивно определяется следующей грамматикой:

Конструктор типа пересечения () берется по модулю ассоциативности, коммутативности и идемпотентности.

Тип правила

В правила типа , , , и из находятся:

Характеристики

Типичность и нормализация тесно связаны в по следующим свойствам:[2]

  • Уменьшение темы: Если и , тогда .
  • Нормализация: Если , тогда имеет β-нормальная форма.
  • Типичность сильно нормализующий λ-члены: Если является сильно нормализующий, тогда для некоторых и .
  • Характеристика λI-нормализации: имеет нормальную форму в λI-исчислении тогда и только тогда, когда для некоторых и .

Если язык типов расширен, чтобы содержать пустое пересечение, т.е. , тогда замкнут относительно β-равенства и является надежным и полным для семантики вывода.[14]

Система присвоения типов Барендрегта – Коппо – Дезани

В Система присвоения типов Барендрегта – Коппо – Дезани расширяет систему присвоения типов Коппо-Дезани в следующих трех аспектах:[3]

  • вводит константа универсального типа (сродни пустому пересечению), которое можно сопоставить любому λ-члену.
  • позволяет конструктор типа пересечения для отображения справа от конструктора типа стрелки .
  • вводит подтип типа пересечения частичный порядок типов вместе с соответствующим правилом типизации.

Термин язык

Термин "язык" дан кем-то λ-члены (или же, лямбда-выражения ):

Тип языка

Типовой язык индуктивно определяется следующей грамматикой:

Подтипирование типа пересечения

Подтипирование типа пересечения определяется как наименьший Предварительный заказ (рефлексивный и переходный отношение) над типами пересечений, удовлетворяющими следующим свойствам:

Подтипирование типа пересечения разрешимо за квадратичное время.[15]

Тип правила

В правила типа , , , , , и из находятся:

Характеристики

  • Семантика: надежно и полно написано. λ-модель фильтра, в которой интерпретация λ-члена совпадает с набором типов, которые могут быть ему присвоены.[3]
  • Уменьшение темы: Если и , тогда .[3]
  • Расширение темы: Если и , тогда .[3]
  • Характеристика сильная нормализация: сильно нормализирует по отношению к. β-редукция, если и только если выводится без правила для некоторых и .[16]
  • Основные пары: Если сильно нормализирует, то существует главная пара так что для любого набора текста пара можно получить из главной пары с помощью расширений, подъемов и замен типов.[17]

Рекомендации

  1. ^ Хенк Барендрегт; Вил Деккерс; Ричард Статман (20 июня 2013 г.). Лямбда-исчисление с типами. Издательство Кембриджского университета. стр. 1–. ISBN  978-0-521-76614-2.
  2. ^ а б c d е Коппо, Марио; Дезани-Чианкаглини, Мариангиола (1980). «Расширение основной теории функциональности для λ-исчисления». Журнал формальной логики Нотр-Дам. 21 (4): 685–693. Дои:10.1305 / ndjfl / 1093883253.
  3. ^ а б c d е Барендрегт, Хенк; Коппо, Марио; Дезани-Чианкаглини, Мариангиола (1983). «Лямбда-модель фильтра и полнота присвоения типов». Журнал символической логики. 48 (4): 931–940. Дои:10.2307/2273659. JSTOR  2273659.
  4. ^ ван Бакель, Штеффен (2011). «Типы строгих пересечений для лямбда-исчисления». Опросы ACM Computing. 43 (3): 20:1–20:49. Дои:10.1145/1922649.1922657.
  5. ^ «Типы пересечений в TypeScript». Получено 2019-08-01.
  6. ^ «Составные типы в Scala». Получено 2019-08-01.
  7. ^ а б Поттинджер, Г. (1980). Присвоение типа сильно нормализуемым λ-членам. Х. Б. Карри: очерки комбинаторной логики, лямбда-исчисления и формализма, 561-577.
  8. ^ а б Коппо, Марио; Дезани-Чианкаглини, Мариангиола; Салле, Патрик (1979). «Функциональная характеристика некоторых семантических равенств внутри лямбда-исчисления». В Герман А. Маурер (ред.). Автоматы, языки и программирование, 6-й коллоквиум, Грац, Австрия, 16-20 июля 1979 г., Труды. 71. Springer. С. 133–146. Дои:10.1007/3-540-09510-1_11. ISBN  3-540-09510-1.
  9. ^ Коппо, Марио; Дезани-Чианкаглини, Мариангиола (1978). «Присвоение нового типа λ-термам». Archiv für Mathematische Logik und Grundlagenforschung. 19 (1): 139–156. Дои:10.1007 / BF02011875.
  10. ^ Коппо, Марио; Дезани-Чианкаглини, Мариангиола; Веннери, Бетти (1981). «Функциональные символы решаемых терминов». Mathematical Logic Quarterly. 27 (2–6): 45–58. Дои:10.1002 / malq.19810270205.
  11. ^ Уржичин, Павел (1999). «Проблема пустоты для типов перекрестков». Журнал символической логики. 64 (3): 1195–1215. Дои:10.2307/2586625. JSTOR  2586625.
  12. ^ Уржичин, Павел (2009). «Обитание низкоранговых типов перекрестков». Международная конференция по типизированным лямбда-исчислениям и приложениям. TLCA 2009. 5608. Springer. С. 356–370. Дои:10.1007/978-3-642-02273-9_26. ISBN  978-3-642-02272-2.
  13. ^ Дуденхефнер, Андрей; Rehof, Якоб (2019). «Принцип и приближение при размерной границе». Труды ACM по языкам программирования. POPL 2019. 3. ACM. С. 8: 1–8: 29. Дои:10.1145/3290321. ISSN  2475-1421.
  14. ^ Ван Бакель, Штеффен (1992). «Полные ограничения дисциплины типа перекресток». Теоретическая информатика. 102 (1): 135–163. Дои:10.1016 / 0304-3975 (92) 90297-С.
  15. ^ Дуденхефнер, Андрей; Мартенс, Мориц; Rehof, Якоб (2017). «Алгебраическая проблема объединения типа пересечения». Логические методы в информатике. 13 (3). Дои:10.23638 / LMCS-13 (3: 9) 2017 г..
  16. ^ Гилезан, Сильвия (1996). «Сильная нормализация и типизация с типами пересечений». Журнал формальной логики Нотр-Дам. 37 (1): 44–52. Дои:10.1305 / ndjfl / 1040067315.
  17. ^ Ронки Делла Рокка, Симона; Веннери, Бетти (1983). «Схемы главного типа для расширенной теории типов». Теоретическая информатика. 28 ((1-2)): 151–169. Дои:10.1016/0304-3975(83)90069-5.