Просто типизированное лямбда-исчисление (простое типизированное лямбда-исчисление, лямбда-исчисление с простыми типами, система ) — система типизированного лямбда-исчисления, в которой лямбда-абстракции приписывается специальный «стрелочный» тип. Эта система была предложена Алонзо Чёрчем в 1940 году[1]. Для близкого к лямбда-исчислению формализма комбинаторной логики похожая система рассматривалась Хаскеллом Карри в 1934 году[2].
В базовой версии системы типы конструируются из набора переменных с помощью единственного бинарного инфиксного конструктора . По традиции для переменных типа используют греческие буквы, а оператор считают правоассоциативным, то есть является сокращением для . Буквы из второй половины греческого алфавита ( , , и т.д.) часто используются для обозначения произвольных типов, а не только переменных типа.
Различают две версии просто типизированной системы. Если в качестве термов используются те же термы, что и в бестиповом лямбда-исчислении, то систему называют неявно типизированной или типизированной по Карри. Если же переменные в лямбда-абстракции аннотируются типами, то систему называют явно типизированной или типизированной по Чёрчу. В качестве примера приведём тождественную функцию в стиле Карри: , и в стиле Чёрча: .
Правила редукции не отличаются от правил для бестипового лямбда-исчисления. -редукция определяется через подстановку
-редукция определяется так
Для -редукции требуется, чтобы переменная не была свободной в терме .
Контекстом называется множество утверждений о типизации переменных, разделённых запятой, например,
Контексты обычно обозначают прописными греческими буквами: . В контекст можно добавить «свежую» для этого контекста переменную: если — допустимый контекст, не содержащий переменной , то — тоже допустимый контекст.
Общий вид утверждения о типизации таков:
Это читается следующим образом: в контексте терм имеет тип .
В просто типизированном лямбда-исчислении приписывание типов термам осуществляется по приведённым ниже правилам.
Аксиома. Если переменной присвоен в контексте тип , то в этом контексте имеет тип . В виде правила вывода:
Правило введения . Если в некотором контексте, расширенном утверждением, что имеет тип , терм имеет тип , то в упомянутом контексте (без ), лямбда-абстракция имеет тип . В виде правила вывода:
Правило удаления . Если в некотором контексте терм имеет тип , а терм имеет тип , то применение имеет тип . В виде правила вывода:
Первое правило позволяет приписать тип свободным переменным, задав их в контексте. Второе правило позволяет типизировать лямбда-абстракцию стрелочным типом, убирая из контекста связываемую этой абстракцией переменную. Третье правило позволяет типизировать аппликацию (применение) при условии, что левый аппликант имеет подходящий стрелочный тип.
Примеры утверждений о типизации в стиле Чёрча:
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .