Введение

Формальная система в математической логике.
Лямбда-исчисление простого типа, являющееся формой теории типов, представляет собой типизированную интерпретацию лямбда-исчисления с единственным конструктором типа, формирующим типы функций. Это канонический и наиболее простой пример типизированного лямбда-исчисления. Лямбда-исчисление простого типа было первоначально введено Алонзо Черчем в 1940 году как попытка избежать парадоксального использования нетипизированного лямбда-исчисления. Его лямбда-исчисление, как формальный язык, основанный на символических выражениях, состояло из счетно бесконечного ряда аксиом и переменных, а также из конечного набора примитивных символов и конечного набора правил I–VI. Этот конечный набор правил включал правило V modus ponens, а также правила IV и VI для подстановки и обобщения соответственно. (1) (2) (3) (4)

Иными словами, если имеет тип в данном контексте, то имеет тип . Терминные константы имеют соответствующие базовые типы. Если в определенном контексте, где имеет тип , имеет тип , то в том же контексте без имеет тип . Если в определенном контексте имеет тип , и имеет тип , то имеет тип .

Примеры закрытых термов, то есть термов, типизируемых в пустом контексте:
Для каждого типа , терм (комбинатор тождества/I-комбинатор),
Для типов , терм (K-комбинатор), и
Для типов , терм (S-комбинатор). Это типизированные представления лямбда-исчисления основных комбинаторов комбинаторной логики. Каждому типу присваивается порядок – число. Для базовых типов порядок равен 0; для функциональных типов порядок равен 1 плюс порядок типа аргумента. То есть, порядок типа измеряет глубину наиболее левой вложенной стрелки. Следовательно:

Внутренние и внешние интерпретации

В целом, существует два различных подхода к приданию смысла просто типизированному лямбда-исчислению, а также типизированным языкам в более широком смысле, которые называют внутренним и внешним, онтологическим и семантическим, или стилем Черча и стилем Карри. Внутренняя семантика приписывает смысл только корректно типизированным термам, или, точнее, непосредственно типовым выводкам. Это приводит к тому, что термы, различающиеся только типовыми аннотациями, тем не менее могут иметь разные значения. Например, терм тождества для целых чисел и терм тождества для булевых значений могут означать разные вещи. (Классические интерпретации – это функция тождества на целых числах и функция тождества на булевых значениях.) В отличие от этого, внешняя семантика приписывает смысл термам независимо от их типизации, как если бы они интерпретировались в нетипизированном языке. С этой точки зрения, и означают одно и то же (то есть то же самое, что и ). Различие между внутренней и внешней семантикой иногда связывают с наличием или отсутствием аннотаций у лямбда-абстракций, но строго говоря, такое употребление неточно. Можно определить внешнюю семантику для аннотированных термов, просто игнорируя типы (то есть посредством стирания типов), как и можно задать внутреннюю семантику для неаннотированных термов, когда типы могут быть выведены из контекста (то есть посредством вывода типов). Существенное различие между внутренним и внешним подходами заключается в том, рассматриваются ли правила типизации как определяющие язык, или как формализм для проверки свойств более примитивного базового языка. Большинство различных семантических интерпретаций, обсуждаемых ниже, можно рассматривать либо с внутренней, либо с внешней точки зрения.

Операционная семантика

Аналогичным образом, операционная семантика просто типизированного лямбда-исчисления может быть определена так же, как и для нетипизированного лямбда-исчисления, используя передачу по имени, передачу по значению или другие стратегии вычисления. Как и для любого типизированного языка, типобезопасность является фундаментальным свойством всех этих стратегий вычисления. Кроме того, свойство сильной нормализации, описанное ниже, подразумевает, что любая стратегия вычисления завершится для всех просто типизированных термов. Чисто семантическое доказательство нормализации (см. нормализацию посредством вычисления) было представлено Бергером и Швихтенбергом в 1991 году. Мы можем кодировать натуральные числа с помощью термов типа (числа Черча). Швихтенберг показал в 1975 году, что именно расширенные полиномы представимы как функции над числами Черча.