Связанные и свободные переменные

В этой главе рассмотрим достаточно тривиальные вещи, но они будут очень полезны в последующем материале. Введём такое понятие, как свободные переменные, которые обозначим FVFV. Вот несколько примеров применения этого понятия ко всем известным нам термам.

FV(x)\displaystyle \mathrm{FV}(x) ={x},FV(λx.M)\displaystyle = \{x\}, \qquad \mathrm{FV}(\lambda x.\,M) =FV(M){x},FV(MN)\displaystyle = \mathrm{FV}(M)\setminus\{x\}, \qquad \mathrm{FV}(M\,N) =FV(M)FV(N)\displaystyle = \mathrm{FV}(M)\cup\mathrm{FV}(N)
(1.2)

У одиночной переменной xx свободна сама xx. В абстракции λx.M\lambda x.\,M переменная xx связывается ближайшей лямбдой, поэтому из свободных переменных тела MM её надо убрать. В применении MNM\,N свободные переменные берутся из обеих частей: всё свободное в MM плюс всё свободное в NN. Терм без свободных переменных называется замкнутым, или комбинатором; при этом одна и та же буква может встретиться и свободно, и связанно, например, в x(λx.x)x\,(\lambda x.\,x).

Напомню, что терм представляет собой дерево, а переменные — листья. Так вот, в листья можно подставлять, в свою очередь, поддеревья, то есть термы. Такая операция называется подстановкой. Вот несколько примеров таких подстановок:

x[x:=N]\displaystyle x[x{:=}N] =N,y[x:=N]\displaystyle = N, \qquad y[x{:=}N] =y    (yx)\displaystyle = y \;\; (y \neq x)
(1.3)
(M1M2)[x:=N]\displaystyle (M_1\,M_2)[x{:=}N] =M1[x:=N]  M2[x:=N]\displaystyle = M_1[x{:=}N]\;M_2[x{:=}N]
(1.4)
(λy.M)[x:=N]\displaystyle (\lambda y.\,M)[x{:=}N] =λy.M[x:=N],y\displaystyle = \lambda y.\,M[x{:=}N], \qquad y x,  y\displaystyle \neq x,\; y FV(N)\displaystyle \notin \mathrm{FV}(N)
(1.5)

Вот видите, появились уже какие-то ограничения. А почему? Тут есть важная тонкость. Например, если условие yy FV(N)\notin \mathrm{FV}(N) нарушено, свободная переменная «захватывается» чужой абстракцией:

(λy.x)[x:=y]\displaystyle (\lambda y.\,x)[x{:=}y] λy.y— смысл изменился!\displaystyle \neq \lambda y.\,y \quad\text{— смысл изменился!}

Лекарство — α-конверсия, но об этом чуть позже.