プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功 練習問題1 (問1) ラムダ式 (z. z) w 中の自由変数を求めよ。 (問2) ラムダ式 (λz. z y) ((λz. z) w) 中の自由変数を 求めよ。 練習問題1解答例 (問1) ラムダ式 (z. z) w 中の自由変数を求めよ。 FV((z. z) w) = FV((z. z)) FV (w) = (FV (z) \ {z}) {w} = ({z} \ {z}) {w} = { } {w} = {w} (問2) ラムダ式 (λz. z y) ((λz. z) w) 中の自由変数を求めよ。 FV((λz. z y) ((λz. z) w)) = FV(λz. z y) FV((λz. z) w) = (FV (z y) \ {z}) (FV(λz. z) FV(w)) = ((FV (z) FV(y)) \ {z}) ((FV(z) \ {z}) {w}) = (({z} {y}) \ {z}) (({z} \ {z}) {w}) = ({z,y} \ {z}) ({ } {w}) = {y} {w} = {y, w} 練習問題2 (問1) 置換 (x y) [z/x] を計算せよ。 (問2) 置換 (λy. x y) [z/x] を計算せよ。 (問3) 置換 (λy. x y) [y/x] を計算せよ。 (問4) 置換 (λy. x y) [λz. z y/x] を計算せよ。 練習問題2解答例 (問1) 置換 (x y) [z/x] を計算せよ。 (x y) [z/x] = (x [z/x]) (y [z/x]) =zy (問2) 置換 (λy. x y) [z/x] を計算せよ。 (λy. x y) [z/x] = λy. ((x y) [z/x]) = λy. ((x [z/x]) (y [z/x])) = λy. (z y) (括弧は省略可) (問3) 置換 (λy. x y) [y/x] を計算せよ。 (λy. x y) [y/x] = λz. (((x y) [z/y]) [y/x]) = λz. (((x [z/y]) (y [z/y])) [y/x]) = λz. ((x z) [y/x]) = λz. ((x [y/x]) (z [y/x])) = λz. (y z) (括弧は省略可) 練習問題2解答例(続き) (問4) 置換 (λy. x y) [λz. z y/x] を計算せよ。 (λy. x y) [λz. z y/x] = λw. (((x y) [w/y]) [λz. z y/x]) = λw. (((x [w/y]) (y [w/y])) [λz. z y/x]) = λw. ((x w) [λz. z y/x]) = λw. ((x [λz. z y/x]) (w [λz. z y/x])) = λw. ((λz. z y) w) (外側の括弧は省略可) 練習問題3 (問1) ラムダ式 (λx. x y) (λz. z) にβ変換を適用せよ。 (問2) ラムダ式 (λx. (λy. x y)) (λz. y z) にβ変換を適用せよ。 (注意)この問題では、β変換を一度だけ適用するものと する。 練習問題3解答例 (問1) ラムダ式 (λx. x y) (λz. z) にβ変換を適用せよ。 (λx. x y) (λz. z) (x y) [λz. z/x] = (x [λz. z/x]) (y [λz. z/x]) = (λz. z) y (さらにもう一度β変換は適用可能) (問2) ラムダ式 (λx. (λy. x y)) (λz. y z) にβ変換を適用せよ。 (λx. (λy. x y)) (λz. y z) (λy. x y) [λz. y z/x] = λz. (((x y) [z/y]) [λz. y z/x]) = λz. (((x [z/y]) (y [z/y])) [λz. y z/x]) = λz. ((x z) [λz. y z/x]) = λz. ((x [λz. y z/x]) (z [λz. y z/x])) = λz. ((λz. y z) z) (外側の括弧は省略可) (さらにもう一度β変換は適用可能) 練習問題4 ラムダ式 (x. y. x y) (z. z) w は、何度か変 換を行うことによってwに変換できるが、そ の過程を示せ。 練習問題4解答例 (x. y. x y) (z. z) w (λy. (λz. z) y) w (λy. y) w w または (x. y. x y) (z. z) w (λy. (λz. z) y) w (λz. z) w w (注意)上記において、置換を用いた記述は省略している。 練習問題5 ラムダ式 (λx. λy. x y) (λx. x y) wに対して、β変換を 適用する箇所のないラムダ式になるまでβ変換を 適用せよ。また、この例では途中で、2通りの適用 可能性のあるラムダ式が出てくる。2通りのβ変換 列を示せ。 練習問題5解答例 (x. y. x y) (λx. x y) w (λz. (λx. x y) z) w (λz. z y) w wy または、 (x. y. x y) (λx. x y) w (λz. (λx. x y) z) w (λx. x y) w wy (注意)上記において、置換を用いた記述は省略している。
© Copyright 2024 ExpyDoc