次のラムダ式をβ簡約することによって得られるβ正規形として最も適切なものは どれか。 
          ((λxy.xy) (λx.xy) λz.z)
@ x A y B λx.x C λy.y D λz.z
A
ラムダ式はラムダ計算式ともいう。
          例えば f(x) = x+1 の関数は λx.x+1 と表記される。
          
          この関数の引数が2であれば、 
          f(2) = 2+1 = 3 であるが、ラムダ式では
          (λx.x+1)2 と表記し、(λx.x+1)2 → 2+1 → 3 となる。
          
          また、f(x, y) = x+y の関数は、λx.λy.x+y もしくは λxy.x+y と表記され、
          (x, y) = (2, 3)の場合
          (λx.λy.(x+y))23 → (λy.(2+y))3 → 2+3 → 5 
          もしくは
          (λxy.x+y)23 → (λy.2+y)3 → 2+3 → 5 となる。
          
          簡約は、ラムダ式を実行していくことである。
          (λxy.x) (λx.xx) (λz.z) の場合、
          (λxy.x) (λx.xx) (λz.z)
          → λy.(λx.xx)(λz.z) 
          → λx.xx ・・・f(y) = λx.xx の y に(λz.z)を適用したのと同じ。
となる。
          
          もう一つ、 (λxy.x)yz のような場合は注意が必要で、yをxに入れると
          (λxy.x)yz → (λy.y)z となる。
          この時、y.yは異なるにも関わらず同じ y とみなして、zをyに入れて、
          (λy.y)z → z とするのは誤りとなる。
          
          このような場合は、 (λxy.x)yz の yをwなどに置き換え、
          (λxw.x)yz → (λw.y)z → yが正しい変換となる。
          この置き換えは、α変換という。
          
          これらを踏まえ、問題のラムダ式をβ簡約すると、以下のとおりとなる。
          
          ((λxy.xy) (λx.xy) λz.z)
          → (λy.(λx.xy)y) λz.z
          → (λw.(λx.xy)w)λz.z ・・・α変換。y → w
          → (λx.xy)λz.z ・・・λw.(λx.xy)は、f(w) = λx.xy
          → (λz.z)y ・・・λx.xyは、f(x) = xy (これは x×y という掛算ではない。)
          → y
| V−2 | 目次 | V−4 |