Дисциплина типа перекрестка
В математической логике дисциплина типов пересечений — это раздел теории типов, охватывающий системы типов , использующие конструктор типов пересечений. для присвоения нескольких типов одному термину. [1] В частности, если термин может быть назначен как тип и тип , затем можно назначить тип пересечения (и наоборот).Следовательно, конструктор типа пересечения можно использовать для выражения конечного гетерогенного специального полиморфизма (в отличие от параметрического полиморфизма ).Например, λ-член можно присвоить тип в большинстве систем типа пересечения, принимая в качестве термина переменную оба типа функции и соответствующий тип аргумента .
Известные системы типов пересечений включают систему присвоения типов Коппо-Дезани, [2] система присвоения типов Барендрегта-Коппо-Дезани, [3] и существенная система назначения типов перекрестков. [4] Самое поразительное, что системы типа пересечения тесно связаны (и часто точно характеризуют) со свойствами нормализации λ-термов при β-редукции .
В языках программирования, таких как TypeScript [5] и Скала, [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]
Ссылки
[ редактировать ]- ^ Хенк Барендрегт; Уил Деккерс; Ричард Стэтман (20 июня 2013 г.). Лямбда-исчисление с типами . Издательство Кембриджского университета. стр. 1–. ISBN 978-0-521-76614-2 .
- ^ Перейти обратно: а б с д и Коппо, Марио; Дезани-Чианкаглини, Марианджола (1980). «Расширение базовой теории функциональности для λ-исчисления» . Журнал формальной логики Нотр-Дама . 21 (4): 685–693. дои : 10.1305/ndjfl/1093883253 . S2CID 29748788 .
- ^ Перейти обратно: а б с д и Барендрегт, Хенк; Коппо, Марио; Дезани-Чианкаглини, Марианджола (1983). «Фильтр лямбда-модели и полнота присвоения типа». Журнал символической логики . 48 (4): 931–940. дои : 10.2307/2273659 . JSTOR 2273659 . S2CID 45660117 .
- ^ ван Бакель, Штеффен (2011). «Строгие типы пересечений для лямбда-исчисления». Обзоры вычислительной техники ACM . 43 (3): 20:1–20:49. CiteSeerX 10.1.1.310.2166 . дои : 10.1145/1922649.1922657 . S2CID 5537689 .
- ^ «Типы пересечений в TypeScript» . Проверено 1 августа 2019 г.
- ^ «Составные типы в Scala» . Проверено 1 августа 2019 г.
- ^ Перейти обратно: а б Поттинджер, Г. (1980). Присвоение типа сильно нормализуемых λ-термов. Х.Б. Карри: эссе по комбинаторной логике, лямбда-исчислению и формализму, 561–577.
- ^ Перейти обратно: а б Коппо, Марио; Дезани-Чианкаглини, Марианджола; Салле, Патрик (1979). «Функциональная характеристика некоторых семантических равенств внутри лямбда-исчисления». В Германе А. Маурере (ред.). Автоматы, языки и программирование, 6-й коллоквиум, Грац, Австрия, 16-20 июля 1979 г., Труды . Том. 71. Спрингер. стр. 133–146. дои : 10.1007/3-540-09510-1_11 . ISBN 3-540-09510-1 .
- ^ Коппо, Марио; Дезани-Чианкаглини, Марианджола (1978). «Новое присвоение типа для λ-термов». Архив математической логики и фундаментальных исследований . 19 (1): 139–156. дои : 10.1007/BF02011875 . S2CID 206809924 .
- ^ Коппо, Марио; Дезани-Чианкаглини, Марианджола; Веннери, Бетти (1981). «Функциональные характеры разрешимых термов». Математическая логика Ежеквартальный журнал . 27 (2–6): 45–58. дои : 10.1002/malq.19810270205 .
- ^ Уржичин, Павел (1999). «Проблема пустоты для типов пересечений». Журнал символической логики . 64 (3): 1195–1215. дои : 10.2307/2586625 . JSTOR 2586625 . S2CID 36979036 .
- ^ Уржичин, Павел (2009). «Заселение перекрестков низкого ранга». Международная конференция по типизированным лямбда-исчислениям и их приложениям . TLCA 2009. Том. 5608. Спрингер. стр. 356–370. дои : 10.1007/978-3-642-02273-9_26 . ISBN 978-3-642-02272-2 .
- ^ Дуденхефнер, Андрей; Рехоф, Якоб (2019). «Принципальность и приближение в рамках размерной границы». Труды ACM по языкам программирования . ПОПЛ 2019. Том. 3. АКМ. стр. 8:1–8:29. дои : 10.1145/3290321 . ISSN 2475-1421 .
- ^ Ван Бакель, Штеффен (1992). «Полные ограничения дисциплины типа перекрестка». Теоретическая информатика . 102 (1): 135–163. CiteSeerX 10.1.1.310.903 . дои : 10.1016/0304-3975(92)90297-С .
- ^ Дуденхефнер, Андрей; Мартенс, Мориц; Рехоф, Якоб (2017). «Алгебраическая задача объединения типов пересечений». Логические методы в информатике . 13 (3). дои : 10.23638/LMCS-13(3:9)2017 . S2CID 31640337 .
- ^ Гилезан, Сильвия (1996). «Сильная нормализация и типизация с типами пересечений» . Журнал формальной логики Нотр-Дама . 37 (1): 44–52. дои : 10.1305/ndjfl/1040067315 .
- ^ Рончи Делла Рокка, Симона; Веннери, Бетти (1983). «Основные схемы типов расширенной теории типов» . Теоретическая информатика . 28 ((1-2)): 151–169. дои : 10.1016/0304-3975(83)90069-5 .