Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Система F , также известная как полиморфное лямбда-исчисление ( Жирара – Рейнольдса ) или лямбда-исчисление второго порядка , представляет собой типизированное лямбда-исчисление, которое отличается от просто типизированного лямбда-исчисления введением механизма универсальной квантификации по типам. Таким образом, система F формализует понятие параметрического полиморфизма в языках программирования и формирует теоретическую основу для таких языков, как Haskell и ML . Система F была независимо открыта логиком Жан-Ивом Жираром (1972) и ученым-компьютерщиком. Джон С. Рейнольдс (1974).

В то время как просто типизированное лямбда-исчисление имеет переменные, варьирующиеся по термам, и связующие для них, Система F дополнительно имеет переменные, варьирующиеся по типам , и связующие для них. Например, тот факт, что функция идентичности может иметь любой тип формы A → A, будет формализован в Системе F как суждение

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

Как система переписывания терминов Система F сильно нормализует . Однако вывод типа в Системе F (без явных аннотаций типов) неразрешим. При изоморфизме Карри – Ховарда Система F соответствует фрагменту интуиционистской логики второго порядка, который использует только универсальную квантификацию. Систему F можно рассматривать как часть лямбда-куба вместе с еще более выразительными типизированными лямбда-исчислениями, в том числе с зависимыми типами .

По словам Жирара, буква «F» в системе F выбрана случайно. [1]

Правила набора [ править ]

Правила типизации Системы F - это правила просто типизированного лямбда-исчисления с добавлением следующего:

где являются типами, является переменной типа и в контексте указывает, что она связана. Первое правило - это правило приложения, а второе - правило абстракции.[2] [3]

Логика и предикаты [ править ]

Тип определяется как: , где является тип переменной . Это означает: тип всех функций , которые принимают в качестве входных данных типа α и два выражения типа а, и производят в качестве выходного сигнала выражения типа а (заметит , что мы считаем , что правоассоциативными .)

Следующие два определения булевых значений и используются, расширяя определение логических значений Черча :

(Обратите внимание, что для указанных выше двух функций требуется три, а не два аргумента. Последние два должны быть лямбда-выражениями, но первое должно быть типом. Этот факт отражается в том факте, что тип этих выражений - универсальный квантор привязка α соответствует привязке Λ к альфа в самом лямбда-выражении. Также обратите внимание, что это удобное сокращение для , но это не символ самой Системы F, а скорее «метасимвол». Точно так же и являются также «метасимволы», удобные сокращения, «сборок» Системы F (в смысле Бурбаки); в противном случае, если бы такие функции могли быть названы (в Системе F), тогда не было бы необходимости в лямбда-выражающем аппарате, способном определять функции анонимно, и в комбинаторе с фиксированной точкой , который обходит это ограничение.)

Затем с помощью этих двух термов мы можем определить некоторые логические операторы (которые имеют тип ):

Обратите внимание, что в определениях выше, это аргумент типа для , указывающий, что два других параметра, которые задаются, имеют тип . Как и в кодировках Чёрча, здесь нет необходимости в функции IFTHENELSE, поскольку можно просто использовать термины необработанного типа в качестве функций принятия решений. Однако, если об этом попросят:

Сделаю. Предикат является функцией , которая возвращает -typed значения. Самый фундаментальный предикат - ISZERO, который возвращает тогда и только тогда, когда его аргумент - цифра Черча 0 :

Структуры Системы F [ править ]

Система F позволяет встраивать рекурсивные конструкции естественным образом, что связано с теорией типов Мартина-Лёфа . Абстрактные структуры (S) создаются с помощью конструкторов . Это функции, набранные как:

.

Рекурсивность проявляется, когда сама появляется внутри одного из типов . Если у вас есть из этих конструкторов, вы можете определить тип как:

Например, натуральные числа можно определить как индуктивный тип данных с конструкторами.

Тип System F, соответствующий этой структуре . Термины этого типа представляют собой печатную версию цифр Чёрча , первые несколько из которых:

0: =
1: =
2: =
3: =

Если мы изменим порядок каррированных аргументов ( т. Е. ), То числительное Чёрча для будет функцией, которая принимает функцию f в качестве аргумента и возвращает th степень f . Другими словами, число Чёрча является функцией высшего порядка - оно принимает функцию с одним аргументом f и возвращает другую функцию с одним аргументом.

Использование в языках программирования [ править ]

Версия Системы F, используемая в этой статье, представляет собой явно типизированное исчисление в стиле Чёрча. Информация о типе, содержащаяся в λ-термах, упрощает проверку типов . Джо Уэллс (1994) решил «неловкую открытую проблему», доказав, что проверка типов неразрешима для варианта Системы F в стиле Карри, то есть такого, в котором отсутствуют явные аннотации типов . [4] [5]

Результат Уэллса означает, что вывод типа для Системы F невозможен. Ограничение Системы F, известное как « Hindley – Milner » или просто «HM», действительно имеет простой алгоритм вывода типов и используется для многих статически типизированных языков функционального программирования, таких как Haskell 98 и семейство ML . Со временем, когда ограничения систем типов в стиле HM стали очевидными, языки неуклонно переходили к более выразительной логике для своих систем типов. GHC - компилятор Haskell, выходит за рамки HM (по состоянию на 2008 г.) и использует System F, расширенную несинтаксическим равенством типов; [6] не-HM функции в системе типов OCaml включаютGADT . [7] [8]

Изоморфизм Жирара-Рейнольдса [ править ]

В интуиционистской логике второго порядка полиморфное лямбда-исчисление второго порядка (F2) было открыто Жираром (1972) и независимо Рейнольдсом (1974). [9] Жирар доказал теорему представления : что в интуиционистской логике предикатов второго порядка (P2) функции от натуральных чисел до натуральных чисел, которые могут быть доказаны как полные, образуют проекцию из P2 в F2. [9] Рейнольдс доказал теорему об абстракции : каждый член в F2 удовлетворяет логическому отношению, которое может быть вложено в логические отношения P2. [9] Рейнольдс доказал, что проекция Жирара с последующим вложением Рейнольдса образуют тождество, т. Е. Изоморфизм Жирара-Рейнольдса. [9]

Система F ω [ править ]

В то время как Система F соответствует первой оси лямбда-куба Барендрегта , Система F ω или полиморфное лямбда-исчисление более высокого порядка объединяет первую ось (полиморфизм) со второй осью ( операторы типов ); это другая, более сложная система.

Система F ω может быть определена индуктивно на семействе систем, где индукция основана на видах, разрешенных в каждой системе:

  • виды разрешений:
    • (вид типов) и
    • где и (вид функций от типов к типам, где тип аргумента имеет более низкий порядок)

В пределе мы можем определить систему как

То есть F ω - это система, которая позволяет выполнять функции от типов к типам, где аргумент (и результат) могут иметь любой порядок.

Обратите внимание, что хотя F ω не налагает ограничений на порядок аргументов в этих отображениях, он ограничивает набор аргументов для этих отображений: они должны быть типами, а не значениями. Система F ω не разрешает отображения значений в типы ( зависимые типы ), хотя она разрешает отображения значений в значения ( абстракция), отображения типов в значения ( абстракция) и отображения типов в типы ( абстракция на уровне типов). )

См. Также [ править ]

  • Экзистенциальные типы - экзистенциально определенные аналоги универсальных типов
  • Система F <: - расширяет систему F с помощью подтипов
  • Система U

Примечания [ править ]

  1. ^ Жирар, Жан-Ив (1986). «Система F переменных типов, пятнадцать лет спустя». Теоретическая информатика . 45 : 160. DOI : 10.1016 / 0304-3975 (86) 90044-7 . Однако в [3] было показано, что очевидные правила преобразования для этой системы, случайно названной F, сходятся.
  2. ^ Harper R . «Практические основы языков программирования, второе издание» (PDF) . С. 142–3.
  3. ^ Geuvers H, Nordström B, Dowek G. "Доказательства программ и формализация математики" (PDF) . п. 51.
  4. Перейти ↑ Wells, JB (2005-01-20). «Исследовательские интересы Джо Уэллса» . Университет Хериот-Ватт.
  5. Перейти ↑ Wells, JB (1999). «Типизация и проверка типов в Системе F эквивалентны и неразрешимы». Анна. Pure Appl. Логика . 98 (1–3): 111–156. DOI : 10.1016 / S0168-0072 (98) 00047-5 .«Проект Чёрча: типизация и проверка типов в {S} системе {F} эквивалентны и неразрешимы» . 29 сентября 2007 года Архивировано из оригинала 29 сентября 2007 года.
  6. ^ "Система FC: ограничения и принуждения равенства" . gitlab.haskell.org . Проверено 8 июля 2019 .
  7. ^ «Примечания к выпуску OCaml 4.00.1» . ocaml.org . 2012-10-05 . Проверено 23 сентября 2019 .
  8. ^ "Справочное руководство по OCaml 4.09" . 2012-09-11 . Проверено 23 сентября 2019 .
  9. ^ a b c d Филип Уодлер (2005) Изоморфизм Жирара-Рейнольдса (второе издание) Эдинбургский университет , языки программирования и основы в Эдинбурге

Ссылки [ править ]

  • Жирар, Жан-Ив (1971). "Une Extension de l'Interpretation de l'Interpretation of Gödel à l'Analyse, et son Application à l'Élimination des Coupures dans l'Analyse et la Théorie des Types". Материалы Второго симпозиума по скандинавской логике . Амстердам. С. 63–92. DOI : 10.1016 / S0049-237X (08) 70843-7 .
  • Жирар, Жан-Ив (1972), Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieur (докторская диссертация) (на французском языке), Université Paris 7.
  • Рейнольдс, Джон (1974). К теории структуры типов .
  • Жирар, Жан-Ив; Лафон, Ив; Тейлор, Пол (1989). Доказательства и типы . Издательство Кембриджского университета. ISBN 978-0-521-37181-0.
  • Уэллс, Дж. Б. (1994). «Типизация и проверка типов в лямбда-исчислении второго порядка эквивалентны и неразрешимы». Материалы 9-го ежегодного симпозиума IEEE по логике в компьютерных науках (LICS) . С. 176–185. DOI : 10.1109 / LICS.1994.316068 . ISBN 0-8186-6310-3. Версия PostScript

Дальнейшее чтение [ править ]

  • Пирс, Бенджамин (2002). "V Полиморфизм, глава 23. Универсальные типы, глава 25. Реализация системы F на ML" . Типы и языки программирования . MIT Press. С. 339–362, 381–388. ISBN 0-262-16209-1.

Внешние ссылки [ править ]

  • Краткое изложение системы F Франка Бинара.
  • Система F ш : рабочая лошадь современных компиляторов по Грег Моррисетт