trinity-infinity

検証

四本入っています。問いが違うので、一本では足りません。

  問い 項目
independent_check.py 定理は正しいか。 証明の記述から独立に実装して、同じ結論に達するか 15
claims_audit.py 紙面に印字されている数字は、その通りに出るか。 32
check_errata.py 正誤表が紙面について述べていることは、紙面と合うか。 108
check_route.py ROUTE.md の九段階は、他の文書と食い違わないか。 143

定理が正しくても、論文に印字された数字が別の設定で計算されたものだったり、 書き写す段階で崩れていたりすることはあります。逆に、数字が全部合っていても、 定理そのものが記述どおりには成り立たないことがある —— この系列の初版がまさにそれです。 だから複数の方向から見ます。

python3 independent_check.py    # 15 項目
python3 claims_audit.py         # 32 項目
python3 check_errata.py         # 108 項目(pypdf が要る)
python3 check_route.py          # 143 項目
python3 check_text.py           # 誤変換・使わないと決めた語

上の二本は NumPy のみを必要とします。乱数種は固定してあるので、何度実行しても同じ数値が出ます。 通れば、それぞれ終了コード 0 を返します。

なお、各論文は series1_verification.py などを同梱していると謳っているが、 そのスクリプトは存在しない(../ERRATA.md の E3)。謳っているのは 謝辞だけではなく、三本で合計 6 箇所です。ここにある四本は、その復元でも代用でもなく、 別に書いたものです。

check_errata.py は、その 6 箇所が本当に紙面に印字されているかを PDF から取り出して 突き合わせる(108 項目)。正誤表の引用が紙面と食い違ったら、そこで落ちます。

見る内容は audit.toml に宣言してあります。引用が一字一句あるか、 「印字されていない」と述べたものが本当に無いか、宣言した件数だけ挙がっているか、 名乗る数値が実際に走らせた結果と一致するか、未解決の項目がそのまま残っているか、 PDF が差し替わっていないか(SHA-256)、最終更新が本文のどの日付よりも古くないか。

当たる側は errata_check.py で、これは errata-check(MIT、v0.1.0、10.5281/zenodo.22649054)を写したものです。 単一ファイルなので、ここに置いて使っています。


independent_check.py —— 定理は正しいか

何を確かめているか

A — 残った定理。 f(x) = αQx + (1−α)p について、変位がちょうど α 倍されること、 不動点が閉形式 (1−α)(I−αQ)⁻¹p と一致すること、誤差がちょうど αᵏ で減衰すること。 巡回置換について n = 2, 3, 4, 5, 8 で確認します。

なお、Series I の記述は ‖Tₙ − T*‖ ≤ αⁿ‖T₀ − T*‖ と不等号だが、線形部分がちょうど α × 等長写像なので等号が成り立つ。24 反復まで、差は 1.1×10⁻¹⁶ 以内です。

B — 本質的でなかった三つの前提。 証明が使っているのは「Q が長さを変えない」ことだけです。

つまり、三要素であることも、巡回置換であることも、状態空間が [0,1]ⁿ であることも、 収束には効いていません。

C — 異方性の縮小定数。 Series II の maxᵢ aᵢ は「タイトな上界」ではなく、 DQ(D = diag(a))の作用素ノルムそのものです。スペクトルノルムはユニタリ不変なので ‖DQ‖₂ = ‖D‖₂ = maxᵢ aᵢ。20,000 方向の経験的上限と照合して 10⁻¹² 以内で一致します。

D — 残らなかった主張。 改訂前の作用素(自己言及的な統合)を記述どおり実行すると、 極限が初期値に依存します。1000 回の試行で、極限の平均 0.5052、標準偏差 0.1655、範囲 [0.0437, 0.9422]。

Series I が別実装で報告した値は 平均 0.4995、範囲 [0.0403, 0.9589] です。 別々に書かれた二つの実装が、同じ記述から同じ結論に達しています。


claims_audit.py —— 印字された数字は、その通りに出るか

論文の紙面から数値を書き写し、その隣に計算し直した値を並べる。判定は三つです。

   
MATCH 印字された値と計算値が、示した許容差の中で一致する
CONSISTENT 乱数を使う主張なので一致は求められない。分布の理論値と整合する
MISMATCH 一致しない

32 項目のうち 28 が MATCH、4 が CONSISTENT、MISMATCH は 0 です。

Series I(13 項目)

補正した作用素の不動点 (0.510204, 0.306122, 0.183673) を閉形式から計算し、さらに 閉形式を信じずに 5 点から 400 回反復して同じ点に着くことを確かめる(差 10⁻¹⁶ 台)。 第3節の利得表は πC(n)=n+1, πD(n)=n+2 という定義から 8 行を生成し直して 1 行ずつ突き合わせ、 裏切りの強支配とパレート支配も判定します。閾値 δ*=1/2 は 200 万点の格子で VC ≥ VD が最初に成り立つ δ を探して確かめる。

自己言及的な統合(撤回された方)については、乱数の再実行より強いことが言える。 極限は初期値の三成分の平均に等しいので、その分布は解析的に分かる —— U(0,1) 三個の平均は 平均 1/2、標準偏差 1/6 = 0.16667。論文の報告値 0.4995 / 0.1676 はこの理論値と整合します。

Series II(13 項目)

異方的な不動点 (0.754190, 0.527933, 0.508380)、20,000 組の経験的な縮小比、 離散時間の V(xₙ₊₁) ≤ max(aᵢ)² V(xₙ)、ミニマックス利得 2。

第4節の凸包は SciPy を使わずに計算します。8 点なので全ての 3 点組から支持超平面を総当たりで拾い、 同一平面上の点をまとめて面を作り、扇状に分割して体積を出します。結果は 4.000000、面 6 枚 (論文の 4.00 と一致)。端点かどうかは、その点を除いて凸包を作り直し、体積が真に減るかで判定する (8 点すべてが端点)。

第6節は 3閉路のグラフラプラシアンの固有値 0,3,3、ρ(0.25K)=0.75、200 項の部分和と閉形式の差 2.7×10⁻¹⁵(論文は 3×10⁻¹⁵ 以内)、K∞ の行列一致。

Series III(5 項目)

表1 を n=2〜8 で作り直します。等長写像の誤差は全て厳密に 0、閉形式の不動点への最大偏差は 1.1×10⁻¹⁶、 P² = I となるのは n=2 のみ —— 論文の表1 の三列がそのまま再現します。 加えて、収束の速さが n に依存しないことを 24 反復まで確認します。

出所

四本とも、系列の内容を読んだうえで Claude Code(Anthropic)を用いて書かれ、実行されました。 論文本体には含まれていません。数値はすべて実行して得たものです。