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について急激に増加する関数になる。