13.5 停止確率

13.4 節は機械を一つ取り替え,値を持つプログラムの全体が語頭のない集合になるようにした.その代償として係数が入ったが,得たものは大きい.重みの総和がを超えなくなったので,プログラムの全体に確率としての読み方が付いたからである.本節はまず,13.2 節について示した計算不可能性がでも成り立つことを見て,そこからの停止の判定不可能性を出す.そのうえで,値を持つプログラム全体の重みを一つの実数にまとめ,その実数もまた計算できないことを示す.

停止問題という語を先に断っておく.プログラムを走らせる前に,それが値を返すかどうかを言い当てる問題のことである.13.2 節はこれに触れなかった.以下で判定できないと述べるのも,13.4 節で固定したの停止についてだけである.同じ論法は 定義 13.1.4についても通るが,本書はについてだけ書く.

記述長も停止も決められない

定理 13.5.1. 自然数を対応させる関数は計算可能でない.

この主張は 命題 13.4.6 からも出る.だから,一方が計算可能なら他方も計算可能で,定理 13.2.3に当てれば矛盾するからである.以下でそうせずに Berry の探索をもう一度書くのは,矛盾を出す段がの側の不変性,すなわち 定理 13.4.7 だけに乗ることを見せるためである.以下の証明も,を満たすがあることを言う一段では 命題 13.4.6 を経由するが,そこから先には現れない.

証明. が計算可能だとする.

に対し,を満たすのうち最小のものをと書く.そのようながあることを見る.系 13.2.2に当てるとを満たすがあり,命題 13.4.6 よりである.よっては定まる.は,の順にを計算して値が以上になる最初のを返す探索で求まり,この探索は必ず停止する.そこで(第引数は使わない)と定めると,Church–Turing のテーゼよりは計算可能であり,とくに 定義 13.1.3 の意味で機械である.

定理 13.4.7 をこのに当てて定数をとる.とし,の二進表示のビット列とすると,が表す自然数はだからであり,である.いっぽうの定め方からである.二つを合わせると,すべてのについて

𝑘2|𝑘|+𝑏

が成り立つ.

これはを大きくとると破れる.とおくと,の二進表示はの後ろに個並べたものだからであり,上の不等式はになる.ところがについての帰納法よりだから

2𝑏+4=162𝑏16𝑏+16>3𝑏+10

である.矛盾した.

形式化: prefixComplexity_not_computable (ソース)

証明の筋は 定理 13.2.3 とまったく同じ Berry の探索で,違いは 定理 13.1.7 の代わりに 定理 13.4.7 を当てるところだけである.そこで係数が入るので,破れる場所を探す不等式がではなくになる.右辺はの二進表示の桁数の倍だから,が倍になるたびにしか増えない.係数がいくつであっても,桁数に比例する量がそのものに追いつくことはないので,同じ矛盾が出る.

次に見るのはビット列を引数にとる対応についての主張である.13.1 節が計算可能と呼んだのは自然数を引数にとる関数だったので,ビット列を自然数に読み替える約束を先に一つ決めておく.

定義 13.5.2(ビット列を引数にとる対応の計算可能性). ビット列に,その先頭へを置いた列が表す自然数を対応させる読み替えを考える.ビット列に自然数を対応させる対応が 計算可能 であるとは,自然数を引数にとる計算可能な関数があって,どのビット列についても,の読み替え先を引数にしたその関数の値が,もとの対応がに与える値に等しいことをいう.

読み替えは単射で,像は以上の自然数の全体である.先頭がのビット列は,定義 13.1.2 より,それが表す自然数の二進表示そのものだからである.は像に入らないので,定義 13.5.2 は自然数を引数にとる関数のでの値に何も要求していない.次の 系 13.5.3 の主張と 定理 13.5.8 の証明は,どちらもこの約束のうえにある.

系 13.5.3. ビット列に,が値を持つときを,持たないときを返す対応は,定義 13.5.2 の意味で計算可能でない.

証明. その対応が計算可能だとする.を与えて次の探索を行う.ビット列を長さの短い順に,長さの等しいものは先頭から見てが先に来る順に一本ずつ並べ,各について,仮定した対応でが値を持つかどうかを調べる.持たなければ次へ進む.持つならばに走らせて値を求め,それがに等しければを返し,等しくなければ次へ進む.

命題 13.4.5 よりを満たすがあるから,この探索は必ず停止する.並べ方が長さの短い順だから,返る値はを満たすの長さの最小,すなわちである.値を持つと分かったプログラムだけを走らせているので,途中で止まらなくなることもない.よっては計算の手続きで書き下せて,Church–Turing のテーゼより計算可能である.これは 定理 13.5.1 に反する.

形式化: prefixUniversalEval_dom_not_computablePred (ソース)

形式化上の注記. 本文は 系 13.5.3定理 13.5.1 の対偶として出したが,形式化は二つを独立に示す.定理 13.5.1 に紐付けた宣言は,本文と同じ Berry の探索による.系 13.5.3 に紐付けた宣言のほうは,そちらを取り込んだうえで使わずに,Mathlib のもつ部分計算可能関数の番号づけについての停止問題に帰着させて示されている.保証しているのは主張の正しさであって,紙の証明手順の一致ではない.

紐付けた宣言がビット列に使う読み替えも,定義 13.5.2 が固定したものではなく,Mathlib がもつビット列の標準の符号化である.二つは互いに計算可能に移り合うので,計算可能かどうかという主張としては同じものになるが,その移り合いを述べる宣言は無い.

系 13.5.3 が停止問題と呼ばれるものの,についての形である.に渡すプログラムについては,走らせる前に止まるかどうかを言い当てる手続きが無い.証明が使ったのは一手だけで,止まるかどうかが前もって分かるなら,短いプログラムから順に全部試して最短のものを見つけられる,というものである.逆に言えば,を求める手続きが無い理由は,短いプログラムを試し尽くせないところにある.走らせてみて止まらないとき,それが「まだ止まっていない」のか「永久に止まらない」のかが区別できない.

停止確率

定義 13.5.4(停止確率).

Ω:=𝑠:V(𝑠) が値を持つ2|𝑠|

と定め(が値を持つビット列の全体をわたる.可算個の和は 13.4 節で置いた約束のとおり,有限部分和の上限として読む),停止確率 と呼ぶ.

形式化: chaitinOmega (ソース)

第3章 3.1 節3.4 節は,確率空間の点の集合をと書いている.本章のはそれとは別のもので,について定まる一つの実数である.どちらも引数をとらないので,章をまたいで読むときは気をつけたい.この記号は Chaitin が導入したもので,記号そのものがこの量の名前として通っているため,本書では書き換えずに使う.

命題 13.5.5. である.

証明. 上から抑える.が値を持つビット列の全体は,命題 13.4.4 より空列を含まない語頭のない集合である.よって 補題 13.4.2 よりである.

下から抑える.命題 13.4.5に当てるとを満たすビット列がある.定義 13.5.4 の和はこのの項を含み,項はどれも非負だから,である.

形式化: 下からの評価 chaitinOmega_pos,上からの評価 chaitinOmega_le_one (ソース)

の読み方は 定義 13.4.8と同じである.でたらめに投げたビット列をに読ませるとき,が「値がになる重み」だったのに対し,は「何であれ値が返る重み」である.命題 13.5.5 はこれがのあいだにあることを言っているので,確率と呼んでよい.両端はもっと狭められる.例 13.5.9を与える.

計算可能な実数

が計算できるかどうかを問うには,実数について計算可能であるとは何かを決めなければならない.13.1 節で計算可能と呼んだのは自然数を引数にとる関数のことだったから,そのままでは実数に当てられないからである.決め方は素朴で,どんな精度を指定されてもその精度まで近い値を返す手続きがあることをいう.

定義 13.5.6(計算可能な実数). 以上の実数とする.計算可能 であるとは,自然数を値にとる計算可能な数列があって,すべてのについて

𝑎𝑛2𝑛𝑟+2𝑛かつ𝑟𝑎𝑛2𝑛+2𝑛

が成り立つことをいう.

形式化: IsComputableENNReal (ソース)

二つの不等式を合わせると,の差が以下だと言っている.すなわちの刻みで測った目盛りの読みであり,を大きくすれば刻みはいくらでも細かくなる.この形をとった理由は二つある.一つは,近づける列を自然数の列にできることである.刻みの幅で決まってしまうので,動くのは目盛りの読みだけであり,有理数の列を持ち出さずに済む.有理数の列で定めるなら,先に有理数の上での計算可能性を定めなければならない.もう一つは,差を引き算で書かずに,どちらの向きも足し算の形にしてあることである.有理数の計算可能な列で定める流儀もあり,そちらの列からは丸めを一段はさんでこの形の列が得られるが,本書はそれを示さない.その一段は形式化もされていない.

道具をもう一つ借りる.予算つきの実行(Kleene の標準形定理)と呼ぶ.計算の手続きで書き下せる部分関数と自然数に対し,その部分関数を与えられた引数に手数の予算で走らせた結果が定まり,結果は値を持たないか一つの自然数を返すかのどちらかである.借りるのは次の三つである.

  1. 予算と引数から結果を求める対応は計算可能である.
  2. のとき,予算で値が返るなら予算でもが返る.
  3. その部分関数がその引数で値を持つことと,ある予算で結果がになることとは同値である.

当てる先は 定義 13.4.3で,使うのは 補題 13.5.7の定め方とその証明,および 定理 13.5.8 の証明である.本書はこれを証明しない.計算モデルを一つ選ばなければ「手数」そのものが定まらず,そこは 13.1 節で借りた枠組みの外にあるからである.

形式化上の注記. 本書が証明しないのは計算モデルの選び方に関わるからであって,形式化が及んでいないからではない.いま挙げた三つは,当てる先であるについて,どれも仮定なしに機械検証されている.第の性質が prefixEvaln_primrec,第prefixEvaln_mono,第prefixEvaln_complete (InformationTheory/Shannon/Kolmogorov/OmegaNoncomputable.lean) である.形式化は Mathlib がもつ計算モデルを一つ選んでいるので,そこでは「手数」が定まる.第の宣言が述べているのは,本文が借りた計算可能性より強い,原始再帰的であることである.

補題 13.5.7(下からの近似). に対し

Ω𝑡:=2|𝑠|

と定める(和は,長さが以下で,が予算で値を返すビット列の全体をわたる).このとき次の三つが成り立つ.第に,は自然数であり,は計算可能な数列である.第に,について単調非減少である.第に,にわたる上限はに等しい.

証明.

  1. 和がわたる集合は,長さ以下のビット列の全体という有限集合の部分集合だから有限である.その元を満たすのでは自然数であり,はそれらの有限個の和だから自然数である.計算可能であることを見る.長さ以下のビット列を並べる手続きは有限回の繰り返しで書け,各々について予算で値が返るかどうかは予算つきの実行の第の性質より計算可能に決まり,返るものについてを足す手続きも有限回で終わる.よって全体は必ず停止する手続きで書き下せて,Church–Turing のテーゼより計算可能である.

  2. とする.長さが以下なら長さは以下であり,予算つきの実行の第の性質より,予算で値が返るなら予算でも返る.よっての和がわたる集合はのそれを含み,項が非負だからである.

  3. まずを見る.予算つきの実行の第の性質より,予算で値が返るビット列ではは値を持つ.よって定義 13.5.4 の和の有限部分和であり,和を有限部分和の上限として定めたことからである.逆向きを見る.が値を持つビット列からなる有限集合をとると,同じ性質より,各にある予算があって値が返る.は有限だから,の全体にわたって超える自然数がとれる.第の主張と同じ理由での元はどれも予算で値が返り,長さも以下だから,の和がわたる集合に含まれる.項が非負だからである.はこれら有限部分和の上限だから,の上限以下である.二つを合わせて,上限はに等しい.

形式化: にあたる omegaApprox,その分子 omegaApproxNum,分子にを掛けたものがに等しいこと omegaApprox_eq_num,分子の計算可能性 omegaApproxNum_computable,単調性 omegaApprox_mono,上限 iSup_omegaApprox (ソース)

を下から近づける.予算を増やせば止まるプログラムが見つかっていくので値は増えるいっぽうで,どこまでも増やせばに届く.ところが,いまにどれだけ近いかは,これだけでは分からない.まだ見つかっていない停止するプログラムがどれだけの重みを持つかを言う手立てが無いからである.次の定理が示すのは,その手立ては手続きとしては存在しないということである.

定理 13.5.8(停止確率は計算可能でない). 定義 13.5.6 の意味で計算可能でない.

証明の要点は一つだけである.を上からも近づけられるなら,「あとどれだけの重みが残っているか」が分かり,残りがを切った段から先では,長さのプログラムがもう止まらないと言い切れる.下からの近似補題 13.5.7 のとおり手続きで求まるので,上からも近づけられると停止が判定できてしまう.

証明. 命題 13.5.5 より以上だから 定義 13.5.6 を当てられる.が計算可能だとし,その定義の数列をとる.

について,条件

𝑎𝑛+22(𝑛+2)Ω𝑡+2(𝑛+1)

を満たすを探す.そのようながあることを見る.補題 13.5.7 の第の主張よりの上限はであり,は正だから,を満たすがある.定義 13.5.6 の第の不等式をに当てるとだから,このについて

𝑎𝑛+22(𝑛+2)Ω+2(𝑛+2)<Ω𝑡+2(𝑛+2)+2(𝑛+2)=Ω𝑡+2(𝑛+1)

である.

探索が手続きになることを見る.条件の両辺にを掛けると

𝑎𝑛+22𝑡(2𝑡Ω𝑡)2𝑛+2+2𝑡+1

となり,補題 13.5.7 の第の主張よりこれは自然数どうしの比較である.は計算可能な数列だから,から両辺を求めて比べる手続きは有限回の計算で終わる.いま見たとおり条件を満たすはあるので,を与えて条件を満たす最小のを返す探索は必ず停止し,Church–Turing のテーゼよりこの対応は計算可能である.その値をと書く.

での近さを見る.定義 13.5.6 の第の不等式をに当てるとであり,が条件を満たすことと合わせて

ΩΩ𝑡𝑛+2(𝑛+1)+2(𝑛+2)<Ω𝑡𝑛+2𝑛

である(右側はによる).

停止を判定する.ビット列をとり,と置く.が値を持つことと,に予算で走らせて値が返ることは同値である.一方の向きは予算つきの実行の第の性質から出る.逆を示す.が値を持ち,予算では値が返らないとすると,の和がわたる集合に属さない.いっぽうその集合の元もも,どれもが値を持つビット列だから,その集合にを足したものは 定義 13.5.4 の和の有限部分和を与え,

Ω𝑡𝑛+2𝑛Ω

である.これは直前に得た不等式に反する.

矛盾を出す.いま見たことから,ビット列に対してが値を持つかどうかは,を求めてから予算を走らせれば決まる.は計算可能で,予算つきの実行の第の性質より結果を求める対応も計算可能だから,この判定は必ず停止する手続きで書き下せて,Church–Turing のテーゼより計算可能である.これは 系 13.5.3 に反する.

形式化: chaitinOmega_not_computable (ソース)

したがって,計算できないのはの値そのものというより,近似の誤差のほうである.

例 13.5.9(停止確率の両側からの見積もり). である.

証明. 下から抑える.先頭のビットがであるビット列をとる.定義 13.1.4 よりの先頭のより後ろのビット列が表す自然数だから,そのようなではつねに値を持つ.の自己限定形(定義 13.4.3)とすると,の先頭から最初のまでのの個数は,その後ろはだから,定義 13.4.3 よりであり,とくには値を持つ.その長さはである.またの最初のより後ろがだから,ならである.

長さごとに数える.とすると,先頭がで長さがのビット列は,後ろのビットの選び方だけあるから本であり,そのそれぞれについてである.

を任意にとる.いま数えたビット列のうちにあたるは相異なる有限個で,どれもが値を持つから,それらの重みの和は 定義 13.5.4 の和の有限部分和である.その値は

𝐽𝑗=02𝑗2(2𝑗+3)=𝐽𝑗=02𝑗3=14(12(𝐽+1))

である.和を有限部分和の上限として定めたことからはこの値以上であり,を大きくすると右辺はに近づくから,である.

上から抑える.まず,が値を持つビット列の先頭のビットはつねにである.命題 13.4.4 よりそのようなビット列はあるビット列の自己限定形であり,が空列だとするとの一文字で,定義 13.1.4 より値を持たないからである.よってであり,で始まって,その長さはである.

が値を持つビット列に,その先頭のを落とした列を対応させる.は先頭にを戻せばから決まるから,この対応は単射であり,である.の全体は空列を含まない語頭のない集合である.空列を含まないことは長さが以上であることによる.またが値を持つ二つのビット列についての語頭なら,先頭にを戻したの語頭であり,命題 13.4.4 よりが値を持つビット列の全体は語頭のない集合だからとなり,したがってである.

が値を持つビット列の有限個の集まりをとすると,いま見たことと 補題 13.4.2 から

𝑠𝐹2|𝑠|=12𝑠𝐹2|𝑠|12

である.和を有限部分和の上限として定めたことからである.

形式化上の注記. 例 13.5.9 の二つの値にあたる宣言はどちらも無い.下からの評価が使った一段,すなわちが値を持つビット列の有限個の集まりについて重みの和が以下であることは sum_le_chaitinOmega (InformationTheory/Shannon/Kolmogorov/OmegaNoncomputable.lean) として形式化されているが,具体的な数を下界として与える宣言は無い.命題 13.5.5 に紐付けたの証明も,この一段をを出す一本のプログラムに当てたところで止めている.上からの評価についても,形式化が持つのは 命題 13.5.5 に紐付けたまでである.

下からの評価が使ったのは,先頭のビットがであるビット列ではがつねに値を持つという 定義 13.1.4 の一事だけである.そのようなビット列は長さごとに倍々に増え,その自己限定形はどれもで止まるので,それだけでは埋まる.上からの評価が使ったのは,値を持つプログラムがどれもで始まるという一事だけで,それだけで 命題 13.5.5が半分になる.定理 13.5.8 が言っているのは,こうして両側から挟んでいく作業に終わりが見えないということであって,個々の見積もりができないということではない.実際 補題 13.5.7は,予算を与えれば有限の計算で求まる.

が出るのは本節までである.次節が測るのは一つの自然数についての記述の長さで,が値を持つプログラムの全体にわたる重みは相手にしない.次節はに戻り,記述を二つの部分に分ける見方を入れる.対象そのものを直に書き下すかわりに,まず対象を含む有限集合を書き,次にその中での位置を書く.前半が対象の型を,後半が型の中でのばらつきを担うという分け方で,第12章の型による二段符号と同じ考えを,分布を持たない一つの対象に当てたものである.

InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.