Исчисление каппа - Kappa calculus

В математическая логика, теория категорий, иИнформатика, исчисление каппа этоформальная система для определения первый заказфункции.

В отличие от лямбда-исчисление, исчисление каппа не имеетфункции высшего порядка; его функции не объекты первого класса. Каппа-исчисление можно рассматривать как «переформулировку фрагмента первого порядка типизированного лямбда-исчисления».[1]

Поскольку его функции не являются первоклассными объектами, для вычисления выражений каппакалькулуса не требуетсязакрытие.

Определение

Приведенное ниже определение было адаптировано из диаграмм на страницах 205 и 207 Hasegawa.[1]

Грамматика

Исчисление Каппа состоит из типы и выражения дается приведенной ниже грамматикой:

Другими словами,

  • 1 - это тип
  • Если и типы тогда это тип.
  • Каждая переменная - это выражение
  • Если τ это тип тогда это выражение
  • Если τ это тип тогда это выражение
  • Если τ - это тип, а e - выражение, тогда это выражение
  • Если и тогда выражения это выражение
  • Если x - переменная, τ - это тип, а e - выражение, тогда это выражение

В и индексы я бы, !, и иногда опускаются, если их можно однозначно определить из контекста.

Сопоставление часто используется как сокращение для комбинации и состав:

Правила набора

В презентации здесь используются секвенции (), а не гипотетические суждения, чтобы облегчить сравнение с просто типизированным лямбда-исчислением. Для этого требуется дополнительное правило Var, которого нет в Hasegawa.[1]

В исчислении каппа выражение бывает двух типов: тип его источник и тип его цель. Обозначение используется, чтобы указать, что выражение e имеет исходный тип и тип цели .

Выражениям в исчислении каппа присваиваются типы в соответствии со следующими правилами:

(Вар)
(Идентификатор)
(Хлопнуть)
(Comp)
(Поднимать)
(Каппа)

Другими словами,

  • Вар: предполагая позволяет сделать вывод, что
  • Идентификатор: для любого типа τ,
  • Хлопнуть: для любого типа τ,
  • Комп: если целевой тип соответствует типу источника они могут быть составлены, чтобы сформировать выражение с источником типа и целевой тип
  • Поднимать: если , тогда
  • Каппа: если мы можем сделать вывод, что в предположении, что , то можно сделать вывод без этого предположения который

Равенство

Исчисление Каппа подчиняется следующим равенствам:

  • Нейтралитет: Если тогда и
  • Ассоциативность: Если , , и , тогда .
  • Терминальность: Если и тогда
  • Подъем-снижение:
  • Каппа-редукция: если x не свободен в h

Последние два равенства - это правила редукции для исчисления, переписываемые слева направо.

Характеристики

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

Выражения с типом могут рассматриваться как «константы» или значения «типа земли»; это потому что 1 - это тип единицы, поэтому функция этого типа обязательно является постоянной функцией. Обратите внимание, что правило каппа допускает абстракции только тогда, когда абстрагируемая переменная имеет тип для некоторых τ. Это основной механизм, обеспечивающий первоочередность всех функций.

Категориальная семантика

Исчисление Каппа предназначено быть внутренним языкомконтекстно полный категории.

Примеры

Выражения с несколькими аргументами имеют исходные типы, которые являются двоичными деревьями с "несбалансированным вправо". Например, функция f с тремя аргументами типов A, B и C и типом результата D будет иметь тип

Если мы определим левоассоциативное сопоставление как сокращение для , то - предполагая, что, , и - мы можем применить эту функцию:

Поскольку выражение имеет тип источника 1, это «основное значение», которое может быть передано в качестве аргумента другой функции. Если , тогда

Очень похоже на каррированную функцию типа в лямбда-исчислении возможно частичное применение:

Однако нет более высоких типов (т.е. ) вовлечены. Обратите внимание: поскольку исходный тип е а не является 1, следующее выражение не может быть хорошо типизировано при упомянутых выше предположениях:

Поскольку для нескольких аргументов используется последовательное приложение, нет необходимости знать арность функции для определения ее типизации; например, если мы знаем, что тогда выражение

j c

хорошо напечатан, пока j имеет тип

для некоторых α

и β. Это свойство важно при расчете основной тип выражения, что может быть трудным при попытке исключить функции высшего порядка из типизированных лямбда-исчислений путем ограничения грамматики типов.

История

Первоначально представил Барендрегт[2] термин «функциональная полнота» в контексте комбинаторной алгебры. Исчисление Каппа возникло благодаря усилиям Ламбека[3] сформулировать подходящий аналог функциональной полноты для произвольных категорий (см. Hermida, Jacobs,[4] секция 1). Позже Хасегава разработал каппакалькулус в удобный (хотя и простой) язык программирования, включающий арифметику над натуральными числами и примитивную рекурсию.[1] Подключения к стрелки позже были исследованы[5] от Power, Thielecke и др.

Варианты

Можно исследовать версии исчисления каппа ссубструктурные типы Такие как линейный, аффинныйупорядоченный типы. Эти расширения требуют устранения или ограничения выражение. В таких обстоятельствах × Оператор типа не является настоящим декартовым произведением и обычно записывается чтобы прояснить это.

Рекомендации

  1. ^ а б c d Хасэгава, Масахито (1995). «Разложение типизированного лямбда-исчисления на пару категориальных языков программирования». В Питте, Дэвид; Райдхард, Дэвид Э .; Джонстон, Питер (ред.). Категория Теория и информатика. Теория категорий и информатика: 6-я Международная конференция, CTCS '95 Кембридж, Соединенное Королевство, 7–11 августа 1995 г. Материалы. Конспект лекций по информатике. 953. Springer-Verlag Berlin Heidelberg. С. 200–219. CiteSeerX  10.1.1.53.715. Дои:10.1007/3-540-60164-3_28. ISBN  978-3-540-60164-7. ISSN  0302-9743. Сложить резюме«Адам» отвечает: «Что такое κ-категории? "на MathOverflow (31 августа 2010 г.).
  2. ^ Барендрегт, Хендрик Питер, изд. (1 октября 1984 г.). Лямбда-исчисление: его синтаксис и семантика. Исследования по логике и основам математики. 103 (Пересмотренная ред.). Амстердам, Северная Голландия: Elsevier Science. ISBN  978-0-444-87508-2.
  3. ^ Ламбек, Иоахим (1 августа 1973 г.). «Функциональная полнота декартовых категорий». Анналы математической логики (опубликовано в марте 1974 г.). 6 (3–4): 259–292. Дои:10.1016/0003-4843(74)90003-5. ISSN  0003-4843. Сложить резюме«Адам» отвечает: «Что такое κ-категории? "на MathOverflow (31 августа 2010 г.).
  4. ^ Гермида, Клаудио; Джейкобс, Барт (декабрь 1995 г.). «Фибрации с неопределенными: контекстная и функциональная полнота для полиморфных лямбда-исчислений». Математические структуры в компьютерных науках. 5 (4): 501–531. Дои:10.1017 / S0960129500001213. ISSN  1469-8072.
  5. ^ Власть, Джон; Тилеке, Хайо (1999). Видерманн, Иржи; ван Эмде Боас, Питер; Нильсен, Могенс (ред.). Закрытые Фрейд- и κ-Категории. Автоматы, языки и программирование: 26-й международный коллоквиум, ICALP'99, Прага, Чешская Республика, 11–15 июля 1999 г. Труды. Конспект лекций по информатике. 1644. Springer-Verlag Berlin Heidelberg. С. 625–634. CiteSeerX  10.1.1.42.2151. Дои:10.1007/3-540-48523-6_59. ISBN  978-3-540-66224-2. ISSN  0302-9743.