関数と集合の再帰性についてのメモ
参考文献
Prop 1.
remark
Lem 1
proof:
1. $ Aの特性関数$ \chi_Aとすると$ \chi_{\N^n \setminus A}(\vec{x}) \coloneqq 1 \ominus \chi_{A}(\vec{x})
proof:
1. $ \chi_{A \cup B} \coloneqq \min (\chi_A(\vec{x}), \chi_B(\vec{x}))
2. $ \chi_{A \cap B} \coloneqq \max (\chi_A(\vec{x}), \chi_B(\vec{x}))
$ B \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \exists_{z<y}\lbrack (\vec{x},z) \in A \rbrack \}
$ C \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \forall_{z<y}\lbrack (\vec{x},z) \in A \rbrack \}
proof:
1. $ \chi_B(\vec{x},y) \coloneqq \mathrm{plus?}\left( \Sigma_{z<y}\lbrack\chi_A(\vec{x},z) \rbrack\right)
2. $ \chi_B(\vec{x},y) \coloneqq \mathrm{plus?}\left( \Pi_{z<y}\lbrack\chi_A(\vec{x},z) \rbrack\right)
Lem 2
$ Aが再帰的集合$ \iff$ A = \{ \vec{x} \in \N^n \mid f(\vec{x}) = 0 \}となる全域再帰関数$ fが存在する. proof:
$ \impliesの証明: $ f(\vec{x}) \coloneqq 1 \ominus \chi_A(\vec{x})とすれば要件を満たす.
$ \impliedbyの証明:
$ fを全域再帰関数とし,$ A \coloneqq \{ \vec{x} \in \N \mid f(\vec{x}) = 0\}とする.
$ \chi_A(\vec{x}) \coloneqq 1 \ominus \mathrm{plus?}(f(\vec{x}))であり,Lem1の注意より$ \chi_Aは再帰関数になる
$ A \sube \Nが可算$ \iff$ A = \mathrm{range}(f)となる部分関数$ f:\N\to\Nが存在する このとき$ A = \{ f(0),f(1),f(2),\dots \}でひたすら列挙し続ける
$ A \sube \Nが再帰的可算集合(r.e.)$ \iff$ A = \mathrm{range}(f)となる部分再帰関数$ f:\N\to\Nが存在する remark: $ A \neq \emptysetのとき,$ fは全域関数となる.Lem3. remark:一般の$ \N^nに対しては後で拡張される.
Lem 3
$ A \sube \Nで$ A \neq \emptysetのとき,
$ Aが再帰的可算集合$ \iff$ A = \mathrm{range}(f)となる全域再帰関数$ f:\N\to\Nが存在する proof:
$ \impliedbyは定義より自明.
Lem 4
$ A \sube \N
$ Aが再帰的可算集合$ \iff$ A = \{ x \in \N \mid g(x) = 0 \}となる再帰的関数$ g:\N\to\Nが存在する proof:
$ A \sube \N^nが再帰的可算集合$ \iff$ A = \{ \vec{x} \in \N^n \mid g(\vec{x}) = 0 \}となる再帰的関数$ g:\N^n\to\Nが存在する remark:
Lem4の$ \impliedbyを$ 1 \leq nに一般化したものと考えよ
Cor 1
proof:Lem2より.
remark:
逆は常には成り立たない.Cor2.
remark
$ A \sube \N^nについて.
定義より,$ Aが再帰的可算集合なら,$ A = \{ \vec{x} \in \N^n \mid f(\vec{x}) = 0 \}となる再帰関数$ fが存在する. Lem2より,$ Aが再帰的集合なら,$ A = \{ \vec{x} \in \N^n \mid f(\vec{x}) = 0 \}となる全域再帰関数$ fが存在する. ここから,集合の可算性は関数の全域性と対応していると言える.
Cor 2
Cor 1の逆は常には成り立たない.すなわち
proof 1:
proof 2:
remark
remark
Lem 5
$ B \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \exists_{z<y}\lbrack (\vec{x},z) \in A \rbrack \}
$ C \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \forall_{z<y}\lbrack (\vec{x},z) \in A \rbrack \}
proof: Lem1の証明をそのまま実行する.
Lem 6
$ A \sube \N^nについて
proof:
$ \implies
2. Lem1より$ \N \setminus Aは再帰的集合 $ \impliedby
1 .$ A, \N \setminus Aの両方が再帰的可算集合とする. 2. 定義より次の部分再帰関数$ f,gが存在する.
$ A = \{ \vec{x} \in \N^n \mid f(\vec{x}) = 0 \}となる$ f:\N\to\N
$ \N \setminus A = \{ \vec{x} \in \N^n \mid g(\vec{x}) = 0 \}となる$ g:\N\to\N
3. $ h:\N\to\Nを以下のように約束すると,$ hは全域再帰関数となる.
$ f,gを並列に計算し,
$ f(\vec{x}) = 0のとき$ h(\vec{x}) = 0
$ g(\vec{x}) = 0のとき$ h(\vec{x}) = 1
$ A \cup (\N^n \setminus A) = \N^nかつ$ A \cap (\N^n \setminus A) = \emptysetであることに注意すると定義より次のことが成り立つ.
$ f(\vec{x})が停止しない,または$ f(\vec{x}) \neq 0のとき,
$ \vec{x} \notin Aであり$ \vec{x} \in \N \setminus Aなので,
必ず$ g(\vec{x}) = 0
$ f(\vec{x}) = 0のとき,
$ \vec{x} \in Aであり$ \vec{x} \notin \N \setminus Aなので,
必ず$ g(\vec{x}) \neq 0
逆もまた然り.
すなわち,$ f,gは任意の$ \vec{x} \in \N^nに対し,どちらか一方だけが$ 0を出力する.
よって$ hは全域性がある.
$ hが再帰関数なのは$ f,gより自明.
4. $ A = \{ \vec{x} \in \N^n \mid h(\vec{x}) = 0 \}とすればLem2より$ Aは再帰的集合となる. Lem 7
proof:
2. $ Aが再帰的可算集合だとする.
3. 仮定より,$ \N \setminus Aも再帰的可算集合となる.
4. 2,3とLem6より,$ Aは再帰的集合となる.
5. 整理すると,$ Aが再帰的可算集合$ \implies$ Aが再帰的集合である
Lem 8
Lem 5の$ \existsの非有界版が再帰的可算集合版では成り立つ.すなわち $ A \sube \N^{n+1}が再帰的可算集合なら,$ B' \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \exists_{y}\lbrack (\vec{x},y) \in A \rbrack \}は再帰的可算集合. $ \existsから有界の制限$ z<yの制限が取り払われたことに注意.
proof:
1. 定義より$ A = \{ (\vec{x},y) \in \N^{n+1} \mid f(\vec{x},y) = 0 \}となる再帰的関数$ f:\N^{n+1}\to\Nが存在する
2. $ g:\N^n\to\Nを次のように約束する.
$ \vec{x} \in \Nとし,$ f(\vec{x},0),f(\vec{x},1),f(\vec{x},2),\dotsと計算していく.
何らかの$ yで$ f(\vec{x},y) = 0となったとき,$ g(\vec{x}) = 0とする.
そうでないとき,$ g(\vec{x})は未定義動作.
3. $ gは明らかに計算可能なので,Prop1より再帰的である.
4. $ B'の定義より$ B' \coloneqq \{ x \in \N^n \mid g(\vec{x}) = 0\}とすればよい.
remark
$ A \sube \N^{n+1}が再帰的可算集合であっても,$ C' \coloneqq \{ (\vec{x},y) \in \N^{n+1} \mid \forall_{y}\lbrack (\vec{x},y) \in A \rbrack \}が再帰的可算集合であるとは限らない. 証明で約束した$ gは
$ \exists_{y}\lbrack (\vec{x},y) \in A \rbrackが正しいとき,その事実を有限の時間で確かめることが出来ることを確認している.
大雑把には,正しいときそこで計算を打ち切ることが出来るので,$ gの計算はそのうち終わる.
他方,$ \forall_{y}\lbrack (\vec{x},y) \in A \rbrackは正しくとも,その事実は有限の時間で確かめることはできない.
$ (\vec{x},0),(\vec{x},1),(\vec{x},2) \in Aだったとしても$ (\vec{x},3) \in Aが正しい保証はどこにもない.
延々に繰り返す必要がある.計算を打ち切ることが出来ない.
Lem 9
$ f:\N^n\to\Nとし,関数のグラフ$ G_f \coloneqq \{ (\vec{x},f(\vec{x})) \mid \vec{x} \in \N^n \}とする. proof:
$ \implies
1. $ fが再帰関数とする.
2. $ g(\vec{x},y) \coloneqq 1 \ominus \mathrm{eq?}(f(\vec{x}),y)とする.
$ \mathrm{eq}?(x,y) = \begin{cases} 1 & (x = y) \\ 0 & (x \neq y) \end{cases}とする.原始再帰的関数である. すなわち$ gは$ \mathrm{neq}?(f(x),y) = \begin{cases} 1 & (f(\vec{x}) \neq y) \\ 0 & (f(\vec{x}) = y) \end{cases}に相当する.
3. $ G_f \coloneqq \{ (\vec{x},y) \mid g(\vec{x},y) = 0 \} とすれば要件を満たす.したがって$ G_fは再帰的可算集合. $ \impliedby
2. 定義より$ G_f = \{ (\vec{x},y) \in \N^n \mid g(\vec{x},y) = 0 \}となる再帰的関数$ g:\N^{n+1}\to\Nが存在する
3. $ f:\N^n\to\Nを次のように約束する.
$ g(\vec{x},0),g(\vec{x},1),g(\vec{x},2),\dotsを計算する.
最初に$ g(\vec{x},y) = 0となったとき,$ f(\vec{x}) = yとして計算を終了する.
4. $ fは明らかに計算可能なので,Prop1より再帰的関数. Lem 10
Lem9の$ fが全域的な関数である場合は$ G_fは再帰的集合となる.すなわち. $ f:\N^n\to\Nは全域的とし,関数のグラフ$ G_f \coloneqq \{ (\vec{x},f(\vec{x})) \mid \vec{x} \in \N^n \}とする. proof:
$ \implies
1. Lem9の$ \impliesにおいて$ gも全域的になる.
$ \impliedby
1. Cor1より$ G_fが再帰的集合$ \implies$ G_fが再帰的可算集合
2. Lem9より明らか.