Лямбда-куб

В математической логике и теории типов λ -куб (также называемый лямбда-куб ) — это основа, представленная Хенком Барендрегтом. [1] исследовать различные измерения, в которых исчисление конструкций является обобщением просто типизированного λ-исчисления . Каждое измерение куба соответствует новому виду зависимости между терминами и типами. Здесь «зависимость» относится к способности термина или типа связывать термин или тип. Соответствующие размеры λ-куба соответствуют:
- ось X ( ): типы, которые могут связывать термины, соответствующие зависимым типам .
- ось Y ( ): термины, которые могут связывать типы, соответствующие полиморфизму .
- ось Z ( ): типы, которые могут связывать типы, соответствующие операторам типа (привязки) .
Различные способы объединения этих трех измерений дают 8 вершин куба, каждая из которых соответствует разному типу типизированной системы. λ-куб можно обобщить до понятия системы чистого типа .
Примеры систем [ править ]
(λ→) Просто напечатанное лямбда-исчисление [ править ]
Самая простая система, обнаруженная в λ-кубе, — это просто типизированное лямбда-исчисление , также называемое λ→. В этой системе единственный способ создать абстракцию — сделать термин зависимым от термина с помощью правила типизации :
(λ2) Система F [ править ]
В системе F (также называемой λ2 для «типизированного лямбда-исчисления второго порядка») [2] есть другой тип абстракции, написанный с помощью , что позволяет терминам зависеть от типов со следующим правилом:
Термины, начинающиеся с называются полиморфными , так как их можно применять к разным типам для получения разных функций, аналогично полиморфным функциям в ML-подобных языках . Например, полиморфное тождество
fun x -> x
OCaml тип имеет
'a -> 'a
это означает, что он может принимать аргумент любого типа 'a
и вернуть элемент этого типа. Этот тип соответствует по λ2 типу .
(λ ω ) Система F ω [ править ]
В системе F вводится конструкция для типов поставок, которые зависят от других типов . Это называется конструктором типа и позволяет создать «функцию с типом в качестве значения ». [3] Примером такого конструктора типа является тип бинарных деревьев с листьями, помеченными данными заданного типа. : , где " "неофициально" означает " является типом». Это функция, которая принимает параметр типа. в качестве аргумента и возвращает тип значений типа . В конкретном программировании эта особенность соответствует возможности определять конструкторы типов внутри языка, а не рассматривать их как примитивы. Предыдущий конструктор типа примерно соответствует следующему определению дерева с помеченными листьями в OCaml:
type 'a tree = | Leaf of 'a | Node of 'a tree * 'a tree
Этот конструктор типа можно применять к другим типам для получения новых типов. Например, чтобы получить тип дерева целых чисел:
type int_tree = int tree
Система Ф обычно не используется сам по себе, но полезен для выделения независимой функции конструкторов типов. [4]
(λP) Лямбда-П [ править ]
В системе λP , также называемой ΛΠ и тесно связанной с LF Logical Framework , существуют так называемые зависимые типы . Это типы, которым разрешено зависеть от термов . Важнейшим правилом внедрения системы является
где представляет допустимые типы. Новый конструктор типов через изоморфизм Карри-Говарда соответствует квантору универсальности, а система λP в целом соответствует логике первого порядка с импликацией как единственной связкой. Примером таких зависимых типов в конкретном программировании является тип векторов определенной длины: длина — это термин, от которого зависит тип.
(Λω) Система Fω [ править ]
Система Fω сочетает в себе конструктор системы F и конструкторы типов из системы F . Таким образом, система Fω предоставляет как термины, зависящие от типов , так и типы, зависящие от типов .
(λC) Исчисление конструкций [ править ]
В исчислении конструкций обозначается как λC в кубе или как λPω, [1] : 130 эти четыре характеристики сосуществуют, так что и типы, и термины могут зависеть от типов и терминов. Четкая граница, существующая в λ→ между терминами и типами, несколько упразднена, поскольку все типы, кроме универсального, сами являются терминами типа.
Формальное определение [ править ]
Что касается всех систем, основанных на просто типизированном лямбда-исчислении, все системы в кубе задаются в два этапа: сначала необработанные термины вместе с понятием β-редукции , а затем правила типизации, которые позволяют типизировать эти термины.
Множество сортов определяется как , сорта обозначаются буквой . Также есть набор переменных, представленных буквами . Необработанные члены восьми систем куба задаются следующим синтаксисом:
и обозначающий когда не возникает свободно в .
Среды, как обычно в типизированных системах, задаются формулой
Понятие β-редукции является общим для всех систем куба. Это написано и задано правилами
Следующие правила типизации также являются общими для всех систем в кубе:
Соответствие между системами и парами в правилах разрешено следующее:
λ→ | ![]() |
![]() |
![]() |
![]() |
λP | ![]() |
![]() |
![]() |
![]() |
л2 | ![]() |
![]() |
![]() |
![]() |
ло о | ![]() |
![]() |
![]() |
![]() |
λP2 | ![]() |
![]() |
![]() |
![]() |
λP ω | ![]() |
![]() |
![]() |
![]() |
вот | ![]() |
![]() |
![]() |
![]() |
λС | ![]() |
![]() |
![]() |
![]() |
Каждому направлению куба соответствует одна пара (исключая пару общие для всех систем), и в свою очередь каждая пара соответствует одной возможности зависимости между терминами и типами:
- позволяет условиям зависеть от условий.
- позволяет типам зависеть от терминов.
- позволяет терминам зависеть от типов.
- позволяет типам зависеть от типов.
Сравнение систем [ править ]
λ→ [ править ]
Типичный вывод, который можно получить:
Вычислительная мощность довольно слабая, соответствует расширенным полиномам (многочленам вместе с условным оператором). [5]
λ2 [ править ]
В λ2 такие члены можно получить как
Полиморфизм также позволяет строить функции, которые невозможно построить в λ→. Точнее, функции, определяемые в λ2, — это те функции, которые доказуемо полны в арифметике Пеано второго порядка . [6] В частности, все примитивно-рекурсивные функции определимы.
λP [ править ]
В λP возможность иметь типы в зависимости от термов означает, что можно выражать логические предикаты. Например, можно вывести следующее:
Однако с вычислительной точки зрения наличие зависимых типов не увеличивает вычислительную мощность, а только дает возможность выразить более точные свойства типа. [7]
Правило преобразования крайне необходимо при работе с зависимыми типами, поскольку оно позволяет выполнять вычисления над терминами типа. Например, если у вас есть и , вам необходимо применить правило преобразования, чтобы получить иметь возможность печатать .
ло [ править ]
В lō следующий оператор
С вычислительной точки зрения λω чрезвычайно силен и считается основой языков программирования. [8]
λC [ править ]
Исчисление конструкций обладает как выразительностью предикатов λP, так и вычислительной мощностью λω, поэтому λC также называется λPω, [1] : 130 так что он очень мощный, как с логической, так и с вычислительной стороны.
Связь с другими системами [ править ]
Система Automath аналогична λ2 с логической точки зрения. ML -подобные языки с точки зрения типизации лежат где-то между λ→ и λ2, поскольку они допускают ограниченный вид полиморфных типов, то есть типов в пренексной нормальной форме. Однако, поскольку они содержат некоторые операторы рекурсии, их вычислительная мощность больше, чем у λ2. [7] Система Coq основана на расширении λC с помощью линейной иерархии вселенных, а не только одной нетипизированной системы. и умение строить индуктивные типы.
Системы чистых типов можно рассматривать как обобщение куба с произвольным набором сортов, аксиомами, правилами произведения и абстракции. И наоборот, системы лямбда-куба можно выразить как системы чистого типа с двумя видами: , единственная аксиома и набор правил такой, что . [1]
Благодаря изоморфизму Карри-Говарда существует взаимно однозначное соответствие между системами в лямбда-кубе и логическими системами: [1] а именно:
Система куба | Логическая система |
---|---|
λ→ | (Нулевой порядок) Исчисление высказываний |
л2 | Исчисление высказываний второго порядка |
ло о | Слабое исчисление высказываний высшего порядка |
вот | Исчисление высказываний высшего порядка |
λP | (Первый порядок) Логика предикатов |
λP2 | Исчисление предикатов второго порядка |
λP ω | Слабое исчисление предикатов высшего порядка |
λС | Расчет конструкций |
Вся логика импликативна (т.е. единственные связки и ), однако можно определить и другие связки, например или импредикативным образом в логиках второго и более высокого порядка. В слабой логике высшего порядка существуют переменные для предикатов более высокого порядка, но их количественная оценка невозможна.
Общие свойства [ править ]
Все системы в кубе пользуются
- свойство Чёрча -Россера : если и тогда существует такой, что и ;
- свойство предметного сокращения : если и затем ;
- уникальность типов: если и затем .
Все это можно доказать на общих системах чистых типов. [9]
Любой терм, хорошо типизированный в системе куба, является сильно нормализующим. [1] хотя это свойство не является общим для всех систем чистых типов. Ни одна система в кубе не является полной по Тьюрингу. [7]
Подтипы [ править ]
Однако подтипы не представлены в кубе, хотя такие системы, как , известная как ограниченная квантификация высшего порядка , которая сочетает в себе подтипирование и полиморфизм, представляет практический интерес и может быть далее обобщена на операторы ограниченного типа . Дальнейшие расширения разрешить определение чисто функциональных объектов ; эти системы обычно разрабатывались после публикации статьи о лямбда-кубе. [10]
Идея куба принадлежит математику Хенку Барендрегту (1991). Структура систем чистых типов обобщает лямбда-куб в том смысле, что все углы куба, а также многие другие системы могут быть представлены как экземпляры этой общей структуры. [11] Этот фреймворк появился на пару лет раньше лямбда-куба. В своей статье 1991 года Барендрегт также определяет углы куба в этой системе.
См. также [ править ]
- В своем Разрешении руководить исследованиями [12] Оливье Риду дает вырезанный шаблон лямбда-куба, а также двойственное представление куба в виде октаэдра, где 8 вершин заменены гранями, а также двойственное представление в виде додекаэдра, где 12 ребер заменены гранями. лица.
Примечания [ править ]
- ^ Jump up to: Перейти обратно: а б с д и ж Барендрегт, Хенк (1991). «Введение в системы обобщенных типов». Журнал функционального программирования . 1 (2): 125–154. дои : 10.1017/s0956796800020025 . hdl : 2066/17240 . ISSN 0956-7968 . S2CID 44757552 .
- ^ Недерпельт, Роб; Геверс, Герман (2014). Теория типов и формальное доказательство . Издательство Кембриджского университета. п. 69. ИСБН 9781107036505 .
- ^ Nederpelt & Geuvers 2014 , с. 85
- ^ Nederpelt & Geuvers 2014 , с. 100
- ^ Швихтенберг, Гельмут (1975). «Определимые функции в λ-исчислении с типами». Архив математической логики и фундаментальных исследований (на немецком языке). 17 (3–4): 113–114. дои : 10.1007/bf02276799 . ISSN 0933-5846 . S2CID 11598130 .
- ^ Жирар, Жан-Ив; Лафон, Ив; Тейлор, Пол (1989). Доказательства и типы . Кембриджские трактаты по теоретической информатике. Том. 7. Издательство Кембриджского университета. ISBN 9780521371810 .
- ^ Jump up to: Перейти обратно: а б с Риду, Оливье (1998). Лямбда-Пролог от А до Я... или почти (PDF) . [сн] OCLC 494473554 .
- ^ Пирс, Бенджамин; Дитцен, Скотт; Михайлов, Спиро (1989). Программирование в типизированных лямбда-исчислениях высшего порядка . Факультет компьютерных наук Университета Карнеги-Меллон. OCLC 20442222 . КМУ-КС-89-111 ЭРГО-89-075.
- ^ Соренсен, Мортен Хейне; Ужичин, Павел (2006). «Системы чистого типа и λ-куб». Лекции по изоморфизму Карри-Говарда . Эльзевир. стр. 343–359. дои : 10.1016/s0049-237x(06)80015-7 . ISBN 9780444520777 .
- ^ Пирс, Бенджамин (2002). Типы и языки программирования . МТИ Пресс. стр. 467–490. ISBN 978-0262162098 . ОСЛК 300712077 .
- ^ Пирс 2002 , с. 466
- ^ Риду 1998 , с. 70
Дальнейшее чтение [ править ]
- Пейтон Джонс, Саймон; Мейер, Эрик (1997). «Хенк: типизированный язык среднего уровня» (PDF) . Майкрософт .
Henk основан непосредственно на лямбда-кубе, выразительном семействе типизированных лямбда-исчислений.
Внешние ссылки [ править ]
- Лямбда-куб Барендрегта в контексте систем чистых типов Роджера Бишопа Джонса