Tapl6
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
334
On Slideshare
334
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Types And Programming Languages Ch.6 Nameless Representation of Terms 姜 本位田研 January 24, 2012 姜 (本位田研) TAPL6 January 24, 2012 1 / 12
  • 2. 5 章での問題 変数名が衝突す る と 暗黙にに変数名を 変更す る 必要がある ↓ 変数名の変更が不要なも のを 作る ↓ de Bruijn terms を 導入し て みよ う姜 (本位田研) TAPL6 January 24, 2012 2 / 12
  • 3. 5 章での問題 変数名が衝突す る と 暗黙にに変数名を 変更す る 必要がある ↓ 変数名の変更が不要なも のを 作る ↓ de Bruijn terms を 導入し て みよ う姜 (本位田研) TAPL6 January 24, 2012 2 / 12
  • 4. 5 章での問題 変数名が衝突す る と 暗黙にに変数名を 変更す る 必要がある ↓ 変数名の変更が不要なも のを 作る ↓ de Bruijn terms を 導入し て みよ う姜 (本位田研) TAPL6 January 24, 2012 2 / 12
  • 5. Term de Bruijn terms Informal definitionReplacing named variables by natural numbers, wherethe number k stands for “the variable bound by the k’thenclosing λ.”Exampleλx.x は λ.0,λx.λy. x (y x) は λ.λ. 1 (0 1) と し て 表現でき る 姜 (本位田研) TAPL6 January 24, 2012 3 / 12
  • 6. Term 6.1.1 f ix = λf. (λx. f (λy. (x x) y)) (λx. f (λy. (x x) y))は f ix = λ.(λ. 1 (λ. (1 1) 0)) (λ. 1 (λ. (1 1) 0))と し て 表現さ れる . f oo = (λx. (λx. x)) (λx. x)は f oo = (λ. (λ. 0)) (λ. 0) 姜 (本位田研) TAPL6 January 24, 2012 4 / 12
  • 7. Term Definition:Terms各 term がいく つ自由変数を も つか, を 常に追いながらterm を 定義するTermsLet T be the smallest family of sets {T0 , T1 , T2 , . . . } st. 1 k ∈ Tn whenever 0 ≤ k < n; 2 if t1 ∈ Tn and n > 0, then λ.t1 ∈ Tn−1 ; 3 if t1 ∈ Tn and t2 ∈ Tn then (t1 t2 ) ∈ TnTn を n-terms と 呼ぶ 姜 (本位田研) TAPL6 January 24, 2012 5 / 12
  • 8. Term naming context Γ=x �→ 4 y �→ 3 z �→ 2 a �→ 1 b �→ 0こ の Γ が naming context で , x (y z) は 4 (3 2) Γ = xn , xn−1 . . . x0 と し て λw. y w は λ. 4 0 表現でき , こ こ では λw.λa.λx は λ.λ.6 Γ = x, y, z, a, b 姜 .である(本位田研) TAPL6 January 24, 2012 6 / 12
  • 9. Shift シ フ ト と 代入([k �→ s]t) を 考え る . k が代入によ っ て コ ン テク ス ト から 除去され, そ の分シ フ ト す る 必要がある .[1 �→ s](λ.2) であれば , 1 が除去さ れて 2 は 1 に繰り 下げら れる .し かし , 除去さ れる 番号によ っ て は , 繰り 下げる べき も のと そ う でないも のがある だろ う .シ フ ト 演算子 ↑d (k) cc を 起点に d 分だけ k を 繰り 下げるk が c よ り 大き け れば d だけ 繰り 下げる 姜 (本位田研) TAPL6 January 24, 2012 7 / 12
  • 10. Shift ShiftingDefinition:Shifting k (if k < c) ↑d c (k) = k + d (if k ≥ c) � ↑d (λ.t1 ) = λ. ↑d (t1 ) c c+1 ↑d (t1 t2 ) = ↑d (t1 ) ↑d (t2 ) c c cま た , ↑d は ↑d を あら わす 0 姜 (本位田研) TAPL6 January 24, 2012 8 / 12
  • 11. Shift 計算例 ↑2 (λ.λ. 1 (0 2))) = (λ. ↑2 λ. 1 (0 2))) 1 = (λ.λ. (↑2 (1 (0 2)))) 2 = (λ.λ. (↑2 1 ↑2 (0 2))) 2 2 = (λ.λ. 1 (↑2 0 ↑2 2)) 2 2 = (λ.λ. 1 (0 4)) ↑2 (λ. 0 1 (λ. 0 1 2)) = λ. ↑2 (0 1 (λ. 0 1 2)) 1 = λ. (↑2 (0 1) ↑2 (λ. 0 1 2)) 1 1 = λ.(↑2 0 ↑2 1) (λ. ↑2 (0 1 2)) 1 1 2 = λ.(0 3) (λ.(↑2 (0 1) ↑2 2)) 2 2 = λ.(0 3) (λ.(↑2 0 ↑2 1) 4) 2 2 = λ.(0 3) (λ. 0 1 4)姜 (本位田研) TAPL6 January 24, 2012 9 / 12
  • 12. Shift 代入Definition: Substitution s (if k = j) [j �→ s]k = k (otherwise) � [j �→ s](λ.t1 ) = λ.[j + 1 �→↑1 (s)]t1 [j �→ s](t1 t2 ) = ([j �→ s]t1 [j �→ s]t2 ) 姜 (本位田研) TAPL6 January 24, 2012 10 / 12
  • 13. Shift 代入の計算例nameless form に変換し て 代入し たも のが, 代入し てnameless form に変換し たも のと 等し いこ と を 確認せよ Γ = a, b [b �→ a](b (λx.λy.b)) = a (λx.λy.a)[0 �→ 1](0 (λ.λ.2)) = [0 �→ 1]0 [0 �→ 1](λ.λ.2) = 1 (λ.[1 �→↑1 1](λ. 2)) = 1 (λ.[1 �→ 2](λ. 2)) = 1 (λ.λ. [2 �→↑1 2]2) = 1 (λ.λ.[2 �→ 3]2) = 1 (λ.λ.3) 姜 (本位田研) TAPL6 January 24, 2012 11 / 12
  • 14. Evaluation EvaluationP72,5-3 と ほぼ同様で , 違いは E-AppAbsDefinition:E-AppAbs (λ.t12 ) v2 →↑−1 ([0 �→↑1 (v2 )]t12 )Example (λ.1 0 2) (λ.0) → ↑−1 ([0 �→↑1 (λ.0)](1 0 2)) → ↑−1 ([0 �→ (λ. ↑1 0)](1 0 2)) 1 → ↑−1 ([0 �→ (λ.0)](1 0 2)) → ↑−1 (1 (λ.0) 2) → ↑−1 (1 (λ.0)) ↑−1 2 → ↑−1 1 ↑−1 (λ.0) 1 → 0 (λ. ↑−1 0) 1 1 → 0 (λ.0) 1 姜 (本位田研) TAPL6 January 24, 2012 12 / 12