Само λ-исчисление можно построить всего на трёх из них — S, K, I. В комбинаторной логике их берут за примитивы:
Причём I даже не обязателен как примитив — он выражается через S и K:
Давайте подставим и докажем формулу — раскроем на произвольном аргументе по определениям (1.28):
На любом получаем — ровно то, что делает , значит .
Любой λ-терм механически переводится в комбинаторы. Терм строится тремя способами — переменная, применение и абстракция; переменные и применение в комбинаторной логике уже есть, а вот абстракцию нужно устранить. Это делает bracket abstraction — операция , «вынести переменную из терма ». Её результат — комбинаторный терм, в котором уже не встречается, но который, если подать ему обратно, снова сводится к . Определяется она по виду тела :
- : тело — это сама ; вернуть аргумент как есть умеет .
- при : тело от не зависит, поэтому переданный аргумент надо просто выбросить.
- : в применении может прятаться и в , и в , поэтому аргумент нужно раздать обоим — этим и занимается .
Если же тело само — абстракция , сперва убирают внутреннюю переменную, а потом внешнюю: ; так вложенные снимаются изнутри наружу, пока не останутся только переменные и применения.
Разберём . Тело — это применение , так что раскручиваем правилом для применения, сводя всё к , , :
Переменных в ответе нет — только , , и свободная : .