Created
May 24, 2012 13:21
-
-
Save fumieval/2781513 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
「抽象除去」は、ラムダ抽象をSKIコンビネータによる表現にする手続きのことである。 | |
式Eに対して抽象除去を行った結果を、T[E]と表記する。 | |
抽象除去の規則は以下の通りである。 | |
0.T[x] → x | |
1.T[f g] → T[f] T[g] | |
2.T[λx.x] → I | |
3.T[λx.f g] → S T[λx.f] T[λx.g] | |
4.T[λx.λy.z] → T[λx.T[λy.z]] | |
5.T[λx.e(それ以外)] → K e | |
チャーチ数3に相当するλf.λx.f (f (f x))は、以下のような手続きによって抽象除去される。 | |
λf.λx.f (f (f x)) | |
= T[λf.T[λx.f (f (f x))]] 規則4を適用 | |
= T[λf.S T[λx.f] T[λx.f (f x)]] 規則3を適用 | |
= T[λf.S (K f) T[λx.f (f x)]] 規則5を適用 | |
= T[λf.S (K f) (S T[λx.f] T[λx.f x])] 規則3を適用 | |
= T[λf.S (K f) (S (K f) T[λx.f x])] 規則5を適用 | |
= T[λf.S (K f) (S (K f) (S T[λx.f] T[λx.x]))] 規則3を適用 | |
= T[λf.S (K f) (S (K f) (S (K f) T[λx.x]))] 規則5を適用 | |
= T[λf.S (K f) (S (K f) (S (K f) I))] 規則2を適用 | |
= S T[λf.S (K f)] T[λf.S (K f) (S (K f) I)] 規則3を適用 | |
= S (S T[λf.S] T[λf.K f]) T[λf.S (K f) (S (K f) I)] 規則3を適用 | |
= S (S (K S) T[λf.K f]) T[λf.S (K f) (S (K f) I)] 規則5を適用 | |
= S (S (K S) (S T[λf.K] T[λf.f])) T[λf.S (K f) (S (K f) I)] 規則3を適用 | |
= S (S (K S) (S (K K) T[λf.f])) T[λf.S (K f) (S (K f) I)] 規則5を適用 | |
= S (S (K S) (S (K K) I)) T[λf.S (K f) (S (K f) I)] 規則2を適用 | |
= S (S (K S) (S (K K) I)) (S T[λf.S (K f)] T[λf.S (K f) I]) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S T[λf.S] T[λf.K f]) T[λf.S (K f) I]) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) T[λf.K f]) T[λf.S (K f) I]) 規則5を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S T[λf.K] T[λf.f])) T[λf.S (K f) I]) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) T[λf.f])) T[λf.S (K f) I]) 規則5を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) T[λf.S (K f) I]) 規則2を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S T[λf.S (K f)] T[I])) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S T[λf.S] T[λf.K f]) T[I])) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S (K S) T[λf.K f]) T[I])) 規則5を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S (K S) (S T[λf.K] [λf.f])) T[I])) 規則3を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) [λf.f])) T[I])) 規則5を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) T[I])) 規則2を適用 | |
= S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) (S (S (K S) (S (K K) I)) I)) 規則0を適用 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment