本文へスキップ

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


Since 2016.4.19

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

Ⅲ-4

ラムダ式で表されたチャーチ数は、次のように定義することができる。
0 = λfx.x
1 = λfx.fx
2 = λfx.f(fx)
3 = λfx.f(f(fx))
4 = λfx.f(f(f(fx)))
5 = λfx.f(f(f(f(fx))))
この定義を用いて自然数の演算を定義することができる。それを用いた次のラムダ式
 λpqfx.pf(qfx) 3 1
を簡約して得られるラムダ式がチャーチ数として表す自然数はいずれか。

① 1  ② 2  ③ 3  ④ 4  ⑤ 5


正解


解説

ラムダ式はラムダ計算式ともいう。
例えば f(x) = x+1 の関数は、λx.x+1 と表記される。

この関数の引数が2であれば、
f(2) = 2+1 = 3 であるが、ラムダ式では
(λx.x+1)2 と表記し、(λx.x+1)2 → 2+1 → 3 となる。

変数が2つのラムダ計算式の場合、
例えば f(x, y) = x+y の関数は、λx.λy.x+y もしくは λxy.x+y と表記され、
(x, y) = (2, 3)の場合
x.λy.(x+y))23 → (λy.(2+y))32+3 → 5
もしくは
xy.x+y)23 → (λy.2+y)32+3 → 5 となる。

また、高階関数の場合、
例えば λf.λx.f(f(x)) は、関数 f とデータ x を引数とし、f を x に 2 回適用した値を返す f(f(x)) を表す。
たとえば,f(x) = x∗2 、すなわち f = λx.x∗2 のとき
f(f(x)) = f(x*2) →(x*2)*2 → x*4 だから
λf.λx.f(f(x)) → λx.x*4 を表す。


以下のように変形して計算できる。

λpqfx.pf(qfx) 3 1
→ λqfx.3f(qfx) 1
→ λfx.3f(1fx)
→ 3f(fx)
ここで、3 = λfx.f(f(fx)) だから
3f(fx)
→ λfx.f(f(fx)) f(fx)
→ f(f(f(fx))) → 4

Ⅲ-3 目次 Ⅲ-5