markdown
λ計算の基本
lecture/information/programming-languages/lambda-calculus/ラムダ計算の基本-講義.n.md

λ計算らむだけいさん基本きほん

導入どうにゅう

この講義こうぎ核心かくしんは、「計算けいさんとは関数適用かんすうてきようかえしであり、関数適用かんすうてきよう実体じったい置換ちかんである」というてんにある。λ計算らむだけいさんlambda calculusは、変数へんすう関数かんすう定義ていぎ関数かんすう適用てきようという 3 つの概念がいねんだけで、すべての計算可能けいさんかのう操作そうさ表現ひょうげんできる最小さいしょう計算けいさんモデルである。

中心ちゅうしん課題かだい

(λx.λy.x)ab はどのように計算けいさんすすみ、なにいたるか。「計算けいさんすすむ」とはどういうことか。

用語ようご

  • λ計算らむだけいさんlambda calculus: 変数へんすう・λ抽象ちゅうしょう適用てきようの 3 規則きそく定義ていぎされる計算けいさんモデル
  • β簡約かんやくbeta reduction: (λx.t)sβt[x:=s] という計算けいさんの 1 ステップ
  • 簡約基かんやくきredex: β簡約かんやく適用てきようできる部分ぶぶんかたち (λx.t)s
  • 正規形せいきけいnormal form: これ以上いじょうβ簡約かんやくできないこう
  • η変換へんかんeta conversion: λx.(fx)=ηfxFV(f) のとき)

方針ほうしん

まずλ項らむだこう構文こうぶん(BNF)を確認かくにんする。つぎにβ簡約かんやく規則きそく一段いちだんずつう。最後さいごにη変換へんかん意味いみ外延性がいえんせい)をくわえる。評価戦略ひょうかせんりゃく(どの簡約基かんやくきさきえらぶか)はこの講義こうぎではあつかわず、別講義べつこうぎゆだねる。

直感的ちょっかんてき説明せつめい

(λx.t)s は「tなかxsえる」ことで計算けいさん一歩いっぽすすむ。これがβ簡約かんやくである。

(λx. λy. x) a b
→β (λy. a) b ← 外側そとがわの λx に a をわたした(x を a に置換ちかん
→β a ← 内側うちがわの λy に b をわたした(y は出現しゅつげんしないので b はてられる)

計算けいさんすすむ」とは「簡約基かんやくきえらび、置換ちかん実行じっこうする」ことである。計算けいさんまるとは「正規形せいきけい到達とうたつする」ことである。

厳密げんみつ説明せつめい

1. λ項らむだこう構文こうぶん再掲さいけい

t::=xλx.tt1t2

2. β簡約かんやく

(λx.t)sβt[x:=s](β)

この規則きそくこうのどこにあらわれる簡約基かんやくきにも適用てきようできる。

文脈ぶんみゃくでの簡約かんやく: tβt ならば

tβttsβts,tβtstβst,tβtλx.tβλx.t

3. η変換へんかん

λx.(fx)=ηf(xFV(f))

η変換へんかんは「fλx.(fx)外延的がいえんてきおな関数かんすうだ」という主張しゅちょうである。どんな引数ひきすうわたしてもおな結果けっかになるなら、「関数かんすうとしてひとしい」とみなせる。

4. α・β・η のまとめ

操作そうさ意味いみ
α変換へんかん束縛変数そくばくへんすう改名かいめい意味いみえない)
β簡約かんやく関数適用かんすうてきよう展開てんかい計算けいさんの 1
η変換へんかん外延的がいえんてき同一性どういつせい関数かんすう等価性とうかせい

最小さいしょう具体例ぐたいれい

れい 1: 恒等関数こうとうかんすう

(λx.x)aβa

I=λx.x恒等関数こうとうかんすう)と名前なまえけると Iaβa

れい 2: 定数関数ていすうかんすう

(λx.λy.x)ab

β(λy.a)b

βa

一番目いちばんめ引数ひきすうだけをかえ関数かんすうK=λx.λy.xく(K コンビネータK combinator)。

れい 3: 正規形せいきけいいたらないこう

Ω=(λx.xx)(λx.xx)

β(λx.xx)(λx.xx)=Ω

Ω はβ簡約かんやくするとまた Ωもどる。正規形せいきけい存在そんざいしないこうれいである。型無かたなしλ計算けいさんでは任意にんい計算けいさん停止ていしするとはかぎらない。

べつ見方みかた

λ計算けいさんはチューリング機械きかい計算能力けいさんのうりょくひとしい(チャーチ–チューリングテーゼ)。チューリング機械きかいが「テープの状態じょうたい遷移せんいさせる」計算けいさんモデルであるのにたいし、λ計算けいさんは「しき変形へんけい規則きそく連鎖れんさ」という計算けいさんモデルである。前者ぜんしゃ物理ぶつりてき操作そうさちかく、後者こうしゃ数学すうがくてきえにちかい。

見分みわかた

  • (λx.)s というかたちがβ簡約基かんやくきである
  • λx.(fx)かたちxfあらわれないならη変換へんかん対象たいしょう
  • 正規形せいきけいかどうかは「β簡約基かんやくき存在そんざいするか」で判定はんていする

一言ひとことでいうと

λ計算けいさんとは「変数へんすう関数定義かんすうていぎ関数適用かんすうてきよう」の 3 要素ようそだけで計算けいさん記述きじゅつする体系たいけいであり、計算けいさんの 1 ステップは (λx.t)sβt[x:=s] という置換ちかんあたえられる。

関連かんれんリンク

data/lecture/information/programming-languages/foundation/置換とα同値の基本-講義.n.md data/lecture/information/programming-languages/lambda-calculus/β簡約とη変換の基本-講義.n.md data/lecture/information/programming-languages/lambda-calculus/コンビネータ計算の基本-講義.n.md
raw .n.md をコピー
loc をコピー (filepath:line ~ line)
copy share link
path をコピー
copy share link
copy share link
タブを全て閉じる