Turing 機械は、入力に対して受理するかどうかだけでなく、自然数を出力する部分関数も計算する。 Turing 機械による関数定義とは別に、初期関数へ有限個の関数形成規則を適用して計算可能関数を定める方法がある。二つの定義は形式が異なるが、部分関数のクラスとして一致する。本記事では、両方向の変換を構成し、全域関数だけを生成する原始再帰の範囲が、全域 Turing 計算可能関数全体より真に狭いことを示す。
1 部分関数と Turing 計算可能性
部分関数がで定義されることを、定義されないことをと書く。
定義 1.1. 部分関数が部分 Turing 計算可能 (partial Turing computable) であるとは、次を満たす決定性 TMが存在することをいう。
- ならば、は入力から開始し、有限時間後に受理状態で停止する。この停止配置では、ヘッドは位置にあり、テープ内容はで、でを満たす。
- ならば、はその入力で停止しない。
(1)の停止配置を正規出力配置 (normal output configuration) という。定義域が全体である部分 Turing 計算可能関数を全域 Turing 計算可能関数 (total Turing-computable function) という。
証明中では、入力の保存領域、作業用カウンタ、および出力領域を別々のテープに置くことがある。次の補題により、この中間的な多テープ計算を定義の正規出力配置へ変換することができる。
補題 1.2. 部分関数と決定性多テープ TMを考える。の第1テープに入力を置き、残りのテープを空白として計算を始める。一つのテープを出力テープ、一つの状態を返却状態として指定し、次の二条件を仮定する。
- ならば、は有限時間後に返却状態へ入り、出力テープの位置に、位置に空白を置く。各テープのヘッド位置、出力テープの位置以後、および他のテープの内容は任意でよい。
- ならば、は停止しない。
このとき、を定義 1.1の正規出力配置で計算する単テープ決定性 TMを構成することができる。
証明.§E15.4 定理 2.2の構成を用いて、の各テープを区切り記号で連結し、各ヘッド位置に印を付けた単テープ機械を作る。ただし、が返却状態へ入った場合にはを直ちに停止させず、出力清掃局面へ移す。模倣の不変条件により、この時点の有限な整形式符号から出力テープに対応する区間と、その位置を特定することができる。
清掃局面では、出力区間の位置から最初の空白までを走査する。読み取った一つにつき、整形式符号の最後の区切りより右側へ作業記号を一つ追加する。仮定により作業記号はちょうど個になる。次に、最後の区切りを左印へ書き換え、作業記号列の直後の位置へ右印を置く。の場合には作業記号が一つも無いため、左印と右印は隣り合う二マスに付く。印を置いてから、左印より左側にある整形式符号を全て空白へ戻す。次に、左端位置から始まる出力前線と作業記号列の間を往復し、作業記号を一つ消すたびに出力前線へを一つ書いて前線を右へ移す。この反復は回で終わり、の場合には一度も実行されない。最後に両端の印と残った作業記号を消し、ヘッドを位置へ戻して受理状態へ入る。各局面が走査する範囲と反復回数は有限なので、が返却状態へ入った後の清掃は有限時間で終了する。終了時のテープは位置だけにをもち、それ以外の位置は空白である。
の場合には、の有限な計算、その各一段に対する有限な模倣、および有限な清掃の後に、は正規出力配置で停止する。の場合にはが停止しないため、は模倣局面にとどまり、清掃局面へ入らない。したがっても停止しない。ゆえに、この変換は定義域、発散、および出力値を保存する。▨
定義 1.1が採用した一進表記は、表記の選択の一つである。次の命題により、この選択は得られる関数クラスへ影響しない。
命題 1.3.定義 1.1の一進表記を、各引数と出力の二進表記へ置き換えて同じ形の定義を行っても、部分 Turing 計算可能関数のクラスは変わらない。
証明. 一進表記の数と二進表記の数を相互に変換する二つの全域変換は、それぞれ決定性 TM で実行することができる。一進から二進への変換は、一進列からを一つ消すたびに別領域の二進カウンタへを加える反復であり、二進から一進への変換は、二進カウンタからを引くたびに一進列へを一つ追加する反復である。どちらの反復も、表されている数に等しい回数で終了する。区切り記号で連結された個の引数には、この変換をブロックごとに適用する。
部分関数が二進表記の規約で TMによって計算されるとする。多テープ機械を、第1テープの一進入力を二進表記へ変換し、その結果を入力としてを模倣し、が受理停止した場合には出力の二進表記を一進列へ変換して出力テープへ書き、返却状態へ入るように構成する。前後の変換は全域であるため、が返却状態へ入ることとが停止することは同値であり、返却時の出力テープは同じ値の一進列である。補題 1.2をへ適用すれば、を一進表記の規約の正規出力配置で計算する単テープ決定性 TM を得る。逆向きも、変換の向きを入れ替えた同じ合成で従う。したがって、二つの規約が定める部分 Turing 計算可能関数のクラスは一致する。▨
2 原始再帰関数
定義 2.1. 次の関数を初期関数 (initial function) という。
変数関数と変数関数から
を作る操作を合成 (composition) という。
変数関数と変数関数から
を満たす変数関数を作る操作を原始再帰 (primitive recursion) という。原始再帰ではの場合も許す。このとき、基底のの代わりに一つの自然数を指定し、かつを満たす一変数関数を作る。初期関数を含み、合成と原始再帰について閉じた最小の関数クラスを原始再帰関数 (primitive recursive function) のクラスという。
命題 2.2. 全ての原始再帰関数は全域関数である。
証明. 関数を生成する式の構造に関する帰納法を用いる。初期関数は表示された式によって全ての入力で値をもつ。全域関数の合成では、全ての値が定まり、の値も定まるので、合成結果も全域である。
全域関数から原始再帰でを作る場合を考える。固定したについて、は定義される(の場合には、指定した自然数によってが定義される)。が定義されるならば、も定義されるのでが定義される。に関する帰納法により、全てのでが定義される。は任意なのでは全域である。したがって、有限回の生成規則で得られる全ての原始再帰関数は全域である。▨
命題 2.3. 加法、乗法、切捨て減法、等号の特性関数、有限の場合分け、固定底による冪、商と剰余は原始再帰関数である。さらに、原始再帰関数の有界和と有界積、原始再帰的述語に対する有界量化と有界最小化、および有限組の符号化と成分取出しを原始再帰関数によって実行することができる。
証明. 加法と乗法は
という原始再帰で得られる。前者関数を、と定める。この式は、基底値とによるの原始再帰である。さらに、、と再帰すれば切捨て減法を得る。
、と定め、と置く。すると
はの場合に、それ以外でとなる。値がまたはの特性関数に対する場合分けは
で実行することができる。固定底の冪は、という原始再帰で得られる。原始再帰関数に対する有界和と有界積は
という原始再帰で得られる。
原始再帰的述語の特性関数をとする。の範囲でが真となる最小のを返し、存在しない場合にはを返す関数を、に関する原始再帰で構成する。ではなら、そうでなければとする。なら以前の値を保ち、ならを調べ、真なら、偽ならとする。この更新は上の比較と場合分けだけで記述する。したがっては原始再帰関数である。有界存在量化はの特性関数であり、有界全称量化は反例に対する有界存在量化の否定である。
による商は、を満たす最大のを有界探索すれば得られ、剰余はで得られる。最大値の探索も、候補をからまで走査して条件を満たすたびに保存値を更新する原始再帰である。
有限組には Cantor の対関数
を用いる。分子は常に偶数であり、固定数による商は既に構成した関数で計算することができる。ならなので、の有限範囲を有界探索して二成分を復元することができる。この探索は有界量化と場合分けの有限な入れ子であり、原始再帰的である。対を入れ子にすれば、任意の固定長の組の符号化と各成分の取出しも原始再帰的になる。▨
命題 2.4. 全ての原始再帰関数は全域 Turing 計算可能である。
証明. 生成式の構造に関する帰納法によって、各原始再帰関数を計算する多テープ TM を構成する。零関数の機械は出力テープを空にして停止し、後続者関数の機械は入力の一進列へを一つ追加する。射影関数の機械は区切り記号を数え、指定された入力成分を出力テープへ複写する。以上の初期関数用の機械は全入力で停止する。
について、帰納法の仮定からと各の機械がある。入力を保存し、各を順に計算して別の作業領域へ保存する。得られた個の値をの機械へ渡して出力する。各部分機械が全入力で停止するため、合成機械も停止し、を出力する。
原始再帰
については、最初にを計算して作業領域へ保存する(の場合には、基底値の一進列をへ直接書き込む)。カウンタをとし、の間、を計算してをその出力へ置き換え、を一つ増やす。回の反復後にを出力する。に関する帰納法により、反復開始時のはである。したがって終了時の出力はである。反復回数は有限であり、の機械は全域なので、この機械も全入力で停止する。
以上で各生成規則に対応する多テープ機械を構成した。各機械の出力テープは、位置から始まる一進列として関数値を保持する。補題 1.2によって、各機械を正規出力配置で停止する単テープ決定性 TM へ変換することができる。ゆえに全ての原始再帰関数は全域 Turing 計算可能である。▨
3 非有界最小化と部分ミュー再帰
定義 3.1. 部分関数に対し、
を次のように定める。であるとは、
が成り立つことをいう。そのようなが存在しなければは未定義である。この操作を非有界最小化 (unbounded minimization) という。
初期関数を含み、部分関数に対する合成、原始再帰、および非有界最小化について閉じた最小のクラスを部分ミュー再帰関数 (partial mu-recursive function) のクラスという。
最小の零点より前に未定義値がある場合にも最小化結果を未定義としたのは、を順番に計算する探索の動作と一致させるためである。
例 3.2 (停止しない最小化).は原始再帰関数であり、全てのについて正である。したがって
は全てので未定義である。を順に計算する機械は、各値が正であることを確認して次の候補へ進み続け、停止しない。
4 部分ミュー再帰から Turing 機械へ
命題 4.1. 全ての部分ミュー再帰関数は部分 Turing 計算可能である。
証明. 生成式の構造に関する帰納法を用いる。初期関数に対応する停止機械は命題 2.4の証明で構成した。
部分関数の合成では、入力を保存し、の機械を順に実行する。いずれかが停止しなければ合成機械も同じ呼出しで停止しない。この停止しない動作は、合成が未定義である場合と一致する。全てが値を出力した場合には、値をの機械へ渡す。が停止すればの値を出力し、停止しなければ合成機械も停止しない。したがって、定義域と値の両方が合成の定義に一致する。
部分関数からの原始再帰では、入力を保存し、最初にを実行して値を得る(の場合には基底値をとする)。停止しなければ全体も停止しない。次にについてを実行し、停止して得た値でを更新する。途中の呼出しが停止しなければ全体も停止しない。全ての回が停止すれば最後のを出力する。に関する帰納法により、回の更新後のは、再帰式によって定義されると一致する。したがって、構成した機械はが定義される場合に限って停止し、値を出力する。
最後にを考える。機械はから開始し、の機械を実行する。計算が停止して値を出力したらを出力して停止し、正の値を出力したらを一つ増やして次の計算を始める。あるが未定義ならば機械はその呼出しで停止しない。したがって、この機械がを出力するための必要十分条件は、全てのでが定義されて正であり、であることである。以上で構成した最小化機械の停止条件は、非有界最小化の定義と一致する。
各構成は有限個の作業テープをもつ中間機械として実行することができ、停止する場合には、出力テープの位置から始まる一進列として値を返す。補題 1.2を適用すれば、定義域、発散、および出力を保ち、正規出力配置で停止する単テープ決定性 TM が得られる。ゆえに全ての部分ミュー再帰関数は部分 Turing 計算可能である。▨
5 Turing 機械の計算の算術化
逆方向では、固定した TM の一つの配置を一つの自然数で表し、一段遷移を原始再帰関数に変換する。一段遷移を表す原始再帰関数を時刻について原始再帰し、停止時刻だけを非有界最小化で探す。
補題 5.1. 固定した単テープ決定性 TMについて、次の関数を原始再帰関数として構成することができる。
- 入力の初期配置の符号。
- 配置符号の一段後の配置符号。
- が停止配置であるかを表す特性関数。
- 停止配置の出力を読み取る関数。
停止配置についてはと定める。
証明.のテープ文字への番号を付け、空白記号の番号をとする。配置を
で表す。は状態番号、はヘッド位置である。の進の最下位桁から順に、ヘッドの左隣、二つ左隣、という順序でテープ文字を記録する。の最下位桁はヘッド位置の文字、その上位桁は右側の文字を順に記録する。末尾の空白は番号なので省略することができる。四つ組は命題 2.3の対関数を入れ子にして一つの自然数へ符号化する。
入力は一進ブロックである。各ブロックの開始位置はという加法で表され、その位置へ対応するテープ記号を置いた進整数は、入力長を上界とするの有界和で表される。各位置の記号番号は、固定個数のブロック境界との比較と場合分けによって原始再帰的に定まる。したがって、命題 2.3の有界和によりは原始再帰関数である。初期状態番号、、とこのを組にすることでを得る。
現在の走査記号はである。の遷移表は有限なので、各組に対するは、等号の特性関数と有限の場合分けによって原始再帰的に選ぶことができる。と置く。書込み後に右へ動く場合には
とする。左へ動き、である場合には、を左隣の記号として
とする。左端で左へ動く場合と、その場にとどまる場合には、を定義どおりに更新する。表示した更新式は、加法、乗法、固定数による商と剰余、および有限の場合分けからなるので原始再帰的である。停止状態では入力四つ組をそのまま返す場合分けを加える。以上の場合分けで定めた関数がである。
が有限個の停止状態番号の一つと等しいかどうかは、等号の特性関数の有限和で判定することができる。この停止状態の特性関数がである。
出力規約では、停止時のテープは位置からが個並び、その次が空白である。位置のテープ文字は、ならの第桁、ならの第桁であり、固定底の冪、商、および剰余によって原始再帰的に取り出す。最初の空白位置は以下にある。実際、の位置はこの上界未満であり、の非零桁数は以下である。したがって、位置からまでの有界最小化によって最初の空白位置を求めることができる。正しい停止出力では、最初の空白位置が出力である。この最初の空白位置を返す関数をとする。不正な配置符号には値を返す有限の場合分けを加えれば、四つの関数は全ての自然数上で全域な原始再帰関数になる。▨
命題 5.2. 全ての部分 Turing 計算可能関数は部分ミュー再帰関数である。
証明. 部分関数を計算する TMを固定する。補題 5.1の関数を用い、
と定める。表示した再帰式はに関する原始再帰であるからは原始再帰関数である。に関する帰納法により、はの入力上の段後の配置を正確に符号化する。停止後にはが配置を固定するため、この主張は停止時刻以後についても成り立つ。
次に
と置く。は原始再帰関数であり、が時刻までに停止している場合に限って値をとる。したがって
は、がで停止する場合には最初の停止時刻を値とし、停止しない場合には未定義となる部分ミュー再帰関数である。
最後に
と定める。部分ミュー再帰関数は合成について閉じているためも部分ミュー再帰関数である。が停止しない入力ではが未定義なのでも未定義である。が停止する入力では、が最初の停止配置であり、はその出力を返す。したがってとは定義域と値が一致する。ゆえには部分ミュー再帰関数である。▨
前二命題は、それぞれ関数形成規則を実行する機械と、機械遷移を実行する算術関数を具体的に与えている。したがって、次の同値は「計算手続き」という未定義の直観を用いるのではなく、二つの形式体系間の相互変換から従う。
定理 5.3. 部分関数について、次の二条件は同値である。
- は部分ミュー再帰関数である。
- は部分 Turing 計算可能である。
証明.(1)(2)は命題 4.1で証明した。(2)(1)は命題 5.2で証明した。いずれの構成も、定義される入力では同じ値を返して停止し、定義されない入力では停止しない。したがって、部分関数として両クラスが一致する。▨
6 原始再帰関数は真部分クラスである
原始再帰関数は全域なので、命題 2.4によって全域 Turing 計算可能関数の部分クラスをなす。真の包含を示すため、全ての一変数原始再帰関数を列挙して対角線上で異なる全域関数を構成する。
補題 6.1. 一変数原始再帰関数の有限記述には有効な符号化があり、次を満たす全域 Turing 計算可能関数が存在する。
- が一変数原始再帰関数の正しい符号なら、である。
- 全ての一変数原始再帰関数に対し、となる正しい符号が存在する。
- が正しい符号でなければである。
証明. 初期関数の記号を葉とし、合成と原始再帰の記号を、その引数となる有限個の関数記述を子にもつ節点とする有限構文木を考える。の原始再帰の基底値は、数字列の葉として表す。各記号と括弧を有限アルファベットで表すことができるので、構文木は自然数へ符号化することができる。有限文字列の括弧対応、各節点の種類、子の個数、および入出力の項数は有限走査で検査することができる。したがって、正しい一変数関数記述であるかどうかを判定する TM が存在する。
評価器は正しい構文木を根から解釈する。零、後続者、射影の葉では定義式を直接実行する。合成節点では、各子の値を再帰的に評価してから外側の関数の子を評価する。原始再帰節点では、再帰引数がならば基底関数を一回評価し(の場合には基底値の葉を読み)、段階関数を回評価する。構文木の高さに関する帰納法により、各子の評価は有限時間で終了する。原始再帰節点の反復回数も有限なので、節点全体の評価も終了する。したがって、正しい符号と任意の入力に対して評価器は停止し、記述された関数の値を返す。不正な符号では構文検査後にを返すようにすれば、評価器は全入力で停止する。
原始再帰関数の定義は、初期関数から合成と原始再帰を有限回適用して得られる関数をちょうど集めたものである。したがって、各一変数原始再帰関数には、その有限な生成履歴を表す構文木があり、その符号が存在する。以上で三条件が全て成り立つ。▨
定理 6.2. 原始再帰関数のクラスは、全域 Turing 計算可能関数のクラスの真部分クラスである。
証明.命題 2.4により、全ての原始再帰関数は全域 Turing 計算可能である。逆の包含が成り立たないことを示すため、補題 6.1のを用いて
と定める。は全域 Turing 計算可能であり、後続者関数も全域 Turing 計算可能なので、は全域 Turing 計算可能である。
が原始再帰関数であると仮定する。評価器の列挙性により、となる正しい符号が存在する。を代入すると、
を得る。自然数は自分自身にを加えた数と等しくないので矛盾である。したがっては原始再帰関数ではない。原始再帰関数は全域 Turing 計算可能関数に含まれ、しかもは後者にだけ属するので、包含は真である。▨
7 同値定理と Church–Turing の提唱
注意 7.1 (定理と提唱の区別).定理 5.3は、二つの形式的に定義された関数クラスが一致することを証明した数学的定理である。この形式的同値定理に対して、人が有限の規則に従って「有効に計算することができる」という形式化以前の概念が Turing 計算可能性、したがって部分ミュー再帰性によって尽くされるという主張は Church–Turing の提唱である。「有効に計算することができる」という直観的概念は数学的定義の一方ではないため、この主張は同値定理だけから証明されない。
8 演習
問題 8.1.
- 原始再帰で定義されるの計算が、各入力で有限回の反復しか行わない理由を説明せよ。
- 部分関数に対する最小化で、が未定義だがである場合、が未定義になる理由を定義と探索機械の両方から説明せよ。
- 配置遷移の算術化で、停止配置を自分自身へ移すと定めた理由を説明せよ。
- 対角関数の証明では、自身が原始再帰関数であることを仮定していない。必要なのがの全域 Turing 計算可能性だけである理由を説明せよ。
解答 (演習の要点).
- 再帰引数が反復回数を与え、からまでのちょうど回で終了するためである。
- 定義は零点より前の全ての値が定義されて正であることを要求する。順番に調べる機械もの計算で停止せず、へ到達しない。
- を全てのに対する全域な原始再帰関数として定め、停止後の時刻でも同じ停止配置を表すためである。
- を計算するにはを実行してを加える TM があればよい。が原始再帰的だという仮定は、列挙中の符号を得てという矛盾を導く箇所だけで使う。
▨