В математической логике и теории типов λ -куб (также пишется как лямбда-куб ) — это структура, введенная Хенком Барендрегтом [1] для исследования различных измерений, в которых исчисление конструкций является обобщением простого типизированного λ-исчисления . Каждое измерение куба соответствует новому виду зависимости между терминами и типами. Здесь «зависимость» относится к способности термина или типа связывать термин или тип. Соответствующие измерения λ-куба соответствуют:
Ось x ( ): типы, которые могут связывать термины, соответствующие зависимым типам .
Ось Y ( ): термины, которые могут связывать типы, соответствующие полиморфизму .
Различные способы объединения этих трех измерений дают 8 вершин куба, каждая из которых соответствует разному виду типизированной системы. λ-куб может быть обобщен в концепцию чистой типизированной системы .
Примеры систем
(λ→) Простое типизированное лямбда-исчисление
Простейшая система, найденная в λ-кубе, — это просто типизированное лямбда-исчисление , также называемое λ→. В этой системе единственный способ построить абстракцию — сделать термин зависимым от термина , с помощью правила типизации :
(λ2) Система F
В Системе F (также называемой λ2 для «типизированного лямбда-исчисления второго порядка») [2] существует другой тип абстракции, записанный с помощью , который позволяет термам зависеть от типов , со следующим правилом:
Термины, начинающиеся с a, называются полиморфными , поскольку их можно применять к разным типам для получения разных функций, аналогично полиморфным функциям в ML-подобных языках . Например, полиморфная идентичность
весело х -> х
OCaml имеет тип
' а -> ' а
то есть он может принимать аргумент любого типа 'aи возвращать элемент этого типа. Этот тип соответствует в λ2 типу .
(λω) Система Fω
В System F вводится конструкция для предоставления типов, зависящих от других типов . Это называется конструктором типа и предоставляет способ построения «функции с типом в качестве значения ». [3] Примером такого конструктора типа является тип двоичных деревьев с листьями, помеченными данными заданного типа : , где « » неформально означает « является типом». Это функция, которая принимает параметр типа в качестве аргумента и возвращает тип s значений типа . В конкретном программировании эта функция соответствует возможности определять конструкторы типов внутри языка, а не рассматривать их как примитивы. Предыдущий конструктор типа примерно соответствует следующему определению дерева с помеченными листьями в OCaml:
тип ' дерево = | Лист ' a | Узел ' дерева * ' дерево
Этот конструктор типов может быть применен к другим типам для получения новых типов. Например, для получения типа деревьев целых чисел:
тип int_tree = int дерево
Система F обычно не используется сама по себе, но полезна для выделения независимой функции конструкторов типов. [4]
(λP) Лямбда-P
В системе λP , также называемой λΠ, и тесно связанной с LF Logical Framework , есть так называемые зависимые типы . Это типы, которым разрешено зависеть от терминов . Ключевое вводное правило системы:
где представляет допустимые типы. Новый конструктор типов соответствует через изоморфизм Карри-Ховарда универсальному квантору, а система λP в целом соответствует логике первого порядка с импликацией как единственной связкой. Примером этих зависимых типов в конкретном программировании является тип векторов на определенной длине: длина является термином, от которого зависит тип.
(λω) Система Fω
System Fω объединяет как конструктор System F, так и конструкторы типов из System F. Таким образом, System Fω предоставляет как термины, зависящие от типов , так и типы, зависящие от типов .
(λC) Исчисление конструкций
В исчислении конструкций , обозначаемом как λC в кубе или как λPω, [1] : 130 эти четыре признака сосуществуют, так что и типы, и термины могут зависеть от типов и терминов. Четкая граница, существующая в λ→ между терминами и типами, несколько стирается, поскольку все типы, за исключением универсальных, сами являются терминами с типом.
Формальное определение
Как и все системы, основанные на простом типизированном лямбда-исчислении, все системы в кубе задаются в два этапа: сначала сырые термины вместе с понятием β-редукции , а затем правила типизации, которые позволяют типизировать эти термины.
Набор сортировок определяется как , сортировки представлены буквой . Также существует набор переменных, представленных буквами . Исходные термины восьми систем куба задаются следующим синтаксисом:
и обозначая, когда не встречается свободно в .
Окружения, как это обычно бывает в типизированных системах, задаются следующим образом:
Понятие β-редукции является общим для всех систем в кубе. Оно записывается и задается правилами Его рефлексивное, транзитивное замыкание записывается .
Следующие правила типизации также являются общими для всех систем в кубе:
Разница между системами заключается в парах сортировок , которые разрешены в следующих двух правилах типизации:
Соответствие между системами и парами, разрешенными в правилах, следующее:
Каждое направление куба соответствует одной паре (исключая пару, общую для всех систем), и, в свою очередь, каждая пара соответствует одной возможности зависимости между терминами и типами:
позволяет терминам зависеть от терминов.
позволяет типам зависеть от терминов.
позволяет терминам зависеть от типов.
позволяет типам зависеть от типов.
Сравнение систем
λ→
Типичный вывод, который может быть получен, это или с сокращением стрелки, очень похожий на тождество (типа ) обычного λ→. Обратите внимание, что все используемые типы должны появляться в контексте, поскольку единственный вывод, который может быть сделан в пустом контексте, это .
Вычислительная мощность довольно слабая, соответствует расширенным полиномам (полиномы вместе с условным оператором). [5]
λ2
В λ2 такие термины могут быть получены как с . Если читать как универсальную квантификацию, через изоморфизм Карри-Ховарда, это можно рассматривать как доказательство принципа взрыва. В общем, λ2 добавляет возможность иметь непредикативные типы, такие как , то есть термины, квантифицирующие по всем типам, включая себя. Полиморфизм также позволяет строить функции, которые не были конструктивны в λ→. Точнее, функции, определяемые в λ2, являются теми, которые доказуемо тотальны в арифметике Пеано второго порядка . [6] В частности, все примитивные рекурсивные функции определимы.
λP
В λP возможность иметь типы, зависящие от терминов, означает, что можно выразить логические предикаты. Например, следующее выводится: что соответствует, через изоморфизм Карри-Ховарда, доказательству . Однако с вычислительной точки зрения наличие зависимых типов не увеличивает вычислительную мощность, а только возможность выразить более точные свойства типов. [7]
Правило преобразования крайне необходимо при работе с зависимыми типами, поскольку оно позволяет выполнять вычисления над терминами в типе. Например, если есть и , нужно применить правило преобразования [a] , чтобы получить возможность ввести .
λω
В λω можно определить следующий оператор , то есть . Вывод может быть получен уже в λ2, однако полиморфизм может быть определен только в том случае, если также присутствует правило .
С точки зрения вычислений λω чрезвычайно силен и рассматривается как основа для языков программирования. [10]
λС
Исчисление конструкций обладает как предикатной выразительностью λP, так и вычислительной мощностью λω, поэтому λC также называется λPω, [1] : 130, то есть оно очень мощно, как с логической, так и с вычислительной стороны.
Связь с другими системами
Система Automath похожа на λ2 с логической точки зрения. Языки, подобные ML , с точки зрения типизации лежат где-то между λ→ и λ2, поскольку они допускают ограниченный вид полиморфных типов, то есть типы в предваренной нормальной форме. Однако, поскольку они имеют некоторые операторы рекурсии, их вычислительная мощность больше, чем у λ2. [7] Система Coq основана на расширении λC с линейной иерархией вселенных, а не только с одной нетипизируемой , и способностью строить индуктивные типы.
Чистые системы типов можно рассматривать как обобщение куба с произвольным набором правил сортировки, аксиомы, продукта и абстракции. Наоборот, системы лямбда-куба можно выразить как чистые системы типов с двумя сортировками , единственной аксиомой и набором правил , таким что . [1]
Благодаря изоморфизму Карри-Ховарда существует однозначное соответствие между системами в лямбда-кубе и логическими системами [1] , а именно:
Все логики импликативные (т.е. единственными связками являются и ), однако можно определить другие связки, такие как или непредикативным способом в логиках второго и более высокого порядка. В слабых логиках более высокого порядка есть переменные для предикатов более высокого порядка, но никакая квантификация по ним не может быть сделана.
Общие свойства
Все системы в кубе пользуются
свойство Чёрча -Россера : если и то существует такое, что и ;
Все это можно доказать на общих системах чистого типа. [11]
Любой хорошо типизированный термин в системе куба является строго нормализующим, [1] хотя это свойство не является общим для всех чистых систем типов. Ни одна система в кубе не является полной по Тьюрингу. [7]
Подтипирование
Подтипирование, однако, не представлено в кубе, хотя такие системы, как , известные как ограниченная квантификация высшего порядка, которые объединяют подтипирование и полиморфизм, представляют практический интерес и могут быть далее обобщены до операторов ограниченного типа. Дальнейшие расширения, позволяющие определять чисто функциональные объекты; эти системы были в целом разработаны после публикации статьи о лямбда-кубе. [12]
Идея куба принадлежит математику Хенку Барендрегту (1991). Структура чистых типовых систем обобщает лямбда-куб в том смысле, что все углы куба, а также многие другие системы могут быть представлены как экземпляры этой общей структуры. [13] Эта структура предшествует лямбда-кубу на пару лет. В своей статье 1991 года Барендрегт также определяет углы куба в этой структуре.
Смотрите также
В своей работе Habilitation à diriger les recherches [ 14] Оливье Риду приводит вырезанный шаблон лямбда-куба, а также двойственное представление куба в виде октаэдра, где 8 вершин заменены гранями, а также двойственное представление в виде додекаэдра, где 12 ребер заменены гранями.
Примечания
^ abcdef Барендрегт, Хенк (1991). «Введение в системы обобщенных типов». Журнал функционального программирования . 1 (2): 125–154. doi :10.1017/s0956796800020025. hdl : 2066/17240 . ISSN 0956-7968. S2CID 44757552.
^ Недерпелт, Роб; Гейверс, Герман (2014). Теория типов и формальное доказательство. Cambridge University Press. стр. 69. ISBN9781107036505.
^ Жирар, Жан-Ив; Лафон, Ив; Тейлор, Пол (1989). Доказательства и типы . Cambridge Tracts in Theoretical Computer Science. Том 7. Cambridge University Press. ISBN9780521371810.
^ abc Риду, Оливье (1998). Лямбда-пролог A à Z ... или presque (PDF) . [сн] OCLC 494473554.
^ Ангиули, Карло; Гратцер, Дэниел (2024). «2.1.3 Кто проверяет типы правил типизации? и 2.2 К синтаксису теории зависимых типов». Принципы теории зависимых типов (PDF) . Университет Индианы и Орхусский университет . Получено 7 сентября 2024 г. .
^ Favier, Naïm (17 августа 2023 г.). «В правиле вывода преобразования лямбда-куба, почему необходимо Γ ⊢ B′:s?». Computer Science Stack Exchange . Получено 7 сентября 2024 г.
^ Пирс, Бенджамин; Дитцен, Скотт; Михайлов, Спиро (1989). Программирование в типизированных лямбда-исчислениях высшего порядка . Кафедра компьютерных наук, Университет Карнеги-Меллона. OCLC 20442222. CMU-CS-89-111 ERGO-89-075.
^ Sørensen, Morten Heine; Urzyczyin, Pawel (2006). "Pure type systems and the λ-cube". Lectures on the Curry-Howard Isomorphism . Elsevier. pp. 343–359. doi :10.1016/s0049-237x(06)80015-7. ISBN9780444520777.
^ Пирс, Бенджамин (2002). Типы и языки программирования . MIT Press. С. 467–490. ISBN978-0262162098. OCLC 300712077.
^ Пирс 2002, стр. 466
^ Риду 1998, стр. 70
^ Предположение в правиле преобразования является удобным; вместо этого можно было бы доказать метатеорему, что . [8] [9]
Дальнейшее чтение
Пейтон Джонс, Саймон; Мейер, Эрик (1997). "Henk: A Typed Intermediate Language" (PDF) . Microsoft . Henk основан непосредственно на лямбда-кубе, выразительном семействе типизированных лямбда-исчислений.
Внешние ссылки
Лямбда-куб Барендрегта в контексте систем чистых типов Роджера Бишопа Джонса