グッドスタインの定理
グッドスタインの定理（グッドスタインのていり、Goodstein's theorem）は、数理論理学における自然数に関する命題であり、「全てのグッドスタイン数列は必ず0で終わる」という主張。ペアノ算術の範囲では証明も否定の証明もできないが、集合論の公理系、特に無限集合の公理を用いると真であることが言える。たとえばゲーデルの不完全性定理から導かれる決定不能な命題などは、いかにも不自然だったり人工的に見えたりする場合があるのに対し、この定理は「自然な」決定不能命題の例として知られる。
グッドスタイン数列を定義するに当たり、まず「nを底とした遺伝的記法」を定義する。ある自然数をｎを底とした遺伝的記法で表すためには、まずその数をformula_1（ただし、formula_2は0とn-1の間の値をとる整数）という形に書き換える。次に、ここに現れる各項を独立したnの積で表す。たとえばformula_3 は formula_4という形になる。そのあと今度は全ての指数kをnを底とした遺伝的記法に書き換える。以下、再帰的に繰り返して、記述中に現れる全ての数字がnか0になるまで続ける。つまり指数でない全ての数字はnとなり、全ての指数（とその指数）はnまたは0になる（formula_5である点に注意）。
例えば、35は2を底として普通に書くとformula_6となるが、遺伝的記法で書くと
数字mのグッドスタイン数列をG(m)と書き、次のように定義する。数列の初項はmとする。次項を得るには、mを2を底とした遺伝的記法で書いてから、現れる「2」を全て3に置換し、結果から1を引く。これがG(m)の第2項である。G(m)の第3項を得るには、一つ前の項（の3を底とした遺伝的記法）の「3」を全て4に置換し、結果からまた1を引く。以下、同様に繰り返し、結果が0になった時が数列の終わりである。
初めのほうのグッドスタイン数列はすぐに終結する。G(3)の様子を見てみよう。
この後の多くのグッドスタイン数列は非常に長い間に渡って増大し続ける。例えば、G(4)は次のように始まる。
G(4)の項はしばらく増大し続けるが、底が3 · 2となったところで最大値3 · 2 − 1に達し、そのまま3 · 2項の間同じ値を取り続けてから、最初で最後の下降を始める。
値が0となるのは底が3 · 2 − 1の時である。しかしながら、G(4)はグッドスタイン数列が「いかに」急速に増大し得るかについて、良い例とは言えない。G(19)ははるかに急速に増大する。立ち上がりを見てみよう。
これだけ急速に増大するにもかかわらず、グッドスタインの定理は、初項mが何であろうとグッドスタイン数列は必ず0で終わると主張する。
グッドスタインの定理は（ペアノ算術を逸脱する技法を用いて）以下のようにして証明できる。まず、与えられたグッドスタイン数列G(m)について、これと並行する順序数の数列を作る。この並行する数列の各項は、元のグッドスタイン数列に含まれる各項よりも小さくはないこととする。もしこの並行数列の項が0に収束するならば、グッドスタイン数列も同じく0に収束しなければならない。
並行数列を作るには、グッドスタイン数列の第(n − 1)番目の項のnを底とした遺伝的記法をもとに、そこに現れる全てのnを最初の超限順序数であるωで置換する。順序数は加算、乗算、冪乗についてWell-definedであり、かつ、結果として得られる順序数は元の項より小さくないことが明らかである。
グッドスタイン数列における「底の変更」操作は、並行数列の項には影響しない。つまり、formula_7に現れる全ての「4」をωで置換する代わりに、全ての「4」を「5」で置換した後に改めてωで置換しても結果は同じである。ところが「1を引く」操作のほうは、並行数列の超限順序数を減算することに対応する。今の例では、この操作を施すとformula_8はformula_9に減算される。順序数は整列順序 (well-order) なので、無限に減り続けるような順序数の数列は存在しない。従って並行数列は有限個の項の後で必ず0で終わらなければならない。グッドスタイン数列も、並行数列によって頭を押えられているので、同じく0で終わることになる。
グッドスタインの定理に関するこの証明はかなり易しいが、一方この定理がペアノ算術には含まれないと述べる「Kirby-Parisの定理」はテクニカルではるかに難しい。その中ではペアノ算術の可算で非標準的なモデルが利用される。そこでKirbyはグッドスタインの定理からゲンツェンの定理()が導かれることを示した。つまり、グッドスタインの定理はεまでの帰納法の代わりとなるのである。
グッドスタインの定理を応用すると、全体関数であって、かつ全体関数であることがペアノ算術では証明できないような計算可能関数を構成できる。ある数のグッドスタイン数列はチューリングマシンによって算出できる。したがって、nを「nのグッドスタイン数列が停止するまでに要する項の数」に対応づけるような関数も、何らかのチューリングマシンによって計算できる。この計算機は単にnのグッドスタイン数列を算出し、もし数列が「0」に収束したならば、その数列の長さを返すだけである。全てのグッドスタイン数列は最終的には収束するので、この関数は全体関数である。ところがペアノ算術からは全てのグッドスタイン数列が収束することは証明できないので、ペアノ算術はこのチューリングマシンが計算しているのが全体関数であることを証明できない。グッドスタインの定理がペアノ算術からは導けないことの証明について
プログラミング言語RubyとHaskellによるグッドスタイン数列の定義と、大規模な計算例