Jump to content

Система Ф

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

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

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

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

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

Правила набора текста

[ редактировать ]

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

(1) (2)

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

Логика и предикаты

[ редактировать ]

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

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

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

Затем с этими двумя -terms, мы можем определить некоторые логические операторы (типа ):

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

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

Структуры системы F

[ редактировать ]

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

.

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

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

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

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

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

[ редактировать ]

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

Результат Уэллса подразумевает, что вывод типа для системы F невозможен.Ограничение системы F, известное как « Хиндли-Милнер » или просто «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 <: , произносится как «F-sub», является расширением системы F с подтипом . Система F <: имеет центральное значение для теории языков программирования с 1980-х годов. [ нужна ссылка ] потому что ядро ​​функциональных языков программирования , как и языки семейства ML , поддерживают как параметрический полиморфизм , так и подтипирование записей , что можно выразить в System F <: . [10] [11]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Жирар, Жан-Ив (1986). «Система F типов переменных, пятнадцать лет спустя». Теоретическая информатика . 45 : 160. дои : 10.1016/0304-3975(86)90044-7 . Однако в [3] было показано, что очевидные правила преобразования для этой системы, названной F случайно, сходятся.
  2. ^ Харпер Р. «Практические основы языков программирования, второе издание» (PDF) . стр. 142–3.
  3. ^ Геуверс Х., Нордстрем Б., Довек Г. «Доказательства программ и формализация математики» (PDF) . п. 51.
  4. ^ Уэллс, Дж. Б. (20 января 2005 г.). «Исследовательские интересы Джо Уэллса» . Университет Хериот-Ватт.
  5. ^ Уэллс, Дж. Б. (1999). «Типизация и проверка типов в Системе F эквивалентны и неразрешимы» . Энн. Чистое приложение. Логика . 98 (1–3): 111–156. дои : 10.1016/S0168-0072(98)00047-5 . «Проект Церкви: типизация и проверка типов в {системе {F} эквивалентны и неразрешимы» . 29 сентября 2007 г. Архивировано из оригинала 29 сентября 2007 г.
  6. ^ «Система FC: ограничения равенства и принуждения» . gitlab.haskell.org . Проверено 8 июля 2019 г.
  7. ^ «Примечания к выпуску OCaml 4.00.1» . ocaml.org . 05.10.2012 . Проверено 23 сентября 2019 г.
  8. ^ «Справочное руководство по OCaml 4.09» . 11 сентября 2012 г. Проверено 23 сентября 2019 г.
  9. ^ Jump up to: а б с д Филип Уодлер (2005) Изоморфизм Жирара-Рейнольдса (второе издание) Эдинбургский университет , Языки программирования и основы в Эдинбурге
  10. ^ Карделли, Лука; Мартини, Симона; Митчелл, Джон К.; Щедров, Андре (1994). «Расширение системы F с подтипированием». Информация и вычисления, том. 9 . Северная Голландия, Амстердам. стр. 4–56. дои : 10.1006/inco.1994.1013 .
  11. ^ Пирс, Бенджамин (2002). Типы и языки программирования . МТИ Пресс. ISBN  978-0-262-16209-8 . , Глава 26: Ограниченная количественная оценка

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3b5a37af417b2d98ed90e5f02c1ebb4b__1720237980
URL1:https://arc.ask3.ru/arc/aa/3b/4b/3b5a37af417b2d98ed90e5f02c1ebb4b.html
Заголовок, (Title) документа по адресу, URL1:
System F - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)