本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和元年度 技術士第一次試験問題(再)【専門科目】

V−3

次のラムダ式をβ簡約することによって得られるβ正規形として最も適切なものは どれか。
((λ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)32+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 の ywなどに置き換え、
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 ・・・α変換。yw
→ (λ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