markdown
置換とα同値の基本md 8886dac
lecture/information/programming-languages/foundation/substitution-and-alpha-equivalence-basics.lecture.n.md
Download PDF

置換ちかんとα同値どうちの基本きほん

informationprogramming-languageslambda-calculuslecture

1導入どうにゅう

この講義こうぎでは、変数へんすうの自由出現じゆうしゅつげんだけを項こうで置換ちかんする操作そうさを定義ていぎする。単純たんじゅんな文字列置換もじれつちかんは自由変数じゆうへんすうを意図いとせず束縛そくばくするため、束縛変数そくばくへんすうの改名かいめいによって変数捕縛へんすうほばくvariable captureを回避かいひする必要ひつようがある。この改名かいめいを形式化けいしきかするα同値どうちも定義ていぎする。

2置換ちかんと捕縛ほばく

M[x:=N] は、M における x の自由出現じゆうしゅつげんを項こう N で置換ちかんした結果けっかを表あらわす。束縛出現そくばくしゅつげんは置換ちかんの対象たいしょうではない。例たとえば

(λx.xy)[x:=N]=λx.xy

である。一方いっぽう、(λy.x)[x:=y] を機械的きかいてきに λy.y とすると、置換前ちかんまえに自由じゆうであった右辺うへんの y が λy に束縛そくばくされる。この変化へんかが変数捕縛へんすうほばくである。正ただしい結果けっかは、束縛子そくばくしを先さきに改名かいめいした λz.y である。

3fresh 変数へんすう

項こうの有限集合ゆうげんしゅうごう S に対たいし、S に出現しゅつげんするどの変数名へんすうめいとも異ことなる変数へんすう z を S に対たいしてfreshフレッシュであるという。[PARSE ERROR: Undefined("Command(\"mathcal\")")]V は無限むげんであり、有限個ゆうげんこの項こうに出現しゅつげんする変数名へんすうめいは有限個ゆうげんこなので、fresh変数へんすうは常つねに選択せんたくできる。以下いかでは、改名かいめいによる混同こんどうを避さけるため、z を M と N の双方そうほうに出現しゅつげんしないように選択せんたくする。

4捕縛回避置換ほばくかいひちかん

捕縛回避置換ほばくかいひちかんを構文こうぶんに関かんして再帰的さいきてきに定義ていぎする。

x[x:=N]=N,y[x:=N]=y(y≠x),
(M1M2)[x:=N]=(M1[x:=N])(M2[x:=N]).

λ抽象ちゅうしょうには三みっつの場合ばあいがある。

(λx.M)[x:=N]=λx.M,
(λy.M)[x:=N]=λy.(M[x:=N])(y≠x,y∉FV(N)),
(λy.M)[x:=N]=λz.((M[y:=z])[x:=N])(y≠x,y∈FV(N)),

ただし、最後さいごの場合ばあいの z は M と N に対たいしてfreshである。より厳密げんみつには、x∉FV(M) なら置換結果ちかんけっかは M 自身じしんであり、改名かいめいも不要ふようである。上うえの最後さいごの場合ばあいは x∈FV(M) のときに適用てきようすればよい。

例れいとして、z を x,y と異ことなるfresh変数へんすうに選えらぶと、

(λy.xy)[x:=y]=λz.((xz)[x:=y])=λz.yz.

挿入そうにゅうされた y は結果けっかでも自由じゆうである。

5α変換へんかんとα同値どうち

束縛子そくばくしと、それが束縛そくばくする出現しゅつげんを一斉いっせいにfresh変数へんすうへ改名かいめいする操作そうさをα変換へんかんという。y∉FV(M) のとき、

λx.M=αλy.(M[x:=y])

とする。ここで右辺うへんの置換ちかんは捕縛回避置換ほばくかいひちかんである。α同値どうち =α は、この基本的きほんてきな改名かいめいを任意にんいの部分項ぶぶんこうで許ゆるし、反射性はんしゃせい・対称性たいしょうせい・推移性すいいせいを満みたす最小さいしょうの合同関係ごうどうかんけいである。したがって

λx.x=αλy.y,

だが、自由変数じゆうへんすうは改名かいめいできないため λx.xy[PARSE ERROR: Undefined("Command(\"not\")")]=αλx.xz である。また λx.λy.x[PARSE ERROR: Undefined("Command(\"not\")")]=αλx.λy.y であり、α同値どうちは束縛構造そくばくこうぞうを保存ほぞんする。

6β簡約かんやくへの接続せつぞく

β簡約かんやくは

(λx.M)N⟶βM[x:=N]

と定義ていぎされ、右辺うへんには捕縛回避置換ほばくかいひちかんを用もちいる。例たとえば

(λx.λy.x)y⟶βλz.y

であり、λy.y ではない。fresh変数へんすうの選択せんたくによって結果けっかの表記ひょうきは異ことなり得うるが、いずれの結果けっかもα同値どうちである。

7関連かんれんリンク

data/lecture/information/programming-languages/foundation/variable-binding-and-free-variables-basics.lecture.n.md data/lecture/information/programming-languages/lambda-calculus/lambda-calculus-basics.lecture.n.md
raw .n.md をコピー
loc をコピー (filepath:line ~ line)
copy share link
copy encoded share link
path をコピー
copy share link
copy encoded share link
copy share link
copy encoded share link
タブを全て閉じる