stringtranslate.com

Лямбда-куб

Лямбда-куб. Направление каждой стрелки — направление включения.

В математической логике и теории типов λ -куб (также пишется как лямбда-куб ) — это структура, введенная Хенком Барендрегтом [1] для исследования различных измерений, в которых исчисление конструкций является обобщением простого типизированного λ-исчисления . Каждое измерение куба соответствует новому виду зависимости между терминами и типами. Здесь «зависимость» относится к способности термина или типа связывать термин или тип. Соответствующие измерения λ-куба соответствуют:

Различные способы объединения этих трех измерений дают 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 года Барендрегт также определяет углы куба в этой структуре.

Смотрите также

Примечания

  1. ^ abcdef Барендрегт, Хенк (1991). «Введение в системы обобщенных типов». Журнал функционального программирования . 1 (2): 125–154. doi :10.1017/s0956796800020025. hdl : 2066/17240 . ISSN  0956-7968. S2CID  44757552.
  2. ^ Недерпелт, Роб; Гейверс, Герман (2014). Теория типов и формальное доказательство. Cambridge University Press. стр. 69. ISBN 9781107036505.
  3. ^ Nederpelt & Geuvers 2014, с. 85
  4. ^ Nederpelt & Geuvers 2014, стр. 100
  5. ^ Швихтенберг, Гельмут (1975). «Definierbare Funktionen imλ-Kalkül mit Typen». Archiv für Mathematische Logik und Grundlagenforschung (на немецком языке). 17 (3–4): 113–114. дои : 10.1007/bf02276799. ISSN  0933-5846. S2CID  11598130.
  6. ^ Жирар, Жан-Ив; Лафон, Ив; Тейлор, Пол (1989). Доказательства и типы . Cambridge Tracts in Theoretical Computer Science. Том 7. Cambridge University Press. ISBN 9780521371810.
  7. ^ abc Риду, Оливье (1998). Лямбда-пролог A à Z ... или presque (PDF) . [сн] OCLC  494473554.
  8. ^ Ангиули, Карло; Гратцер, Дэниел (2024). «2.1.3 Кто проверяет типы правил типизации? и 2.2 К синтаксису теории зависимых типов». Принципы теории зависимых типов (PDF) . Университет Индианы и Орхусский университет . Получено 7 сентября 2024 г. .
  9. ^ Favier, Naïm (17 августа 2023 г.). «В правиле вывода преобразования лямбда-куба, почему необходимо Γ ⊢ B′:s?». Computer Science Stack Exchange . Получено 7 сентября 2024 г.
  10. ^ Пирс, Бенджамин; Дитцен, Скотт; Михайлов, Спиро (1989). Программирование в типизированных лямбда-исчислениях высшего порядка . Кафедра компьютерных наук, Университет Карнеги-Меллона. OCLC  20442222. CMU-CS-89-111 ERGO-89-075.
  11. ^ 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. ISBN 9780444520777.
  12. ^ Пирс, Бенджамин (2002). Типы и языки программирования . MIT Press. С. 467–490. ISBN 978-0262162098. OCLC  300712077.
  13. ^ Пирс 2002, стр. 466
  14. ^ Риду 1998, стр. 70
  1. ^ Предположение в правиле преобразования является удобным; вместо этого можно было бы доказать метатеорему, что . [8] [9]

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

Внешние ссылки