←講義のツボメニューへ
情報学基礎A
【第16回】【2000.12.12】
関数モデル
(5)
部分式
あるラムダ式Mを構成していく過程で作られるラムダ式のことをMの部分式という。
ラムダ式Mに対し、Mの部分式は
- Mが変数xならば、部分式はである。
- Mが(λx.N)ならば、部分式はNの部分式及びM。
- Mが(N1 N2)ならば、部分式はN1の部分式、N2の部分式、及びM。
例)
(λx.(λy.x))の部分式は(λx.(λy.x))、(λy.x)、xの3つ。
xの出現が部分式として(λx.N)というラムダ抽象の中に現れるとき
束縛された出現
といい、そうでないときの出現を
自由な出現
という。
ある変数の出現が
束縛された出現
のとき、その変数を
束縛変数
といい、自由に出現している変数を
自由変数
という。
例)赤字は束縛変数、青字は自由変数
(y(λx.(xx)))
(λx.(y(λy.(yx))))
ラムダ計算における「計算」
(ここからがラムダ計算の重要なところ。)
ラムダ計算における「計算」とは、関数適用の形をしたラムダ式に対してβ変換という
書き換え規則を適用することで値を求める。
ラムダ式の中の自由変数xを全てラムダ式Nに置き換える表記法M≡[x:=N]を導入する。
のとき
M≡[x:=N]≡(x (λx.xy))[x:=z]≡(z (λx.xy))
|
|
ラムダ式M、x、Nに対して、β変換を次のように定義する。
- ((λx.M)N)→βM[x:=N]
このとき((λx.M)N)をβ基(βリデックス)という。
- M→βNならば
(λx.M)→β(λx.N)
(M P)→β(N P)
(P M)→β(P N)
例)
((λx.(xy))z)→β(xy)[x:=z]≡(zy)
M N M N
((λx.(xy))(zy))→β(xy)[x:=(zw)]≡((zw)y)
((λx.(xy))(λz.z))→β(xy)[x:=(λz.z)]≡((λz.z)y)
→βz[z:=y]≡y
ここで、β基でないものを正規形という。