English version
前回,次の数を生み出す計算機を考えてみた.ここで示された手順は「数を一つ増やす」という手順であるが,手順に意味をつけているのは人間であって.機械は意味を理解することなしに何かを出力することができる.「意味」とは,「理解」とは何かということを考えるのはここでは難しすぎるし,意味のあるような複雑な機構も単純な機構の組合せによって作成可能であるという仮説もある(参照 Marvin Minsky,心の社会
,おすすめ)が,SUCC1 ほど単純な機械には知能はないとしてもさしつかえないだろう.(ところで,Marvin 先生とロボットの Marvin に関係があるのかどうかはわからない.)これから,意味があるような行動をとれる機械であれば意味が理解されていると考える考え方もある.もちろん通常は人間に意味のあるものの方が望まれるのであるが,機械にはそんなことは関係がない.手順を実行することが計算になったのである.計算とは何かを理解することは計算すること自体には必要がないのである.
まあこれが発達した機械の問題であることはよく SF に書かれる通りである.機械は単に命令を実行するだけであり,何かを理解しているわけではないので命令がなくなるまで手順を実行することになる.モラルがない人間であれば殺人機械を作ることもあるだろう(Cordwainer Smith の The Instrumentality of Mankind(人類補完機構)から Terminator まで).どういう機械を作るかの決定にはモラルが必要である.Philip K. Dick の Variant 2 などは私の好きな例であるが,モラルの話はここで論じるには大きすぎるテーマなので,λ計算の話に戻ろう.
次の機械は POP1 (P-operation 1)である(図1).POP1 は3つの命令を実行することができる.
図(1) POP1
(a) 入力コピー: 入力を出力テーブルにコピーする (図(a))
(b) 頭尾消去: コピーされた数字の頭(Head)と尾(Tail)を取り除く (図(b))
(c) 頭尾追加: 記号全体に頭(Head)と尾(Tail)を加える (図(c))
これらはチャーチ数が入力であれば常に実行できる.チャーチ数でない場合,例えば,頭も尾もない場合に命令(b)の頭尾消去を実行するとエラーになるとしよう.エラーの場合にはPop1は怒って記号を投げつけてくるので,プログラムを実行する前にはヘルメットの着用することがサイバネティクス社のマニュアルには書かれている.
次回はこの命令を使って Pop1 のプログラムを書いてみよう.