Tapl6
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Tapl6

on

  • 323 views

 

Statistics

Views

Total Views
323
Views on SlideShare
323
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tapl6 Document 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