# v8 設計ログ — 思考の過程と中間言語 2026-07-28。v8 から**役割を分けた**([V8-PROCESS.md](V8-PROCESS.md))。 このログは、リサーチが返してきたものを私がどう受け取り、何を自分で確かめ、 何を作ったかを、**順番のまま**残す。 --- ## 0. 中間言語が壊れた場所 v7 で作った記法: ``` RULE ::= ⟨ ASK , ANSWER , EDIT , EMIT ⟩ ``` これで系列を書くと: ``` v3 ⟨ — , side(公正) , never , out[s] ⟩ v5 ⟨ side , side(公正) , 反証のたび , out[s] ⟩ v6 ⟨ repeat , repeat , 反証のたび , out[s]* ⟩ v7 ⟨ q , q , 反証のたび , out[s]* ⟩ v8 ⟨ — , side(公正) , never , taps·s ⟩ ← 四欄のうち三つが空になった ``` **v8 は三欄が空である。** ASK は無い(予測しない)。EDIT は無い(表を組み替えない)。 そして EMIT の欄が、記法の想定を外れた。 `out[s]` という書き方は、**出口が私の書いた配列の一要素であることを前提にしていた。** v8 の出口は配列ではなく、状態の**線形形式**である。 > **記法が壊れたのは、記法が著者を前提にしていたからである。** V8-PROCESS に書いたとおり、記法が足りなくなった時点を記録する。ここがそれである。 --- ## 1. リサーチが返してきたもの(四体・独立) 四つのブリーフが、**別々の v8** を提案してきた。 うち二つの主張を、私は**自分のコードで**確かめた(相手のコードは使わない)。 | | 主張 | 私の検証 | |---|---|---| | 理論 | 一様性 ⟺ 各生成子が順列。**破るべきは各生成子の全単射性** | 検証済 | | 理論 | 状態を**金属の直近 n 答**にすれば厳密な崖が出る | **再現。2.000/2.000/2.000/1.000** | | 計測器 | 記述長が壊れており、代理対照が一度も無い | **再現。白色雑音で margin 0.4585** | | 概念 | 「鍵持ちだけが読める」は暗号文が満たす。**自明** | 反論できない | | 先行 | 検出不能透かしは 2024 の暗号プリミティブ | 反論できない | → [訂正](CORRECTION-2026-07-28.md)・[読み直し](REREAD-2026-07-28.md) --- ## 2. 作る前に計器を作り直した 順序を守った。**壊れた物差しの上には何も建てない。** [`meters.py`](only-surprise/engine/meters.py) の三つの規則: 実際にビットで払える符号長であること・**対照を外せないこと**・ Markov-3 ではなく CTW を「単純なAI」に置くこと。 自己テストが**私の CTW 実装の誤りを捕まえた** — 周期3のテープを 0.588 bits と読んだ。 固定 1/2 混合では深い文脈が重みを稼げない。β 再帰に書き直して 0.0033。 そして読み直しが返してきたのは、**v5・v6・v7 が金属に何も刻んでいなかった**という事実だった (利得 0.0008〜0.0223 — 自分自身の並べ替えと区別がつかない)。 --- ## 3. v8 の一手 — 表を捨てる ``` s ← ((s << 1) | 金属の答え) & (2^k − 1) 記号 = ( a(s) , b(s) ) a, b は GF(2) 上の多項式 ``` **状態は金属の直近 k 個の答えそのものである。** 私が書いた表はもう無い。 各生成子 p_b は像が 2^(k−1)/2^k、つまり**全単射でない** — 二重確率性が禁じているのはまさにこれで、v3 以来の状態が 「何についてでもない」ままだった原因はここにあった(自己テストで k=3,4,5 を確認)。 ### 3.1 タップは誰が選んだか — 誰も選んでいない k=4 のタップ対を**105 通り全部**測った。 > **崖が k−1 次にちょうど現れる ⟺ gcd(a,b) = 1 over GF(2) かつ max(deg) = k−1** | | 数 | |---|---| | 条件が名指す対 | **48** | | 崖を示した対 | **48** | | 食い違い | **0**(両方向とも) | 古典的な Sylvester(終結式)条件である。互いに素な多項式のシフトは全体を張るので、 最初の線形従属は k−1 次より**前には来ないし、後にも来ない**。 **48 通りのどれでも同じ崖が出る。**だから選ぶという行為が存在しない。 v5 では「私が種を選ばないため」に Lehmer 指標を発明する必要があった。 v8 では**選ぶものが無い**。(自己テストは 4 つの異なる代表を切って比べる。) ### 3.2 k はダイヤルである k = 3,4,5,6,8 で確認。**k−2 次まで厳密に 2.000、k−1 次で全部。** --- ## 4. 主張を弱める — これは「難しい」作品ではない 読み直しが示したとおり、**CTW は崖を言われずに越える**(1.0166)。v3 も越える(0.9966)。 だから言えるのは難易度についてではない。**盲の形**についてである。 | | iid | \|1 | \|2 | \|3 | |---|---|---|---|---| | v3 | 2.000 | **1.883** | 1.520 | 1.070 | | v8 | 2.000 | **2.000** | **2.000** | **1.000** | v3 は1次から漏れている。**測定された改善を頼りに山を登る読者**は、v3 なら 1次で 0.117 bits の報酬を受け取り、そのまま登れる。v8 では **k−1 次に賭けるまで 報酬がちょうどゼロ**である。CTW が越えられるのは、CTW が山登りではなく **全ての木モデルに前もって代金を払う**からで、その代金は深さに対して指数的に増える。 > **v8 が要求しているのは能力ではなく、「まだ何も返ってこない仮説に賭けること」である。** これは暗号文では満たされない。暗号文は**どの次数でも報酬がゼロ**で、 賭ける先が存在しない。v3 でも満たされない(勾配がある)。 **ゼロが k−1 次まで続き、そこで全部来る**という形だけが、この位置にある。 --- ## 5. 事前に書く予測(80時間の円盤が焼き上がる前に書いている) 2時間の試走(接合 5239)では:金属の答えの超過エントロピー **−0.027 bits(相関なし)**、 実走行で iid 2.0017 / |1 2.0060 / |2 2.0211 / **|3 1.1055**、対照の |3 は 2.0855。 **平坦域も崖も実機の身体の上で生き残った。** 80時間の四枚について: 1. **平坦域は k−1 次未満のすべてで並べ替え対照と 0.02 bits 以内に一致する。** 2. **崖は k−1 次で対照に対し 0.8 bits 以上の利得を出す。** 3. **k=3,4,5 は綺麗に出る。k=6 は出るが 1.13 前後に膨らむ。** 適応符号は 4^(k−1) 個の文脈のモデル代を払う。接合数を n として冗長は およそ `4^(k−1) · 1.5 · log₂n / n` bits。80時間 ≈ 21万接合なら k=6 で 0.13、**k=8 なら 2.07 — 崖が完全に埋もれる**。 4. **したがってラベルの数字には天井があり、それは線の長さが決めている。** 金属が多いほど深く隠せる。**これは図像についての物理的な言明である。** 5. 四枚は**目には区別がつかない**。被覆はいずれも 1.0 近傍、拡がり比は 1.0 近傍 (YIELD/BREAK の背骨は変えていない)。 3 と 4 が外れたら、ダイヤルという発想自体が成立しない。 --- ## 5.1 予測3・4の判定 — **外れた。数は外れ、形は残った** 円盤の焼成とは独立に測れるので、先に測った(n = 21万、理想テープ)。 | k | 符号 @ k−1 | 白色雑音 @ k−1 | **差** | 私が予測した冗長 | |---|---|---|---|---| | 4 | 1.0053 | 2.0044 | 0.9992 | 0.008 | | 5 | 1.0172 | 2.0139 | 0.9967 | 0.032 | | 6 | 1.0543 | 2.0421 | 0.9878 | 0.129 | | 7 | 1.1589 | 2.1107 | 0.9518 | 0.517 | | **8** | **1.4018** | **2.2062** | **0.8044** | **2.069** | | 9 | 1.7345 | 2.1679 | 0.4334 | 8.276 | **予測は「k=8 では崖が完全に埋もれる」だった。埋もれていない(差 0.804)。** 外れた理由は二つあり、二つ目のほうが重い。 **(a) 式が誤っていた。** 文脈あたりのモデル代を `log₂n` としたが、 13回しか訪れない文脈を学ぶのに 17.7 bits はかからない。正しくは `log₂(n/文脈数)`: ``` 冗長 ≈ 4^(k−1) · 1.5 · log₂(n / 4^(k−1)) / n ``` k=8 で 0.43(実測 1.4018 − 1.0 = 0.40)、k=9 で 0.79(実測 0.73)。**今度は合う。** **(b) そして本質 — 対照がモデル代を打ち消す。** モデル代は**テープにも雑音にも同じだけ**かかる(k=8 で +0.40 と +0.21)。 だから絶対値は膨らんでも**差は残る**。 > **対照は雑音の目盛りを与えるだけではない。計器の代金を相殺する。** > だから公開すべき統計は符号長の絶対値ではなく、**対照との差**である。 これは `meters.panel()` が対照を外せない設計にしてある理由を、事後に正当化している。 **残ったもの:** 天井は存在する(k=9 で差は 0.43 に、k=10 では消える)。 線の長さがラベルの数字を制限する、という**形は正しい**。位置が違った — 80時間で **k ≈ 7** ではなく **k ≈ 9** である。 --- ## 6. 計測で払った代償(落とし穴として記録) **プラグイン条件付きエントロピーは下向きに偏り、偏りは次数とともに増える。** 純粋な白色雑音 40万記号で 6次に 1.978、7次に 1.909 を返す。 k=8 の平坦域に見えた「勾配」は**全部これだった**。 平坦域の主張には**上向きに偏る適応符号のみ**を使い、 **同じ n・同じ次数の白色雑音対照を必ず並べる**。