チューリングマシンに番号付け
チューリングマシンは可算無限個あり、しかも洩れなく列挙することが可能なので、各チューリングマシンに適当にナンバリングをすることができます。
要するに、ゲーデル数を割り当てることができます。
しかしながら、普通にコード化すると、ある自然数には対応するチューリングマシンがないという状況もしばしば起こり得ます。
そんなわけで、チューリングマシンと自然数との1対1対応を与える規則を作ってみました。
チューリングマシンには様々な同値な定義が知られていますが、ここではそのうちでもっとも簡単なものを採用することにします。
まず、記号集合は とします。
それから、状態数が の状態集合を とおきます。
初期状態および終了状態は と決めます。
また、ヘッドが左に動くことを 、右に動くことを で表すことにします。
このとき、次のような関数 をチューリングマシンと呼びます。
さて、ここから各チューリングマシンに自然数を割り当てることを考えます。
そのため、最初に を固定して考えます。
まず、 の各元に、 から までの非負整数を割り当てる関数
を次のように定義します。
次に、 の各元には から までの自然数を割り当てる関数
を次のように定義します。
このとき、
なる自然数が、状態数が のチューリングマシン毎に一意に定まります。
何故かというと、これによって 進数 桁で表された 〜 までの 個の非負整数と、 通りあるチューリングマシンを同一視することができるからです。
したがって、
とおけば、これによって各チューリングマシンに対して、自然数が一意に定まることが分かります。
逆に、自然数 が任意に与えられたとき、インデックスが のチューリングマシンがただ一つ存在することも明らかです。
めでたしめでたし。