1 部分関数と Turing 計算可能性
部分関数f:Nk⇀Nがxで定義されることをf(x)↓、定義されないことをf(x)↑と書く。
定義 1.1. 部分関数f:Nk⇀Nが部分 Turing 計算可能 (partial Turing computable) であるとは、次を満たす決定性 TMMが存在することをいう。
- f(x)↓ならば、Mは入力1x1#⋯#1xkから開始し、有限時間後に受理状態qaccで停止する。この停止配置では、ヘッドは位置0にあり、テープ内容は0≤i<f(x)でT(i)=1、i≥f(x)でT(i)=⊔を満たす。
- f(x)↑ならば、Mはその入力で停止しない。
(1)の停止配置を正規出力配置 (normal output configuration) という。定義域がNk全体である部分 Turing 計算可能関数を全域 Turing 計算可能関数 (total Turing-computable function) という。
証明中では、入力の保存領域、作業用カウンタ、および出力領域を別々のテープに置くことがある。次の補題により、このような多テープ機械から、同じ関数を定義の正規出力配置で計算する単テープ機械を構成することができる。
補題 1.2. 部分関数f:Nk⇀Nと決定性多テープ TMNを考える。Nの第1テープに入力1x1#⋯#1xkを置き、残りのテープを空白として計算を始める。一つのテープを出力テープ、一つの状態を返却状態として指定し、次の二条件を仮定する。
- f(x)=nならば、Nは有限時間後に返却状態へ入り、出力テープの位置0,…,n−1に1、位置nに空白を置く。各テープのヘッド位置、出力テープの位置n+1以後、および他のテープの内容は任意でよい。
- f(x)↑ならば、Nは停止しない。
このとき、fを定義 1.1の正規出力配置で計算する単テープ決定性
TMMを構成することができる。
証明.§E18.4 定理 2.2の構成を用いて、Nの各テープを区切り記号で連結し、各ヘッド位置に印を付けた単テープ機械Sを作る。ただし、Nが返却状態へ入った場合にはSを直ちに停止させず、出力清掃局面へ移す。模倣の不変条件により、この時点の有限な整形式符号から出力テープに対応する区間と、その位置0を特定することができる。
清掃局面では、出力区間の位置0から最初の空白までを走査する。読み取った1一つにつき、整形式符号の最後の区切りより右側へ作業記号Xを一つ追加する。仮定により作業記号はちょうどn個になる。次に、最後の区切りを左印へ書き換え、作業記号列の直後の位置へ右印を置く。f(x)=0の場合には作業記号が一つも無いため、左印と右印は隣り合う二マスに付く。印を置いてから、左印より左側にある整形式符号を全て空白へ戻す。次に、左端位置から始まる出力前線と作業記号列の間を往復し、作業記号Xを一つ消すたびに出力前線へ1を一つ書いて前線を右へ移す。この反復はn回で終わり、n=0の場合には一度も実行されない。最後に両端の印と残った作業記号を消し、ヘッドを位置0へ戻して受理状態へ入る。各局面が走査する範囲と反復回数は有限なので、Nが返却状態へ入った後の清掃は有限時間で終了する。終了時のテープは位置0,…,n−1だけに1をもち、それ以外の位置は空白である。
f(x)=nの場合には、Nの有限な計算、その各一段に対する有限な模倣、および有限な清掃の後に、Mは正規出力配置で停止する。f(x)↑の場合にはNが停止しないため、Sは模倣局面にとどまり、清掃局面へ入らない。したがってMも停止しない。ゆえに、この変換は定義域、発散、および出力値を保存する。▨
定義 1.1で採用した一進表記は、表記の選択の一つである。次の命題により、一進表記を二進表記へ置き換えても、部分 Turing 計算可能関数のクラスは変わらない。
命題 1.3.定義 1.1の一進表記を、各引数と出力の二進表記へ置き換えて同じ形の定義を行っても、部分 Turing 計算可能関数のクラスは変わらない。
証明. 一進表記の数と二進表記の数を相互に変換する二つの全域変換は、それぞれ決定性 TM で実行することができる。一進から二進への変換は、一進列から1を一つ消すたびに別領域の二進カウンタへ1を加える反復であり、二進から一進への変換は、二進カウンタから1を引くたびに一進列へ1を一つ追加する反復である。どちらの反復も、表されている数に等しい回数で終了する。区切り記号で連結されたk個の引数には、この変換をブロックごとに適用する。
部分関数fが二進表記の規約で TMMによって計算されるとする。多テープ機械Nを、第1テープの一進入力を二進表記へ変換し、その結果を入力としてMを模倣し、Mが受理停止した場合には出力の二進表記を一進列へ変換して出力テープへ書き、返却状態へ入るように構成する。前後の変換は全域であるため、Nが返却状態へ入ることとMが停止することは同値であり、返却時の出力テープは同じ値f(x)の一進列である。補題 1.2をNへ適用すれば、fを一進表記の規約の正規出力配置で計算する単テープ決定性 TM を得る。逆向きも、変換の向きを入れ替えた同じ合成で従う。したがって、二つの規約が定める部分 Turing 計算可能関数のクラスは一致する。▨
2 原始再帰関数
定義 2.1. 次の関数を初期関数 (initial function) という。
Z(x)S(x)Pik(x1,…,xk)=0=x+1=xi(1≤i≤k)(零関数),(後続者関数),(射影関数).m変数関数fとk変数関数g1,…,gmから
h(x)=f(g1(x),…,gm(x))を作る操作を合成 (composition) という。
k変数関数fと(k+2)変数関数gから
h(x,0)h(x,n+1)=f(x),=g(x,n,h(x,n))を満たす(k+1)変数関数hを作る操作を原始再帰 (primitive recursion) という。原始再帰ではk=0の場合も許す。このとき、基底のfの代わりに一つの自然数cを指定し、h(0)=cかつh(n+1)=g(n,h(n))を満たす一変数関数hを作る。初期関数を含み、合成と原始再帰について閉じた最小の関数クラスを原始再帰関数 (primitive recursive function) のクラスという。
命題 2.2. 全ての原始再帰関数は全域関数である。
証明. 関数を生成する式の構造に関する帰納法を用いる。初期関数は表示された式によって全ての入力で値をもつ。全域関数f,g1,…,gmの合成では、全ての値gi(x)が定まり、f(g1(x),…,gm(x))の値も定まるので、合成結果も全域である。
全域関数f,gから原始再帰でhを作る場合を考える。固定したxについて、h(x,0)=f(x)は定義される(k=0の場合には、指定した自然数によってh(0)=cが定義される)。h(x,n)が定義されるならば、g(x,n,h(x,n))も定義されるのでh(x,n+1)が定義される。nに関する帰納法により、全てのnでh(x,n)が定義される。xは任意なのでhは全域である。したがって、有限回の生成規則で得られる全ての原始再帰関数は全域である。▨
命題 2.3. 加法、乗法、切捨て減法x−˙y=max{x−y,0}、等号の特性関数、有限の場合分け、固定底b≥2による冪bn、商⌊n/b⌋と剰余nmodbは原始再帰関数である。さらに、原始再帰関数の有界和と有界積、原始再帰的述語に対する有界量化と有界最小化、および有限組の符号化と成分取出しを原始再帰関数によって実行することができる。
証明. 加法と乗法は
add(x,0)mul(x,0)=x,=0,add(x,n+1)mul(x,n+1)=S(add(x,n)),=add(mul(x,n),x)という原始再帰で得られる。前者関数をpred(0)=0、pred(n+1)=nと定める。この式は、基底値c=0とg=P12によるk=0の原始再帰である。さらに、x−˙0=x、x−˙(n+1)=pred(x−˙n)と再帰すれば切捨て減法を得る。
sg(0)=0、sg(n+1)=1と定め、iszero(n)=1−˙sg(n)と置く。すると
eq(x,y)=iszero((x−˙y)+(y−˙x))はx=yの場合に1、それ以外で0となる。値が0または1の特性関数χに対する場合分けは
if(χ,u,v)=χu+(1−˙χ)vで実行することができる。固定底の冪はp(0)=1、p(n+1)=bp(n)という原始再帰で得られる。原始再帰関数a(x,j)に対する有界和と有界積は
Suma(x,0)Proda(x,0)=0,=1,Suma(x,t+1)Proda(x,t+1)=Suma(x,t)+a(x,t),=Proda(x,t)a(x,t)という原始再帰で得られる。
原始再帰的述語R(x,y)の特性関数をχRとする。y≤tの範囲でR(x,y)が真となる最小のyを返し、存在しない場合にはt+1を返す関数BR(x,t)を、tに関する原始再帰で構成する。t=0ではχR(x,0)=1なら0、そうでなければ1とする。BR(x,t)≤tなら以前の値を保ち、BR(x,t)=t+1ならχR(x,t+1)を調べ、真ならt+1、偽ならt+2とする。この更新は上の比較と場合分けだけで記述する。したがってBRは原始再帰関数である。有界存在量化はBR(x,t)≤tの特性関数であり、有界全称量化は反例に対する有界存在量化の否定である。
bによる商は、qb≤nを満たす最大のq≤nを有界探索すれば得られ、剰余はn−˙b⌊n/b⌋で得られる。最大値の探索も、候補を0からnまで走査して条件を満たすたびに保存値を更新する原始再帰である。
有限組には Cantor の対関数
⟨x,y⟩=2(x+y)(x+y+1)+yを用いる。分子は常に偶数であり、固定数2による商は既に構成した関数で計算することができる。⟨x,y⟩=zならx,y≤zなので、0≤x,y≤zの有限範囲を有界探索して二成分を復元することができる。この探索は有界量化と場合分けの有限な入れ子であり、原始再帰的である。対を入れ子にすれば、任意の固定長の組の符号化と各成分の取出しも原始再帰的になる。▨
命題 2.4. 全ての原始再帰関数は全域 Turing 計算可能である。
証明. 生成式の構造に関する帰納法によって、各原始再帰関数を計算する多テープ TM を構成する。零関数の機械は出力テープを空にして停止し、後続者関数の機械は入力の一進列へ1を一つ追加する。射影関数の機械は区切り記号を数え、指定された入力成分を出力テープへ複写する。以上の初期関数用の機械は全入力で停止する。
h(x)=f(g1(x),…,gm(x))について、帰納法の仮定からfと各giの機械がある。入力xを保存し、各gi(x)を順に計算して別の作業領域へ保存する。得られたm個の値をfの機械へ渡して出力する。各部分機械が全入力で停止するため、合成機械も停止し、h(x)を出力する。
原始再帰
h(x,0)=f(x),h(x,n+1)=g(x,n,h(x,n))については、最初にf(x)を計算して作業領域vへ保存する(k=0の場合には、基底値cの一進列をvへ直接書き込む)。カウンタiを0とし、i<nの間、g(x,i,v)を計算してvをその出力へ置き換え、iを一つ増やす。n回の反復後にvを出力する。iに関する帰納法により、反復開始時のvはh(x,i)である。したがって終了時の出力はh(x,n)である。反復回数は有限であり、f,gの機械は全域なので、この機械も全入力で停止する。
以上で各生成規則に対応する多テープ機械を構成した。各機械の出力テープは、位置0から始まる一進列として関数値を保持する。補題 1.2によって、各機械を正規出力配置で停止する単テープ決定性 TM へ変換することができる。ゆえに全ての原始再帰関数は全域 Turing 計算可能である。▨
3 非有界最小化と部分ミュー再帰
定義 3.1. 部分関数g:Nk+1⇀Nに対し、
h(x)=μy[g(x,y)=0]を次のように定める。h(x)=yであるとは、
g(x,y)=0かつ全ての z<y について g(x,z)↓ かつ g(x,z)=0が成り立つことをいう。そのようなyが存在しなければh(x)は未定義である。この操作を非有界最小化 (unbounded minimization) という。
初期関数を含み、部分関数に対する合成、原始再帰、および非有界最小化について閉じた最小のクラスを部分ミュー再帰関数 (partial mu-recursive function) のクラスという。
最小の零点より前に未定義値がある場合にも最小化結果を未定義としたのは、y=0,1,2,…を順番に計算する探索の動作と一致させるためである。
例 3.2.g(x,y)=x+y+1は原始再帰関数であり、全てのx,y∈Nについて正である。したがって
h(x)=μy[x+y+1=0]は全てのxで未定義である。g(x,0),g(x,1),…を順に計算する機械は、各値が正であることを確認して次の候補へ進み続け、停止しない。
4 Turing 機械の計算の算術化
固定した TM の一つの配置を一つの自然数で表し、一段遷移を原始再帰関数に変換する。一段遷移を表す原始再帰関数を時刻について原始再帰し、停止時刻だけを非有界最小化で探す。
補題 4.1. 固定した単テープ決定性 TMMについて、次の関数を原始再帰関数として構成することができる。
- 入力xの初期配置の符号InitM(x)。
- 配置符号cの一段後の配置符号StepM(c)。
- cが停止配置であるかを表す特性関数HaltM(c)。
- 停止配置cの出力を読み取る関数OutM(c)。
停止配置についてはStepM(c)=cと定める。
証明.Mのテープ文字へ0,…,b−1の番号を付け、空白記号の番号を0とする。配置を
(q,h,L,R)で表す。qは状態番号、hはヘッド位置である。Lのb進の最下位桁から順に、ヘッドの左隣、二つ左隣、という順序でテープ文字を記録する。Rの最下位桁はヘッド位置の文字、その上位桁は右側の文字を順に記録する。末尾の空白は番号0なので省略することができる。四つ組は命題 2.3の対関数を入れ子にして一つの自然数へ符号化する。
入力は一進ブロック1x1#⋯#1xkである。各ブロックの開始位置はx1+⋯+xi−1+i−1という加法で表され、その位置へ対応するテープ記号を置いたb進整数Rは、入力長を上界とするbjの有界和で表される。各位置の記号番号は、固定個数kのブロック境界との比較と場合分けによって原始再帰的に定まる。したがって、命題 2.3の有界和によりRは原始再帰関数である。初期状態番号、h=0、L=0とこのRを組にすることでInitMを得る。
現在の走査記号はa=Rmodbである。Mの遷移表は有限なので、各組(q,a)に対する(q′,a′,D)は、等号の特性関数と有限の場合分けによって原始再帰的に選ぶことができる。R0=⌊R/b⌋と置く。書込み後に右へ動く場合には
qnew=q′,hnew=h+1,Lnew=a′+bL,Rnew=R0とする。左へ動き、h>0である場合には、ℓ=Lmodbを左隣の記号として
qnew=q′,hnew=h−1,Lnew=⌊L/b⌋,Rnew=ℓ+b(a′+bR0)とする。左端で左へ動く場合と、その場にとどまる場合には、h,L,Rを定義どおりに更新する。表示した更新式は、加法、乗法、固定数による商と剰余、および有限の場合分けからなるので原始再帰的である。停止状態では入力四つ組をそのまま返す場合分けを加える。以上の場合分けで定めた関数がStepMである。
qが有限個の停止状態番号の一つと等しいかどうかは、等号の特性関数の有限和で判定することができる。この停止状態の特性関数がHaltMである。
出力規約では、停止時のテープは位置0から1がn個並び、その次が空白である。位置iのテープ文字は、i<hならLの第h−1−i桁、i≥hならRの第i−h桁であり、固定底の冪、商、および剰余によって原始再帰的に取り出す。最初の空白位置はh+R+1以下にある。実際、i<hの位置はこの上界未満であり、i≥hの非零桁数はR+1以下である。したがって、位置0からh+R+1までの有界最小化によって最初の空白位置を求めることができる。正しい停止出力では、最初の空白位置が出力nである。この最初の空白位置を返す関数をOutM(c)とする。不正な配置符号には値0を返す有限の場合分けを加えれば、四つの関数は全ての自然数上で全域な原始再帰関数になる。▨
次の同値は、「計算手続き」という未定義の直観からではなく、二つの形式体系の間の相互変換から従う。
定理 4.2. 部分関数f:Nk⇀Nについて、次の二条件は同値である。
- fは部分ミュー再帰関数である。
- fは部分 Turing 計算可能である。
証明.(1)⇒(2)を示す。全ての部分ミュー再帰関数について、生成式の構造に関する帰納法を用いる。以下のf,g,h,kは定義 2.1と定義 3.1の記号であり、主張のf,kとは別である。初期関数に対応する停止機械は命題 2.4の証明で構成した。
部分関数の合成h(x)=f(g1(x),…,gm(x))では、入力を保存し、g1,…,gmの機械を順に実行する。いずれかが停止しなければ合成機械も同じ呼出しで停止しない。この停止しない動作は、合成が未定義である場合と一致する。全てが値を出力した場合には、値g1(x),…,gm(x)をfの機械へ渡す。fが停止すればf(g1(x),…,gm(x))の値を出力し、停止しなければ合成機械も停止しない。したがって、定義域と値の両方が合成の定義に一致する。
部分関数f,gからの原始再帰では、入力(x,n)を保存し、最初にf(x)を実行して値vを得る(k=0の場合には基底値cをvとする)。停止しなければ全体も停止しない。次にi=0,…,n−1についてg(x,i,v)を実行し、停止して得た値でvを更新する。途中の呼出しが停止しなければ全体も停止しない。全てのn回が停止すれば最後のvを出力する。iに関する帰納法により、i回の更新後のvは、再帰式によって定義されるh(x,i)と一致する。したがって、構成した機械はh(x,n)が定義される場合に限って停止し、値h(x,n)を出力する。
最後にh(x)=μy[g(x,y)=0]を考える。機械はy=0から開始し、g(x,y)の機械を実行する。計算が停止して値0を出力したらyを出力して停止し、正の値を出力したらyを一つ増やして次の計算を始める。あるg(x,y)が未定義ならば機械はその呼出しで停止しない。したがって、この機械がyを出力するための必要十分条件は、全てのz<yでg(x,z)が定義されて正であり、g(x,y)=0であることである。以上で構成した最小化機械の停止条件は、非有界最小化の定義と一致する。
各構成は有限個の作業テープをもつ中間機械として実行することができ、停止する場合には、出力テープの位置0から始まる一進列として値を返す。補題 1.2を適用すれば、定義域、発散、および出力を保ち、正規出力配置で停止する単テープ決定性 TM が得られる。ゆえに全ての部分ミュー再帰関数は部分 Turing 計算可能である。
(2)⇒(1)を示す。部分関数f:Nk⇀Nを計算する TMMを固定する。補題 4.1の関数を用い、
CM(x,0)CM(x,t+1)=InitM(x),=StepM(CM(x,t))と定める。表示した再帰式はtに関する原始再帰であるからCMは原始再帰関数である。tに関する帰納法により、CM(x,t)はMの入力x上のt段後の配置を正確に符号化する。停止後にはStepMが配置を固定するため、この主張は停止時刻以後についても成り立つ。
次に
GM(x,t)=1−˙HaltM(CM(x,t))と置く。GMは原始再帰関数であり、Mが時刻tまでに停止している場合に限って値0をとる。したがって
τM(x)=μt[GM(x,t)=0]は、Mがxで停止する場合には最初の停止時刻を値とし、停止しない場合には未定義となる部分ミュー再帰関数である。
最後に
FM(x)=OutM(CM(x,τM(x)))と定める。部分ミュー再帰関数は合成について閉じているためFMも部分ミュー再帰関数である。Mが停止しない入力ではτMが未定義なのでFMも未定義である。Mが停止する入力では、CM(x,τM(x))が最初の停止配置であり、OutMはその出力f(x)を返す。したがってFMとfは定義域と値が一致する。ゆえにfは部分ミュー再帰関数である。
いずれの構成も、定義される入力では同じ値を返して停止し、定義されない入力では停止しない。したがって、部分関数として両クラスが一致する。▨
5 原始再帰関数の評価器と対角線論法
原始再帰関数は全域なので、命題 2.4によって全域 Turing 計算可能関数の部分クラスをなす。真の包含を示すため、全ての一変数原始再帰関数を列挙して対角線上で異なる全域関数を構成する。
補題 5.1. 一変数原始再帰関数の有限記述には有効な符号化e∈Nがあり、次を満たす全域 Turing 計算可能関数E:N2→Nが存在する。
- eが一変数原始再帰関数φeの正しい符号なら、E(e,x)=φe(x)である。
- 全ての一変数原始再帰関数φに対し、φ=φeとなる正しい符号eが存在する。
- eが正しい符号でなければE(e,x)=0である。
証明. 初期関数の記号を葉とし、合成と原始再帰の記号を、その引数となる有限個の関数記述を子にもつ節点とする有限構文木を考える。k=0の原始再帰の基底値は、数字列の葉として表す。各記号と括弧を有限アルファベットで表すことができるので、構文木は自然数へ符号化することができる。有限文字列の括弧対応、各節点の種類、子の個数、および入出力の項数は有限走査で検査することができる。したがって、正しい一変数関数記述であるかどうかを判定する TM が存在する。
評価器は正しい構文木を根から解釈する。零、後続者、射影の葉では定義式を直接実行する。合成節点では、各子の値を再帰的に評価してから外側の関数の子を評価する。原始再帰節点では、再帰引数がnならば基底関数を一回評価し(k=0の場合には基底値の葉を読み)、段階関数をn回評価する。構文木の高さに関する帰納法により、各子の評価は有限時間で終了する。原始再帰節点の反復回数nも有限なので、節点全体の評価も終了する。したがって、正しい符号と任意の入力xに対して評価器は停止し、記述された関数の値を返す。不正な符号では構文検査後に0を返すようにすれば、評価器Eは全入力で停止する。
原始再帰関数の定義は、初期関数から合成と原始再帰を有限回適用して得られる関数をちょうど集めたものである。したがって、各一変数原始再帰関数には、その有限な生成履歴を表す構文木があり、その符号eが存在する。以上で三条件が全て成り立つ。▨
定理 5.2. 原始再帰関数のクラスは、全域 Turing 計算可能関数のクラスの真部分クラスである。
証明.命題 2.4により、全ての原始再帰関数は全域 Turing 計算可能である。逆の包含が成り立たないことを示すため、補題 5.1のEを用いて
d(n)=E(n,n)+1と定める。Eは全域 Turing 計算可能であり、後続者関数も全域 Turing 計算可能なので、dは全域 Turing 計算可能である。
dが原始再帰関数であると仮定する。評価器の列挙性により、d=φeとなる正しい符号eが存在する。n=eを代入すると、
d(e)=E(e,e)+1=φe(e)+1=d(e)+1を得る。自然数は自分自身に1を加えた数と等しくないので矛盾である。したがってdは原始再帰関数ではない。原始再帰関数は全域 Turing 計算可能関数に含まれ、しかもdは後者にだけ属するので、包含は真である。▨
6 同値定理と Church–Turing の提唱
7 演習
問題 7.1.
- n以下の素数の個数をπ(n)とする。一変数関数πが原始再帰関数であることを示せ。
- sg(0)=0、sg(n+1)=1とし、q(x,y,z)=1−˙sg(y)、g(x,y)=μz[q(x,y,z)=0]とおく。gが部分ミュー再帰関数であり、g(x,0)↑、y≥1についてg(x,y)=0であることを示せ。さらに、すべてのxについてμy[g(x,y)=0]が未定義であることを示せ。
- 全域関数fを計算する単テープ決定性 TMMと原始再帰関数bがあり、すべての入力xについてMの停止時刻τM(x)がb(x)以下であるとする。fが原始再帰関数であることを示せ。
- F:N≥02→N≥0を任意の全域 Turing 計算可能関数とする。全域 Turing 計算可能な一変数関数hで、どのeについてもh=F(e,⋅)となるものを構成せよ。これにより、全域 Turing 計算可能な一変数関数の全体を一つの全域 Turing 計算可能関数Fの切片F(e,⋅)として列挙することはできないことを結論せよ。
解答 (演習の要点).
-
命題 2.3を用いる。整除関係d∣pは∃q≤p(qd=p)と同値であり、乗法、等号の特性関数、有界存在量化から原始再帰的である。素数であるという述語は
Prime(p)⟺2≤p ∧ ∀d≤p(d∣p→(d=1∨d=p))
と書くことができ、比較、論理結合、有界全称量化から原始再帰的である。その特性関数をχPとすると、有界和の関数SumχPは原始再帰的であり、π(n)=SumχP(n+1)=∑j=0nχP(j)は後続者関数との合成として原始再帰関数である。
-
sgはk=0の原始再帰であり、qは切捨て減法、定数、射影との合成であるから原始再帰関数である。gはその非有界最小化であるから部分ミュー再帰関数である。y=0ならばすべてのzについてq(x,0,z)=1−˙0=1=0であるから、q(x,0,z)=0を満たすzは存在せずg(x,0)↑である。y≥1ならばq(x,y,0)=1−˙1=0であるからg(x,y)=0である。
h(x)=μy[g(x,y)=0]が値y0をもつと仮定する。g(x,y0)=0であるからy0≥1であり、定義 3.1によりz=0<y0についてg(x,0)↓でなければならないが、これは前段に反する。よってh(x)は未定義である。g(x,1)=0であるにもかかわらず未定義となるのは、定義が最小の零点より前のすべての値の定義を要求するからである。
-
定理 4.2の証明のCMを用いる。t=τM(x)とするとCM(x,t)は停止配置であり、補題 4.1の規約StepM(c)=c(cが停止配置)により、s≥tについての帰納法でCM(x,s)=CM(x,t)である。仮定t≤b(x)からCM(x,b(x))=CM(x,τM(x))であり、
f(x)=OutM(CM(x,b(x)))
が成り立つ。右辺は原始再帰関数OutM、CM、bと射影の合成であるから、fは原始再帰関数である。この式では非有界最小化τMを用いておらず、停止配置が自分自身へ移る規約によって、停止時刻を知らなくても上界の時刻で出力を読むことができる。
-
h(n)=F(n,n)+1と定める。Fを計算する TM をMFとし、多テープ機械Nを次のように作る。Nは第1テープの入力1nを走査して第2テープへ1n#1nを書き出し、第2テープを入力テープとしてMFを模倣する。MFが正規出力配置1F(n,n)で停止したら、その末尾の空白へ1を一つ書いて出力を1F(n,n)+1とし、返却状態へ入る。Fは全域であるからNはすべての入力で返却状態へ入り、補題 1.2によりhを正規出力配置で計算する単テープ決定性 TM が得られる。よってhは全域 Turing 計算可能である。h=F(e,⋅)を満たすeが存在すると仮定すると、h(e)=F(e,e)であるが、定義によりh(e)=F(e,e)+1であり矛盾する。よってどのeについてもh=F(e,⋅)である。hは全域 Turing 計算可能な一変数関数であるから、{F(e,⋅)∣e∈N≥0}はそれらの全体を尽くさない。定理 5.2の証明は、この議論をF=Eに適用し、原始再帰関数の列挙にhが現れないことを用いたものである。
▨