非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

超越数と無限長リスト(2)

今のところ超越数プログラミング言語の無限長リストの関連性は見つかりませんが、さらに続けてみます。

プログラミング言語のプログラムで生成される小数の無限列の極限が超越数かどうかを判定することはできますか

と ChatGPT で入力すると以下の結果となりました。

とても興味深い質問です。
結論から言うと、一般的には、プログラムによって生成される小数の無限列の極限が超越数かどうかを判定することは原理的に不可能な場合が多いです。理由を詳しく解説します。

1. そもそも超越数とは?

超越数とは、有理数係数の多項式の根にならない実数のことです。つまり、代数方程式

\displaystyle
a_0 + a_1x + a_2x^2 + \cdots + a_nx^n = 0

を整数係数(あるいは有理数係数)で満たすような  x が存在しない数です。代表的な超越数には、例えば以下があります:

  •  \pi
  •  e
  • リウヴィル数(例: \sum_{n=1}^\infty 10^{-n!}

2. 「プログラムで生成される無限小数列」とは?

これは、おそらく次のような形式を意味していると思われます:

  • あるプログラム  P を実行すると、小数展開の桁を順番に出力し続ける(たとえば、0.101001000100001... のようなもの)。
  • この列を極限として一つの実数  x とみなす。

このとき、得られる  x 超越数かどうかを判定したいという問いですね。

3. なぜ一般に判定できないか

(a) 可算 vs 非可算
  • プログラム(チューリング機械)は可算個しかない。
  • 実数(とくに超越数)は非可算無限に存在する。

したがって、プログラムで生成できる超越数ごく一部にすぎません。

(b) 停止性問題と計算不能
  • 任意のプログラムから得られる実数の性質(超越性など)を決定するには、その実数が何らかの方程式を満たすかどうかを判定する必要があります。
  • しかし、代数性の判定そのものが停止性問題や不完全性にぶつかることがあります。
    • たとえば、ある実数が代数的かどうかを計算的に判定する一般手法は存在しません(Turing-uncomputable)。
    • ある種のリウヴィル数のように構成からし超越数であることが分かる場合は別ですが、それも非常に限られた例です。

4. 例外的に判定できる場合

以下のようなケースでは、超越性の証明が可能です:

  • 定義が明確な構成的数列

例:リウヴィル数(桁数に明確な法則がある)→ 超越数と証明済み。

  • 特定の公式や無限級数で与えられる数

例: e = \sum_{n=0}^{\infty} \frac{1}{n!} 超越数と証明済み。

  • 構成方法が数学的に既知で超越性が証明されている場合

5. まとめ

項目 可能性
任意のプログラムが生成する無限小数の極限が超越数かを判定する ✖ 原理的に不可能(計算不能
特定の構成によって得られる数が超越数かを判定する △ 可能な場合もある(例:リウヴィル数など)

よろしければ、具体的な「生成される小数列」の例を示していただければ、それについて超越性の判定が可能かどうか詳しく検討できます。興味のある実例はありますか?