■
[集合論]InductionとRecursion
タイトルは和訳では、『帰納と再帰』となるだろうか。最近読んでいたどれかの本で(Jech本ではなかった気がする)数学書でもこの2つの用語がごっちゃになってることがあるとの指摘があった。前回の私の記事でも、『関数を帰納的に定義する』というようなことをいっちゃってたような気がするが、正しくは『関数を再帰的に定義する』である。ややこしいのは『帰納的定義』というのもあって、単純なオブジェクトから複雑なオブジェクト作る手順が② オブジェクトとオブジェクトを一定の手順で組み合わせるとオブジェクトができる。
③ オブジェクトはすべてこれらの操作のみで作られる。
帰納法:
オブジェクトのある性質について、
② 性質を持つオブジェクトを一定の手順で組み合わせると性質を持つオブジェクトができる。
といった形の論法が帰納法である。次に見る順序数のように帰納法は成り立つが、オブジェクトが必ずしも帰納的に定義されているわけではない場合がある。
定理(超限帰納法 Transfinite Induction; たとえば Jech本p.21のTheorem 2.14)
を順序数のクラスとする。が次の3つの条件を満たすと、それは順序数全体と一致する。
(ii)
(iii) がでない極限順序数であるとき、
ちなみにこの手順を逆にして、順序数を帰納的に定義したようなテキストは見たことない。順序数の定義としては、推移的かつに関する整列集合という定義以外は知らない(このフォン・ノイマン流定義を最初見たときは、なんじゃこれはと思ったが、今となっては良くできた定義であると思う。フォン・ノイマンすげえ)。手順が逆にできない理由は、(iii)で極限順序数なるものの存在が先にある点で、を知っているとしても、この右辺の和集合の条件にが出てきてしまっている。ここを仮に『これまでの過程で作ったすべての順序数』としてみても、『これまでの過程で作ったすべての順序数』の集まりが集合になっている保証がなければその和も集合になっている保証はない。恐らくそれをいちいち確かめなければならない点で帰納的定義が躓くのだろうと思う。
ところで、上の定理の証明はJech本ではまさかの一行証明である。
<証明> そうでなければ、をなる最小の順序数として、(i),(ii),(iii)を適用せよ。
まあ、無論、Jech本では証明の前に準備はあるのだが、はかとなるがあるか、極限順序数なので(i),(ii),(iii)を適用するととなって矛盾するという論法である。任意の順序数のクラスに最小元があるというのがミソで、実際 となっていて、それはいつでも集合(かつ順序数)であるということが事前に証明されているので抜かりはない。
さて、前回に関数の再帰的定義は集合論としても正しいという一例を証明してみたが、実は今回の記事はその続きでもある。底本はJech本だが、テキストではTransfinite Recursion の証明は 1/3ページぐらいしか証明がなく、ギャップを埋めてみようという魂胆である。それに Transfinite Recursion の定式の意味の理解にかなり苦しんだのでそのノートという意図もある。
さて、記号の準備から始める。集合に値を取る上の関数クラスを考えたいので、それを
と書こう。これを列(sequence)と呼ぶ。無論これの実体は というペアのクラスだが、がもともと集合でないので、これも真のクラスである。ただ、ある順序数でちょんぎった
なるものは集合になっていて、これを -列と呼ぼう。-列が集合になるのは、は集合なので、置換公理からその像 も集合で、
から分出公理により集合となる。ただし、『集合に値を取る』というのが特定の集合内に値を取るということではなくて、集合全部を動く可能性も含むので を固定したとしても、-列の全体は真のクラスとなってしまう。ちょっと風呂敷広げすぎとは思う。さて、ここでを、がすべてのを動くときの全ての-列のクラス上で定義された、集合に値を取る任意の関数クラスとしよう(さらに風呂敷が広がったわけである)。
定理 (超限再帰法 Transfinite Recursion)
(先に述べたような)任意のに対して、上の関数クラス で、任意の順序数 に対して、
が成立するものが唯一存在する。
(は列であり、は列をでちょん切った -列を指す記号である。)
風呂敷を広げまくった割にはこじんまりとした定理であるが、これのどこがRecursionなのか最初はピンとはこなかった。しかし、ちょっと最初の方を具体的に計算してみるとその意味がわかってくる。として、という列としての表記も併用しよう。
・まず、からスタートである。がなんであれ なので、結局 である。
・のとき、もうは決まってしまっているので、。
・のとき、もうは決まってしまっていて、。
とまあ、以下がで決まってしまうのが見て取れるだろう。しかもすべての-列の上での関数クラスとしているため、引数の数でと分けて書けば、 といったようにその時点より前に計算したすべての値をパラメータに使う最も一般的な再帰的定義を表現していることがわかるだろう(しかもそのTransfinite版である)。
<証明>
任意の順序数 に対して、を定義したい。なるすべての順序数 に対して、が定義されていて、が成立しているとしよう。このとき、と定義すればよいだろう。しかし、この定義のありようはTransfinite Recursionそのものなので、これを素直に認めてしまったら証明にならない。アヤシイのは『が定義されていて』の部分である。Jech本の証明ではこれをごとにつどつど、つぎの条件を満たす-列の存在に置き換える。
この条件を満たす-列が唯一存在する(証明はのちほど)が、このとき、と定義するのである。この構成だとが論理式で閉じた形で表現できるため、は関数クラスとなる。また、に対して、-列 が、を満たすつまり、先の条件を満たす-列になっていることが証明できるので、が定理の条件を満たしていることがわかる。
(ii) のとき、とは、かなので、の時は条件は仮定から成立しており、とすればでも条件が成立するので、 。
(iii)がでない極限順序数のとき、に対して としよう。各々のに対する条件は となる。右辺の数列はごとに違ってもいいのだが、実際は定義されているところではすべて一致している(これも超限帰納法による)。そこで と書いて、を作ると は-列を定義することがわかる(Jech本では、この和を作るときのインデックスが順序数なので、和は集合になるとの注意がある)。しかも、 に対して、 なので(∵ が極限順序数だったから)、に対する超限帰納法の仮定から、が成立しているが、右辺のの中は に等しいので、条件が成立している。よって
前回の記事で気にしていたのは、再帰的に定義された関数は本当に(集合としての)関数か?という点にあったのだが、今回の超限再帰法の定理では、上の関数クラスの存在しか主張してない点で、もう一押しが必要である。とはいえ、までの話を考えればいいだろう。が、-列上にしか定義されていないとき、に等しいか大きい順序数に対する-列には、 と拡張しておけば、今回の超限再帰法の定理が使えて、それに対応する関数クラスが存在する。そこで が関数か?が問題となるが、これは置換公理からほぼ自明となっている...のでまあ、が関数クラスとして定義されうるという点が本質ということなのだろうが、なんか肩透かし感はある。
(蛇足編)
本記事を書くにあたって、何か証明のヒントは無いかとKunen本(集合論 独立性証明への案内 日本評論社)も調べてみたところ、Jech本の証明と同じ筋でした。こっちのがもう少し筋を明確に書いてますね。Kunen本の原著の初版が1983年なのでこっちのが断然前ですな。しかし、そこの続きにも超限帰納法を使えとだけ...