λ計算で 1+2
すっかり飽きる前にλ計算してみます。お題は 1+2 が 3 になるかどうか。
チャーチ数と足し算の定義はwikipediaのものを使います。
1 := λf x. f x 2 := λf x. f (f x) 3 := λf x. f (f (f x)) PLUS := λm n f x. m f (n f x)
PLUS 1 2 をβ変換(引数に変数を入れて計算すること)していった結果(正規形)が 3 になりますかどうか。
1 と 2 はα変換(変数名が重ならないように付け替えること)して、
1 := λg y. g y 2 := λh z. h (h z)
とします。式の意味は変わってません。
では、開始。
( λm n f x. m f (n f x) ) ( λg y. g y ) ( λh z. h (h z) ) → ( λn f x. ( λg y. g y ) f (n f x) ) ( λh z. h (h z) ) → ( λf x. ( λg y. g y ) f (( λh z. h (h z) ) f x) ) → λf x. ( λy. f y ) (( λh z. h (h z) ) f x) → λf x. f (( λh z. h (h z) ) f x) → λf x. f (( λz. f (f z) ) x) → λf x. f ( f (f x) )
3 になった! 1+2 ができただけなのに、とてもうれしいw
ついでに、間違いないよね?とドキドキしてます(^^;
1+2 ごときでw