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

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

FV(x)\displaystyle \mathrm{FV}(x) ={x},\displaystyle {} = \{x\},FV(λx.M)\displaystyle \mathrm{FV}(\lambda x.\,M)=FV(M){x},\displaystyle {} = \mathrm{FV}(M)\setminus\{x\},FV(MN)\displaystyle \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,\displaystyle {} = N,y[x:=N]\displaystyle 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],\displaystyle {} = \lambda y.\,M[x{:=}N],y\displaystyle yx,  y\displaystyle {} \neq x,\; yFV(N)\displaystyle {} \notin \mathrm{FV}(N)
(1.5)

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

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

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