Dmytro氏のAn Ordinal Notationで表される順序数の収束列と、収束列を求めるために必要な性質をまとめます。 詳細を知りたい人は、Dmytro氏のページを参照してください。 http://web.mit.edu/dmytro/www/other/OrdinalNotation.htm 1. standard representationへの書き換え 0は、standard representationである。 C(a,b,c)がstandard representationであるのは、 ・a,b,cがstandard representationである ・cが最小である ・bが最大である の全てを満たすときである。 C(a,b,c)をstandard representationに書き換える手順は、以下の通りである。 a,b,cをstandard representationに書き換える。 c=0のとき、cは最小である。 c=C(d,e,f)のとき、  a<dまたは「a=dかつb≦e」ならば、cは最小である。  a>dまたは「a=dかつb>e」ならば、C(a,b,c)をC(a,b,f)に書き換えてfの最小化をする。 bが最大であるか判定するのに用いる関数stdcheck(d,a,b,c)を、以下のように定義する。 stdcheck(0,a,b,c)=1 C(d,e,f)<C(a,b,c)のとき、  stdcheck(C(d,e,f),a,b,c)=1 C(d,e,f)≧C(a,b,c)かつC(d,e,f)≦bのとき、  stdcheck(C(d,e,f),a,b,c)=stdcheck(d,a,b,c)*stdcheck(e,a,b,c)*stdcheck(f,a,b,c) C(d,e,f)≧C(a,b,c)かつC(d,e,f)>bのとき、  stdcheck(C(d,e,f),a,b,c)=0 stdcheck(b,a,b,c)=1のときbは最大であり、stdcheck(b,a,b,c)=0のときbは最大でない。 bが最大になるように書き換えるのに用いる関数std(d,a,b,c)を、以下のように定義する。 std(0,a,b,c)=0 C(d,e,f)<C(a,b,c)のとき、  std(C(d,e,f),a,b,c)=C(d,e,f) C(d,e,f)≧C(a,b,c)かつC(d,e,f)≦bかつ、  stdcheck(f,a,b,c)=0のとき、   std(C(d,e,f),a,b,c)=std(f,a,b,c)  stdcheck(f,a,b,c)=1かつstdcheck(d,a,b,c)=0のとき、   std(C(d,e,f),a,b,c)=C(std(d,a,b,c),0,f)  stdcheck(f,a,b,c)=stdcheck(d,a,b,c)=1かつstdcheck(e,a,b,c)=0かつ、   e≦bのとき、    std(C(d,e,f),a,b,c)=C(d,std(e,a,b,c),f)   e>bのとき、    std(C(d,e,f),a,b,c)=C(d+1,0,f)  stdcheck(f,a,b,c)=stdcheck(d,a,b,c)=stdcheck(e,a,b,c)=1のとき、   std(C(d,e,f),a,b,c)=C(d,e,f) bが最大になるまで、bをstd(b,a,b,c)に書き換えてbの最大化を繰り返す。 2. 大小比較 C(a,b,c)がstandard representationかどうかにかかわらず、 0<C(a,b,c) C(a,b,c)のbが最大のとき、C(a,b,c), C(d,e,f)がstandard representationかどうかにかかわらず、 C(a,b,c)<C(d,e,f)となるのは、  C(a,b,c)≦fまたは「c<C(d,e,f)かつ『a<dまたは「a=dかつb<e」』」 のときである。 2つの順序数のstandard representationが一致するときのみ、両者は等しい。 3. 収束列 以下では、aは後続順序数、bは収束列のある極限順序数、 cは収束列のない極限順序数、d, e, xは任意の順序数とする。 また、すべての順序数はstandard representationであるとする。 C(0,0,d)=d+1は後続順序数である。 C(b,0,d), C(d,a,e), C(d,b,e)は収束列のある極限順序数である。 C(a,0,d), C(c,0,d)は収束列のない極限順序数である。 C(subst_arg1(c),0,subst_arg3(c))>C(d,c,e)のとき、C(d,c,e)は収束列のある極限順序数である。 C(subst_arg1(c),0,subst_arg3(c))<C(d,c,e)のとき、C(d,c,e)は収束列のない極限順序数である。 前者関数pred(a)は後続順序数aについて定義され、 pred(C(0,0,d))=d 収束列b_nは収束列のある極限順序数b、自然数nについて定義され、 {C(b,0,d)}_n=C(b_n,0,d) {C(d,a,e)}_0=e {C(d,a,e)}_{n+1}=C(d,pred(a),{C(d,a,e)}_n) {C(d,b,e)}_n=C(d,b_n,e) C(subst_arg1(c),0,subst_arg3(c))>C(d,c,e)かつ、  C(d,c,e)≧C(pred(subst_arg1(c)),c,subst_arg3(c))のとき、   {C(d,c,e)}'_0=0   {C(d,c,e)}'_{n+1}=subst(c,C(d,{C(d,c,e)}'_n,e))   {C(d,c,e)}_n=c(d,{C(d,c,e)}'_n,e)  C(d,c,e)<C(pred(subst_arg1(c)),c,subst_arg3(c))のとき、   {C(d,c,e)}'_0=0   {C(d,c,e)}'_{n+1}=subst(c,C(pred(subst_arg1(c)),{C(d,c,e)}'_n,subst_arg3(c)))   {C(d,c,e)}_n=c(d,{C(d,c,e)}'_n,e) subst(c,x)は収束列のない極限順序数c、任意の順序数xについて定義され、 subst(C(a,0,d),x)=x subst(C(c,0,d),x)=C(subst(c,x),0,d) C(subst_arg1(c),0,subst_arg3(c))<C(d,c,e)のとき、 subst(C(d,c,e),x)=C(d,subst(c,x),e) 置き換える対象の第一引数を表すsubst_arg1(c)は収束列のない極限順序数cについて定義され、 subst_arg1(C(a,0,d))=a subst_arg1(C(c,0,d))=subst_arg1(c) C(subst_arg1(c),0,subst_arg3(c))<C(d,c,e)のとき、 subst_arg1(C(d,c,e))=subst_arg1(c) 置き換える対象の第三引数を表すsubst_arg3(c)は収束列のない極限順序数cについて定義され、 subst_arg3(C(a,0,d))=d subst_arg3(C(c,0,d))=subst_arg3(c) C(subst_arg1(c),0,subst_arg3(c))<C(d,c,e)のとき、 subst_arg3(C(d,c,e))=subst_arg3(c) 4. 巨大関数を作るための定義 aは後続順序数、bは収束列のある極限順序数とする。 H[0](n)=n H[a](n)=H[pred(a)](n+1) H[n](n)=H[b_n](n) X_0=0 X_{n+1}=C(X_n,0,0) として、H[C(0,X,0)](n)を考えると、nについて急激に増加する関数になる。