“Introduction to Lambda Calculus” メモ(その4)

感想としては外に当たらないと解答できないような問題は解けるわけがないよ、というところでした…

問題2.9

$MNL$ は(特に次の問題との対比で)どうやら、 freevariable を含む λ-term であるかもしれない、ということになると考えられます。つまり、$F$ を λ-term で素直に abstraction にすることができない。

例えば、 $F = λmn.m(nm)n$ とすると、 $n$ に $m$ が freevariable を含む λ-term だった場合。 closed λ-term と陽に closed であることを問題にしているのだろうと考えました。

これの Completeness of the S-K basis の所。任意の λ-term は、$S$ と $K$ の組み合わせで表現することができる、ということで、以下が示されています。

$\begin{array} & \mbox{(1) } T[x] \Rightarrow x \\ \mbox{(2) } T[(E_{1}E_{2})] \Rightarrow (T[E_{1}] T[E_{2}]) \\ \mbox{(3) } T[λx.E] \Rightarrow (K T[E]) \mbox{ (if x does not occur free in E)} \\ \mbox{(4) } T[λx.x] \Rightarrow I \\ \mbox{(5) } T[λx.λy.E] \Rightarrow T[λx.T[λy.E]] \mbox{ (if x occurs free in E)} \\ \mbox{(6) } T[λx.(E_{1}E_{2})] \Rightarrow (S T[λx.E_{1}] T[λx.E_{2}]) \end{array}$

以下が示される例。

$\begin{array} & T[λx.λy.(yx)] \\ = T[λx.T[λy.(y x)]] \mbox{ (by 5)} \\ = T[λx.(S T[λy.y] T[λy.x])] \mbox{ (by 6)} \\ = T[λx.(S I T[λy.x])] \mbox{ (by 4)} \\ = T[λx.(S I (K x))] \mbox{ (by 3 and 1)} \\ = (S T[λx.(S I)] T[λx.(K x)]) \mbox{ (by 6)} \\ = (S (K (S I)) T[λx.(K x)]) \mbox{ (by 3)} \\ = (S (K (S I)) (S T[λx.K] T[λx.x])) \mbox{ (by 6)} \\ = (S (K (S I)) (S (K K) T[λx.x])) \mbox{ (by 3)} \\ = (S (K (S I)) (S (K K) I)) \mbox{ (by 4)} \end{array}$

$S,K,I$ で示すことができたので、これに今度は $x, y$ を適用しています。

$\begin{array} & (S (K (S I)) (S (K K) I) x y) \\ = (K (S I) x (S (K K) I x) y) \\ = (S I (S (K K) I x) y) \\ = (I y (S (K K) I x y)) \\ = (y (S (K K) I x y)) \\ = (y (K K x (I x) y)) \\ = (y (K (I x) y)) \\ = (y (I x)) \\ = (y x) \\ \end{array}$

というわけで、問題 $\mbox{(i) }F ≡ λmn.m(nm)n$ 。

$\begin{array} & T[λmn.m(nm)n] \\ = T[λm.λn.m(nm)n] \\ = T[λm.T[λn.m(nm)n]] \\ = T[λm.(S T[λn.(m(nm))] T[λn.n])] \\ = T[λm.(S (S T[λn.m] T[λn.(nm)]) T[λn.n])] \\ = T[λm.(S (S (K m) T[λn.(nm)]) T[λn.n]) \\ = T[λm.(S (S (K m) (S T[λn.n] T[λn.m])) T[λn.n]) \\ = T[λm.(S (S (K m) (S I T[λn.m])) T[λn.n]) \\ = T[λm.(S (S (K m) (S I (K m))) T[λn.n]) \\ = T[λm.(S (S (K m) (S I (K m))) I) \\ = (S T[λm.(S (S (K m) (S I (K m))))] T[λm.I]) \\ = (S (S T[λm.S] T[λm.(S (K m) (S I (K m)))]) T[λm.I]) \\ = (S (S (K S) T[λm.(S (K m) (S I (K m)))]) T[λm.I]) \\ = (S (S (K S) T[λm.((S (K m)) (S I (K m)))]) T[λm.I]) \\ = (S (S (K S) (S T[λm.(S (K m))] T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S T[λm.S] T[λm.(K m)]) T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) T[λm.(K m)]) T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S T[λm.K] T[λm.m])) T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) T[λm.m])) T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) T[λm.(S I (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) T[λm.((S I) (K m))])) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S T[λm.(S I)] T[λm.(K m)]))) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) T[λm.(K m)]))) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S T[λm.K] T[λm.m])))) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) T[λm.m])))) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)))) T[λm.I]) \\ = (S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)))) (K I)) \\ \end{array}$

今度はこの結果に $m,n$ を適用します。

$\begin{array} & Fmn \\ =((S (S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)))) (K I))m n) \\ =(S (K S) (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I))) m (K I m) n) \\ =(K S m (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)) m) (K I m) n) \\ =(S (S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)) m) (K I m) n) \\ =(S (S (K S) (S (K K) I)) (S (K (S I)) (S (K K) I)) m n (K I m n)) \\ =(S (K S) (S (K K) I) m (S (K (S I)) (S (K K) I) m) n (K I m n)) \\ =(K S m (S (K K) I m) (S (K (S I)) (S (K K) I) m) n (K I m n)) \\ =(S (S (K K) I m) (S (K (S I)) (S (K K) I) m) n (K I m n)) \\ =(S (K K) I m n (S (K (S I)) (S (K K) I) m n) (K I m n)) \\ =(K K m (I m) n (S (K (S I)) (S (K K) I) m n) (K I m n)) \\ =(K (I m) n (S (K (S I)) (S (K K) I) m n) (K I m n)) \\ =((I m) (S (K (S I)) (S (K K) I) m n) (K I m n)) \\ =(m (S (K (S I)) (S (K K) I) m n) (K I m n)) \\ =(m (K (S I) m (S (K K) I m) n) (K I m n)) \\ =(m (S I (S (K K) I m) n) (K I m n)) \\ =(m (I n (S (K K) I m n)) (K I m n)) \\ =(m (n (S (K K) I m n)) (K I m n)) \\ =(m (n (K K m (I m) n)) (K I m n)) \\ =(m (n (K (I m) n)) (K I m n)) \\ =(m (n (I m)) (K I m n)) \\ =(m (n m) (K I m n)) \\ =(m (n m) (I n)) \\ =(m (n m) n) \\ \end{array}$