Riceの定理(Rice's theorem)とは、部分計算可能関数の標準の番号付け $\varphi_e$ について、部分計算可能関数の集まり $\mathcal{C}$ が空でも全体でもなければ、$\varphi_e\in\mathcal{C}$ となる番号 $e$ の集合は決定可能でない、という計算可能性理論の定理である。プログラムが計算する関数(振る舞い)だけで決まる性質は、自明なものを除いてどれも計算では判定できないことを意味し、自己停止集合からの多対一還元で証明される。$\mathcal{C}$ が全体でなく、どこでも定義されない関数を含めば、この番号の集合は半決定可能でもない。さらに番号の集合が半決定可能な性質は、関数の有限な部分関数だけで決まり(Rice–Shapiro の定理)、全域性の判定が半決定すらできないことがここから従う。
プログラムについての問いには 2 種類ある。「この番号のプログラムは 100 文字以下か」「ある命令を含むか」のように、書かれた形を調べれば答えが出る問いと、「入力 $0$ で停止するか」「どの入力でも停止するか」「別のプログラムと同じ関数を計算するか」のように、プログラムが計算する関数(振る舞い)についての問いである。Rice の定理(Rice's theorem)は、後者の問いが、すべての番号で真になる問いとすべての番号で偽になる問いを除いて、どれも計算では判定できないことを述べる。
停止問題 の決定不能性は「ある特定の問いが判定できない」という個別の結果であるが、Rice の定理はそれを一般化し、振る舞いについての問いが一律に判定できないことを示す。証明は、判定したい性質をもつ関数ともたない関数を、停止するかどうかに応じて切り替える還元である。この記事では Rice の定理を証明し、さらに「半決定可能な振る舞いの性質は有限の情報だけで決まる」という Rice–Shapiro の定理を証明して、全域性や有限性の判定が半決定すらできないことを導く。
$\mathbb{N}=\{0,1,2,\dots\}$ とする。部分関数 $f\colon\mathbb{N}^k\rightharpoonup\mathbb{N}$ について、$f(\vec x)$ が定義されることを $f(\vec x)\!\downarrow$、されないことを $f(\vec x)\!\uparrow$ と書き、$\alpha\simeq\beta$ は「両辺とも定義されて等しいか、両辺とも定義されない」ことを表す。部分計算可能・計算可能(全域的)・決定可能・半決定可能の意味は 計算可能関数 の定義「計算可能関数」に従う。部分計算可能関数は合成と μ 作用素で閉じており、合成は内側の値がすべて定義されるときにだけ定義される。
番号付けは 計算可能関数 の定義「標準の番号付け」の $\varphi_e$(1 変数)と $\varphi^{(2)}_e$(2 変数)に固定し、次の 4 つの事実を使う。
$A\subset\mathbb{N}$ が、$\varphi_a=\varphi_b$ かつ $a\in A$ ならば $b\in A$ を満たすとき、$A$ を 指数集合(index set)という。部分計算可能関数の集まり $\mathcal{C}$ に対し
$$
I_{\mathcal{C}}:=\{e\in\mathbb{N}\mid\varphi_e\in\mathcal{C}\}
$$
とおく。$I_{\mathcal{C}}$ は指数集合であり、逆に指数集合 $A$ は $\mathcal{C}:=\{\varphi_a\mid a\in A\}$ によって $A=I_{\mathcal{C}}$ と書ける。$\mathcal{C}$ が空でも部分計算可能関数の全体でもないこと、すなわち $I_{\mathcal{C}}$ が $\emptyset$ でも $\mathbb{N}$ でもないことを、性質 $\mathcal{C}$ が 自明でない という。
指数集合は「番号 $e$ についての問いのうち、答えが $\varphi_e$ だけで決まるもの」を集合で表したものである。部分計算可能関数の集まり $\mathcal{C}$ を「関数の性質」とみなし、$I_{\mathcal{C}}$ をその性質をもつプログラムの番号の集合と読む。
$\mathcal{C}$ を部分計算可能関数の空でない集まりとし、$\emptyset\notin\mathcal{C}$ とする。このとき $K\le_{\mathrm m}I_{\mathcal{C}}$ である。
$g\in\mathcal{C}$ を 1 つとる。射影 $\pi(z_0,z_1):=z_0$ を使って
$$
h(x,y):\simeq\pi\bigl(g(y),\ \varphi_x(x)\bigr)
$$
とおく。$h$ は (N2) の関数・$g$・$\pi$ の合成なので部分計算可能であり、$h(x,y)$ は $g(y)$ と $\varphi_x(x)$ がともに定義されるときにだけ定義されて、値 $g(y)$ をとる。(N4) により計算可能関数 $f$ で $\varphi_{f(x)}(y)\simeq h(x,y)$ となるものがある。
$x\in K$ なら $\varphi_x(x)\!\downarrow$ なので、すべての $y$ で $h(x,y)\simeq g(y)$ であり、$\varphi_{f(x)}=g\in\mathcal{C}$、すなわち $f(x)\in I_{\mathcal{C}}$ である。$x\notin K$ ならどの $y$ でも $h(x,y)$ は定義されないので $\varphi_{f(x)}=\emptyset\notin\mathcal{C}$、すなわち $f(x)\notin I_{\mathcal{C}}$ である。よって $f$ は $K$ から $I_{\mathcal{C}}$ への多対一還元である。$\square$
$f(x)$ は「まず $\varphi_x(x)$ を計算し、それが停止したら $g(y)$ を計算する」プログラムの番号である。$x$ が自己停止するかどうかで、このプログラムの振る舞いは $g$ か $\emptyset$ のどちらかに切り替わる。
$\mathcal{C}$ を部分計算可能関数の集まりとする。$I_{\mathcal{C}}=\{e\mid\varphi_e\in\mathcal{C}\}$ が決定可能なら、$\mathcal{C}$ は空であるか、部分計算可能関数の全体である。言い換えると、$\emptyset$ でも $\mathbb{N}$ でもない指数集合は決定可能でない。
$\mathcal{C}$ が空でも全体でもないとして、$I_{\mathcal{C}}$ が決定可能でないことを示す。
$\emptyset\notin\mathcal{C}$ の場合:lem-rice-reduction により $K\le_{\mathrm m}I_{\mathcal{C}}$ である。$I_{\mathcal{C}}$ が決定可能なら $K$ も決定可能になり、$K$ が決定可能でないことに反する。
$\emptyset\in\mathcal{C}$ の場合:$\mathcal{C}$ に属さない部分計算可能関数の集まりを $\mathcal{C}'$ とする。$\mathcal{C}$ は全体でないので $\mathcal{C}'$ は空でなく、$\emptyset\notin\mathcal{C}'$ である。lem-rice-reduction により $K\le_{\mathrm m}I_{\mathcal{C}'}=\mathbb{N}\setminus I_{\mathcal{C}}$ である。$I_{\mathcal{C}}$ が決定可能なら補集合 $\mathbb{N}\setminus I_{\mathcal{C}}$ も決定可能であり、同じく矛盾する。$\square$
証明の後半から、次の強い結論も得られる。
$\mathcal{C}$ が $\emptyset$ を含み、部分計算可能関数の全体でないなら、$I_{\mathcal{C}}$ は半決定可能でない。
prf-rice-main の後半により $K\le_{\mathrm m}\mathbb{N}\setminus I_{\mathcal{C}}$ であり、補集合をとって $\mathbb{N}\setminus K\le_{\mathrm m}I_{\mathcal{C}}$ である。$I_{\mathcal{C}}$ が半決定可能なら $\mathbb{N}\setminus K$ も半決定可能になり、$\mathbb{N}\setminus K$ が半決定可能でないことに反する。$\square$
次の集合はどれも、自明でない性質の指数集合なので決定可能でない。
Rice の定理の結論は「決定可能でない」であり、「半決定可能でない」までは言えない。$\{e\mid\varphi_e(0)\!\downarrow\}$ と $\{e\mid W_e\neq\emptyset\}$ は自明でない性質の指数集合だが、どちらも半決定可能である。後者は、$\langle x,s\rangle$ を順に調べて $T(e,x,s)$ となる組を探す計算 $\mu w\,T(e,(w)_0,(w)_1)$ の定義域になっている($(w)_0,(w)_1$ は $w=\langle x,s\rangle$ の成分)。半決定可能な指数集合が満たす必要条件を与えるのが次の節の Rice–Shapiro の定理である。
定義域が有限集合である部分関数を 有限関数 という。有限関数は部分計算可能である。定義域 $D$ の外で $0$ をとるように $\theta$ を延ばした関数 $v$ は原始再帰関数(有限個の場合分け)で、$\chi_D$ も原始再帰的なので、$\theta(y)\simeq\pi\bigl(v(y),\ \mu z\,[\,\chi_D(y)=1\,]\bigr)$ と書けるからである($\pi(z_0,z_1):=z_0$ は射影)。部分関数 $\theta,f$ について、$\theta$ のグラフが $f$ のグラフに含まれることを $\theta\subset f$ と書く。
$\mathcal{C}$ を部分計算可能関数の集まりとし、$I_{\mathcal{C}}$ が半決定可能であるとする。このとき、任意の部分計算可能関数 $f$ について
$$
f\in\mathcal{C}\iff\theta\subset f\text{ となる有限関数 }\theta\in\mathcal{C}\text{ がある}
$$
が成り立つ。
どちらの向きも、成り立たないと仮定して $\mathbb{N}\setminus K\le_{\mathrm m}I_{\mathcal{C}}$ を導く。$I_{\mathcal{C}}$ は半決定可能なので、$\mathbb{N}\setminus K$ も半決定可能になって矛盾する。
⇒. $f\in\mathcal{C}$ だが、$\theta\subset f$ となる有限関数はどれも $\mathcal{C}$ に属さないとする。(N3) の $T$ を使って
$$
h(x,y):\simeq\begin{cases}f(y)&(T(x,x,s)\text{ となる }s\le y\text{ がない}),\\ \text{定義されない}&(\text{ある}).\end{cases}
$$
とおく。条件は原始再帰的な関係の有界量化なので決定可能であり(原始再帰関数 の命題「有界な和・積・量化・最小化」)、$r(x,y)\in\{0,1\}$ をその特性関数(条件が成り立てば $1$)とすると $h(x,y)\simeq\pi\bigl(f(y),\ \mu z\,[\,r(x,y)=1\,]\bigr)$ と書けるので、$h$ は部分計算可能である。(N4) により計算可能関数 $t$ で $\varphi_{t(x)}(y)\simeq h(x,y)$ となるものをとる。
$x\notin K$ なら、どの $s$ でも $T(x,x,s)$ でないので $\varphi_{t(x)}=f\in\mathcal{C}$ である。$x\in K$ なら $T(x,x,s_0)$ となる最小の $s_0$ があり、$\varphi_{t(x)}$ は $f$ を $\{y\mid y< s_0\}$ に制限した有限関数で、仮定から $\mathcal{C}$ に属さない。よって $x\notin K\iff t(x)\in I_{\mathcal{C}}$ である。
⇐. 有限関数 $\theta\in\mathcal{C}$ と部分計算可能関数 $f\notin\mathcal{C}$ で $\theta\subset f$ となるものがあるとする。$\theta$ の定義域を $D$(有限集合)とする。2 変数の部分計算可能関数 $(x,y)\mapsto\theta(y)$ と $k(x,y):\simeq\pi\bigl(f(y),\ \varphi_x(x)\bigr)$ の番号をそれぞれ $c_1,c_2$ とし((N1))、
$$
j(y):=\begin{cases}c_1&(y\in D),\\ c_2&(y\notin D),\end{cases}\qquad h(x,y):\simeq\varphi^{(2)}_{j(y)}(x,y)
$$
とおく。$D$ は有限なので $j$ は計算可能であり、$h$ は (N2) の関数と $j$ の合成なので部分計算可能である。$y\in D$ なら $h(x,y)=\theta(y)$、$y\notin D$ なら $h(x,y)\simeq k(x,y)$ である。(N4) により計算可能関数 $t$ で $\varphi_{t(x)}(y)\simeq h(x,y)$ となるものをとる。
$x\in K$ なら、$y\in D$ では $h(x,y)=\theta(y)=f(y)$、$y\notin D$ では $h(x,y)\simeq f(y)$ なので $\varphi_{t(x)}=f\notin\mathcal{C}$ である。$x\notin K$ なら、$y\notin D$ で $h(x,y)$ は定義されないので $\varphi_{t(x)}=\theta\in\mathcal{C}$ である。よって $x\notin K\iff t(x)\in I_{\mathcal{C}}$ である。$\square$
⇒ の還元 $t(x)$ は「入力 $y$ を、自己停止の計算を見張る時間とみなし、$y$ 段までに停止していなければ $f(y)$ を計算する」プログラムの番号である。自己停止が見つかった時点で、それ以降の入力は永久に止まらず、関数は有限の切れ端になる。
次の集合はどれも半決定可能でない。
どれも thm-rice-shapiro の条件が破れることを見ればよい。
$\mathrm{Tot}$ も補集合も半決定可能でないことは、計算可能性理論 の定理「全域性の集合とその補集合はどちらも半決定可能でない」でも還元を直接組み立てて示されている。
Rice–Shapiro の定理の条件は、半決定可能であるための必要条件であって十分条件ではない。
$\theta_n:=\{(n,0)\}$($n$ でだけ定義されて値 $0$ をとる関数)とし、$\mathcal{C}:=\{f\mid n\notin K\text{ かつ }f(n)=0\text{ となる }n\text{ がある}\}$ とおく。$f\in\mathcal{C}$ なら $\theta_n\subset f$ かつ $\theta_n\in\mathcal{C}$ となる $n$ があり、逆に有限関数 $\theta\in\mathcal{C}$ が $\theta\subset f$ なら $f\in\mathcal{C}$ なので、$\mathcal{C}$ は thm-rice-shapiro の同値を満たす。しかし $I_{\mathcal{C}}$ は半決定可能でない。
$g(n,y):\simeq\mu z\,[\,(y\mathbin{\dot-}n)+(n\mathbin{\dot-}y)=0\,]$ は、$y=n$ なら $0$、$y\neq n$ なら定義されない(μ の条件が $z$ によらず偽)ので、$g(n,\cdot)=\theta_n$ である。(N4) により計算可能関数 $u$ で $\varphi_{u(n)}=\theta_n$ となるものがある。$\theta_n\in\mathcal{C}$ は $n\notin K$ と同値なので、$n\notin K\iff u(n)\in I_{\mathcal{C}}$、すなわち $\mathbb{N}\setminus K\le_{\mathrm m}I_{\mathcal{C}}$ である。$I_{\mathcal{C}}$ が半決定可能なら $\mathbb{N}\setminus K$ も半決定可能になり矛盾する。
Rice の定理は、プログラムが自分の番号を参照できることを述べる Kleeneの再帰定理 からも導ける。使うのはその不動点の形「任意の計算可能関数 $f\colon\mathbb{N}\to\mathbb{N}$ に対し、$\varphi_e=\varphi_{f(e)}$ となる番号 $e$ がある」である。
$I_{\mathcal{C}}$ が決定可能で、$a\in I_{\mathcal{C}}$ と $b\notin I_{\mathcal{C}}$ があるとする。
$f(x):=b$($x\in I_{\mathcal{C}}$)、$f(x):=a$($x\notin I_{\mathcal{C}}$)とおくと、$I_{\mathcal{C}}$ が決定可能なので $f$ は計算可能である。不動点 $e$ をとる。$e\in I_{\mathcal{C}}$ なら $\varphi_e=\varphi_{f(e)}=\varphi_b$ であり、$I_{\mathcal{C}}$ は指数集合なので $b\in I_{\mathcal{C}}$ となって矛盾する。$e\notin I_{\mathcal{C}}$ なら $\varphi_e=\varphi_a$ なので $e\in I_{\mathcal{C}}$ となり、やはり矛盾する。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 指数集合である(thm-rice-main) | $\{e\mid e\le10\}$ | 決定可能でないこと |
| $\mathcal{C}$ が空でも全体でもない(thm-rice-main) | $\mathcal{C}$ を部分計算可能関数の全体とし、$I_{\mathcal{C}}=\mathbb{N}$ | 決定可能でないこと |
| 番号付けがすべての部分計算可能関数を並べる((N1)) | 原始再帰関数を組み立てる式の番号付けと、性質「$f(0)=0$」 | 自明でない性質の番号の集合が決定可能でないこと |
| $\emptyset\notin\mathcal{C}$(lem-rice-reduction) | $\mathcal{C}=\{\emptyset\}$ | $K\le_{\mathrm m}I_{\mathcal{C}}$ |
| $I_{\mathcal{C}}$ が半決定可能(thm-rice-shapiro) | $\mathcal{C}$ を全域的な部分計算可能関数の全体とする | ⇒ の向き($\mathcal{C}$ の元が $\mathcal{C}$ に属する有限部分関数をもつこと) |
1・2 行目は集合が決定可能であることを、3〜5 行目は結論が成り立たないことを確かめる。
1 行目:特性関数は原始再帰関数なので決定可能である。ex-rice-index-sets の 2 のとおり指数集合でない。番号の大きさは番号の書き方の性質であって、関数の性質ではない。
2 行目:$I_{\mathcal{C}}=\mathbb{N}$ の特性関数は定数 $1$ である。$\mathcal{C}$ が空なら $I_{\mathcal{C}}=\emptyset$ で同様である。
3 行目:原始再帰関数を組み立てる式に番号を付け、番号 $t$ の式が表す 1 変数関数を $f_t$ とする(式を表さない番号には定数 $0$ を当てる)。$(t,y)\mapsto f_t(y)$ は計算可能である。式の番号 $t$ と引数の列の符号 $w$ に式の値(式を表さないときや引数の個数が合わないときは $0$)を対応させる関数は、式の最後の構成(定数 $0$・後者・射影・合成・原始再帰)による場合分けで、部分式の値と、原始再帰では再帰の変数を 1 つ減らした値を自分の番号で呼び出す部分計算可能関数を Kleeneの再帰定理 で作ればよく(場合分けは同記事の例「階乗を自己参照で定義する」と同じく番号の選択で処理する)、式の構成と再帰の変数についての帰納法で、すべての式と引数で定義されて式の値に等しいことが分かる(番号付けの作り方は OLT26 §29.14、pp. 440–441)。この番号付けでは、評価 $(t,y)\mapsto f_t(y)$ が計算可能で((N2) にあたる)、原始再帰関数 $g(a,y)$ の式の $a$ に定数の式を代入すれば $y\mapsto g(a,y)$ の番号が $a$ から計算できる((N4) にあたる)が、並ぶのは全域的な原始再帰関数だけで、(N1) が成り立たない。性質「$f(0)=0$」をもつ番号の集合 $\{t\mid f_t(0)=0\}$ は、$f_t(0)$ を計算して比べればよいので決定可能であり、定数 $0$ と定数 $1$ の関数がともに並ぶので $\emptyset$ でも全体でもない。
4 行目:$K\le_{\mathrm m}I_{\{\emptyset\}}=\{e\mid W_e=\emptyset\}$ なら、補集合をとって $\mathbb{N}\setminus K\le_{\mathrm m}\{e\mid W_e\neq\emptyset\}$ であり、右辺は半決定可能(ex-rice-applications の後の段落)なので $\mathbb{N}\setminus K$ も半決定可能になって矛盾する。
5 行目:恒等的に $0$ の関数は $\mathcal{C}$ に属するが、その有限部分関数は全域的でないので $\mathcal{C}$ に属さない。thm-rice-shapiro の対偶により $I_{\mathcal{C}}=\mathrm{Tot}$ は半決定可能でない(cor-rice-shapiro-examples)。
3 行目の番号付けでも、振る舞いについての問いがすべて判定できるわけではない。たとえば「$f_t$ は恒等的に $0$ か」はこの番号付けでも決定可能でない。原始再帰的な関数 $(x,y)\mapsto$($T(x,x,s)$ となる $s\le y$ があれば $1$、なければ $0$)を表す式の $x$ に定数 $x$ の式を代入した式の番号 $c(x)$ は $x$ から計算でき、$f_{c(x)}$ が恒等的に $0$ であることは $x\notin K$ と同値だからである。Rice の定理は、すべての部分計算可能関数を並べ、しかも万能関数と s-m-n 定理が使える番号付けで、振る舞いについての問いが一律に判定できないことを述べている。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する