Dmytro氏のA Stronger Ordinal Notationで表される順序数の収束列と、収束列を求めるために必要な性質をまとめます。 詳細を知りたい人は、Dmytro氏のページを参照してください。 http://web.mit.edu/dmytro/www/other/OrdinalNotation.htm 1. standard representationへの書き換え 0, Ωは、standard representationである。 C(a,b)がstandard representationであるのは、 ・a,bがstandard representationである ・bが最小である ・aが最大である の全てを満たすときである。 C(a,b)をstandard representationに書き換える手順は、以下の通りである。 a,bをstandard representationに書き換える。 b=0のとき、bは最小である。 b=C(c,d)のとき、  a≦cならば、bは最小である。  a>cならば、C(a,b)をC(a,d)に書き換えてdの最小化をする。 b≧Ωのとき、aは最大である。 aが最大であるか判定するのに用いる関数stdcheck1(c,a,b)を、以下のように定義する。 stdcheck1(0,a,b)=1 stdcheck1(Ω,a,b)=1 C(c,d)<Ωのとき、  stdcheck1(C(c,d),a,b)=stdcheck2(C(c,d),a,b,C(c,d)) C(c,d)>Ωのとき、  stdcheck1(C(c,d),a,b)=stdcheck1(c,a,b)*stdcheck1(d,a,b) aが最大であるか判定するのに用いる関数stdcheck2(d,a,b,c)を、以下のように定義する。 stdcheck2(0,a,b,c)=1 stdcheck2(Ω,a,b,c)=1 C(d,e)<C(a,b)のとき、  stdcheck2(C(d,e),a,b,c)=1 「C(d,e)≧C(a,b)かつC(d,e)≦c」またはC(d,e)>Ωのとき、  stdcheck2(C(d,e),a,b,c)=stdcheck2(d,a,b,c)*stdcheck2(e,a,b,c) C(d,e)≧C(a,b)かつC(d,e)>cかつC(d,e)<Ωのとき、  stdcheck2(C(d,e),a,b,c)=0 b<Ωかつstdcheck1(a,a,b)=1のときaは最大であり、b<Ωかつstdcheck1(a,a,b)=0のときaは最大でない。 aが最大になるように書き換えるのに用いる関数std1(c,a,b)を、以下のように定義する。 std1(0,a,b)=0 std1(Ω,a,b)=Ω C(c,d)<Ωのとき、  std1(C(c,d),a,b)=std2(C(c,d),a,b,C(c,d)) C(c,d)>Ωかつ、  stdcheck1(d,a,b)=0のとき、   std1(C(c,d),a,b)=std1(d,a,b)  stdcheck1(d,a,b)=1かつstdcheck1(c,a,b)=0のとき、   std1(C(c,d),a,b)=C(std1(c,a,b),d)  stdcheck1(d,a,b)=stdcheck1(c,a,b)=1のとき、   std1(C(c,d),a,b)=C(c,d) aが最大になるように書き換えるのに用いる関数std2(d,a,b,c)を、以下のように定義する。 std2(0,a,b,c)=0 std2(Ω,a,b,c)=Ω C(d,e)<C(a,b)のとき、  std2(C(d,e),a,b,c)=C(d,e) 「C(d,e)≧C(a,b)かつC(d,e)≦c」またはC(d,e)>Ωかつ、  stdcheck2(e,a,b,c)=0のとき、   std2(C(d,e),a,b,c)=std2(e,a,b,c)  stdcheck2(e,a,b,c)=1かつstdcheck2(d,a,b,c)=0のとき、   std2(C(d,e),a,b,c)=C(std2(d,a,b,c),e)  stdcheck2(e,a,b,c)=stdcheck2(d,a,b,c)=1のとき、   std2(C(d,e),a,b,c)=C(d,e) C(d,e)≧C(a,b)かつC(d,e)>cかつC(d,e)<Ωのとき、  std2(C(d,e),a,b,c)=Ω aが最大になるまで、aをstd1(a,a,b)に書き換えてaの最大化を繰り返す。 2. 大小比較 0<Ω C(a,b)がstandard representationかどうかにかかわらず、 0<C(a,b) b<ΩのときC(a,b)<Ω b≧ΩのときC(a,b)>Ω C(a,b)のaが最大のとき、C(a,b), C(c,d)がstandard representationかどうかにかかわらず、 C(a,b)<C(c,d)となるのは、  C(a,b)≦dまたは「b<C(c,d)かつa<c」 のときである。 2つの順序数のstandard representationが一致するときのみ、両者は等しい。 3. 収束列 以下では、aは後続順序数、bは収束列のある極限順序数、 cは収束列のない極限順序数、d, xは任意の順序数とする。 また、すべての順序数はstandard representationであるとする。 C(0,d)=d+1は後続順序数である。 C(a,d), C(b,d)は収束列のある極限順序数である。 Ωは収束列のない極限順序数である。 (d≧Ωのとき、C(c,d)は収束列のない極限順序数である。) (d<Ωかつ)subst_arg2(C(c,d))>C(c,d)のとき、C(c,d)は収束列のある極限順序数である。 (d<Ωかつ)subst_arg2(C(c,d))≦C(c,d)のとき、C(c,d)は収束列のない極限順序数である。 前者関数pred(a)は後続順序数aについて定義され、 pred(C(0,d))=d 収束列b_nは収束列のある極限順序数b、自然数nについて定義され、 {C(a,d)}_0=d {C(a,d)}_{n+1}=C(pred(a),{C(a,d)}_n) {C(b,d)}_n=C(b_n,d) (d<Ωかつ)subst_arg2(C(c,d))>C(c,d)かつ、  C(c,d)≧subst3(subst_arg2(C(c,d)),subst_arg1(c))のとき、   {C(c,d)}'_0=0   {C(c,d)}'_{n+1}=subst2(subst_arg1(c),C(subst1(c,{C(c,d)}'_n),d))   {C(c,d)}_n=C(subst1(c,{C(c,d)}'_n),d)  C(c,d)<subst3(subst_arg2(C(c,d)),subst_arg1(c))のとき、   {C(c,d)}'_0=0   {C(c,d)}'_{n+1}=subst2(subst_arg1(c),subst3(subst_arg2(C(c,d)),{C(c,d)}'_n))   {C(c,d)}_n=C(subst1(c,{C(c,d)}'_n),d) subst1(c,x)は収束列のない極限順序数c、任意の順序数xについて定義され、 subst1(Ω,x)=x C(c,d)<Ωのとき、 subst1(C(c,d),x)=x C(c,d)>Ωのとき、 subst1(C(c,d),x)=C(subst1(c,x),d) subst2(C(c,d),x)は収束列のない極限順序数c、任意の順序数d, xについて定義され、 subst_arg1(c)=Ωのとき、 subst2(C(c,d),x)=x subst_arg1(c)<Ωのとき、 subst2(C(c,d),x)=C(subst1(c,subst2(subst_arg1(c),x)),d) subst3(C(c,d),x)は収束列のない極限順序数c、任意の順序数d, xについて定義され、 subst3(C(c,d),x)=C(subst1(c,x),d) subst_arg1(c)は収束列のない極限順序数cについて定義され、 subst_arg1(Ω)=Ω C(c,d)<Ωのとき、 subst_arg1(C(c,d))=C(c,d) C(c,d)>Ωのとき、 subst_arg1(C(c,d))=subst_arg1(c) subst_arg2(C(c,d))は収束列のない極限順序数c、任意の順序数dについて定義され、 subst_arg1(c)=Ωのとき、 subst_arg2(C(c,d))=C(c,d) subst_arg1(c)<Ωのとき、 subst_arg2(C(c,d))=subst_arg2(subst_arg1(c)) ※substについての補足 収束列のない極限順序数は、n≧0, d_i<Ω, c_i(x)を関数として、  c_0(C(c_1(C(c_2(…C(c_{n-1}(C(c_n(Ω),d_n)),d_{n-1})…),d_2)),d_1)) の形をしている。  subst1(c_i,x)=c_i(x)  subst2(C(c_i,d_i),x)=C(c_i(…C(c_{n-1}(x),d_{n-1})…),d_i)  subst3(C(c_n,d_n),x)=C(c_n(x),d_n)  subst_arg1(c_i(x))=x  subst_arg2(C(c_i,d_i))=C(c_n,d_n) (subst_arg3(C(c_n(Ω),d_n))=Ω) 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,Ω) として、H[C(X,0)](n)を考えると、nについて急激に増加する関数になる。