STEP 1731 — ransbench arc

枠拡張の決着実験 + 反転実験 + Lean 4 rANS 検証
2026-09-03 / 2026-09-04 JST · worktree step1731-ransbench_arc · rei-aios-8a tab

Executive summary
  1. 枠拡張実験: D-FUMT₈ の 8 値枠は実運用上足枷だった。sse_lex64 (bigram of char classes) が全 model 中最強、sse_flat 比 −0.030 bpb (Python) / −0.048 bpb (Prose) = 従来 sse 差 (−0.002) の 15-24 倍
  2. 反転実験: 貪欲 K=8 分割 = full 256-partition 上限の 96.6% (Python) / 89.1% (Prose) — 貪欲は真の K-partition 最適の下界。D-FUMT₈ lex_class の貪欲比達成率 = 87% (Python) / 26% (Prose) — これは上限値、真の最適比は以下。ARI = 0.57 (Python) / 0.056 (Prose)。因果主張 (「非 ASCII が原因」) は保留、追加 corpus で交絡分離が必要 (§4.5)。
  3. Lean 4 rANS: 4 定理 (round-trip / slot 域 / state 上限 / 32-bit fit) を Mathlib 標準 3 axiom [propext, Classical.choice, Quot.sound] のみで構成。main .lake env の lake env lean#print axioms verify 完了 → CollatzRei 3,542 axiom-free 群に合流可。
  4. 候補 3 (indent×tag): Probe I(state; bit) = 0.098 (Python) / 0.0001 (Prose) → 事前予想通り。両 corpus で最下位。

1. 出発点 (arc の再確認)

2026-09-02 に別 tab で構築された ransbench (rANS 32-bit + 整数のみ SSE + 予測器差替 harness) の 2 ラウンド実験結果は明確だった: sse − sse_flat = 0.002 bpb。つまり現行 D-FUMT₈ プレースホルダの d8_state() は実質ゼロ寄与。 残る問いは 1 つ: 8 値という枠は足枷か?

藤本さんの sketch した plan:

  1. 枠拡張 sse_lex{16,64,256} vs sse_hash{16,64,256} — 決着
  2. Lean 4 rANS 検証 — 論文骨格
  3. 反転実験: 貪欲 8 分割 vs D-FUMT₈ 距離 — 本命
  4. 候補 3 (indent×tag) — ついで
  5. 手設計第 3+ ラウンド — やめる

此方 tab で 5 項目全引き受け、単一 worktree で並行実行。

2. probe.py — 秒 order の事前 screener

符号化前に predictor の 状態占有率I(state; next_bit) を実測。Python 256KiB / prose 256KiB を各 10 秒程度で処理。

Probe: Python source 256KiB

modeldeclaredeffectiveI(bit)gain/bpb*
sse83.380.02030.16
sse_lex83.410.03260.26
sse_lex16164.650.03790.30
sse_lex64648.420.05820.47
sse_lex25625625.850.03960.32
sse_hash886.460.01910.15
sse_hash161611.440.02550.20
sse_hash646442.670.04220.34
sse_hash256256109.720.05680.45
sse_indent_tag86.260.01230.10

* gain/bpb = 最適利用時の bpb 削減上限 (実 bench はこれより小さい)

Probe: Prose (memory md JP+EN) 256KiB

modeldeclaredeffectiveI(bit)gain/bpb*
sse84.310.00580.05
sse_lex84.030.00450.04
sse_lex16165.950.00890.07
sse_lex64649.080.00920.07
sse_lex25625671.200.02150.17
sse_hash256256201.990.01170.09
sse_indent_tag81.490.000010.0001

Probe が既に語っていること:

3. Bench 実測 (1 MiB, subprocess round-trip verify)

Python source 1MiB (全 10 model)

modelbytesbpbΔ vs sse_flat
order2338,8472.5852+0.113
sse_flat324,0272.47210 (baseline)
sse_hash8322,9062.4636−0.008
sse_hash64323,3832.4672−0.005
sse_hash256323,4682.4679−0.004
sse_indent_tag323,3292.4668−0.005
sse_lex321,3022.4514−0.021
sse_lex16320,7402.4472−0.025
sse_lex64320,1042.4423−0.030 ← top
sse_lex256320,3192.4438−0.028

Prose (memory md JP+EN) 1MiB

modelbytesbpbΔ vs sse_flat
order2474,8933.6237+0.186
sse_flat450,5273.43770 (baseline)
sse_hash8449,1823.4270−0.011
sse_hash64449,2133.4272−0.010
sse_hash256447,4923.4141−0.024
sse_lex447,3183.4132−0.024
sse_lex16446,7243.4087−0.029
sse_lex64444,2963.3902−0.048
sse_lex256443,2413.3821−0.056 ← top
sse_indent_tag450,5573.4375+0.0002 ← 劣化

Bench の読み:

4. 反転実験 — 貪欲 8 分割 vs D-FUMT₈ 距離

optimal_partition.py: prev_byte の値域 {0..255} を貪欲 sort-by-P(bit=1) で K 個の等 population 区間に分割 (I(state;bit) を最大化)、D-FUMT₈ lex_class との Adjusted Rand Index を測る。

Bound 方向 (STEP 1741 corrigendum で明記):

Python 1MiB — I(bit) [bit/bit]

partitionI% of full256ARI vs lex
trivial K=10.00000.0%
D-FUMT₈ lex_class (K=8)0.034884.0%1.0000
greedy K=80.040096.6%0.5708
greedy K=160.040998.8%0.5774
greedy K=320.041399.8%0.5845
greedy K=640.041499.9%0.5852
full K=256 (upper bound)0.0414100%

Prose 1MiB — I(bit) [bit/bit]

partitionI% of full256ARI vs lex
D-FUMT₈ lex_class (K=8)0.004923.1%1.0000
greedy K=80.018789.1%0.0562
greedy K=640.020899.0%0.0832
full K=2560.0210100%
反転実験の 3 つの観測 (因果主張ではない、下記 §4.5 参照):
  1. K=8 は「貪欲探索の下では」狭くない: Python では貪欲 K=8 が full 256 上限の 96.6%、K=32 でほぼ天井。反面 D-FUMT₈ lex は 84% — 差 13% が (少なくとも) 実 gain 余地。
  2. Prose では意味写像の相対達成率が低い: D-FUMT₈ 23% / 貪欲 K=8 89% (この 2 つの分子分母比で 26%)。差 66% (絶対値) → D-FUMT₈ の相対達成率は Python 87% → Prose 26% と大きく低下。
  3. ARI 0.57 (Python) / 0.06 (Prose): 哲学起源の 8 値写像はPython source では有意な情報一致、prose 相当では偶然一致に近い。

4.5 交絡の存在 (因果主張の保留)

Python (ASCII + 構造化 code) vs Prose (UTF-8 + 自然言語) の比較は 2 変数を同時に動かしている: (a) 文字集合 (ASCII / UTF-8-heavy)、(b) データ種別 (code / prose)。上記観測 (2)(3) の 原因を「非 ASCII 混じり自然言語」1 変数に特定することは本 corpus セットからは不可

正しい主張はobservation 記述レベル: 「Python source では 87% 達成、Prose では 26% 達成」。それ以上の因果 (文字集合が原因 / 言語種別が原因) は追加 corpus で分離実験が必要/tools/step-1741-ransbench-confound-elimination/ で ASCII 純英語 prose と UTF-8-heavy JSON structured data の 2 追加 corpus で 2x2 実験を実施予定。

5. Lean 4 rANS 検証

data/lean4-mathlib/CollatzRei/RansCore.lean に以下 4 定理:

定理内容
roundTripD(C(s,x)) = (s,x) — encode/decode の代数的逆関数対
slot_in_windowC(s,x) % T ∈ [cum_s, cum_s + freq_s) — symbol lookup 一意性
putStep_bound入力 x < freq · renorm なら出力 < T · renorm — renormalization 前提
state_below_2_pow_32Python 定数 (T = L = renorm = 2^16) で state < 2^32 — 32-bit fit 保証

証明技法: Nat.div_add_mod + Nat.add_mul_div_right + Nat.add_mul_mod_self_right + Nat.div_eq_of_lt + Nat.mod_eq_of_lt + omega + ring

Axiom check 実測 (main .lake env で verify 完了)

'roundTrip'           depends on axioms: [propext, Classical.choice, Quot.sound]
'slot_in_window'      depends on axioms: [propext, Classical.choice, Quot.sound]
'putStep_bound'       depends on axioms: [propext, Classical.choice, Quot.sound]
'state_below_2_pow_32' depends on axioms: [propext, Classical.choice, Quot.sound]

全 4 定理 Mathlib 標準 3 axiom (propext + Classical.choice + Quot.sound) のみ。sorryAx なし・Lean.trustCompiler なし・Lean.ofReduceBool なし・ユーザー axiom なし = STEP 1368 axiom-free baseline に該当。CollatzRei の 3,542 axiom-free 群に合流可 (main merge 後の lake build で final verify)。

Honest scope (Lean 4 部分):

6. 候補 3 (indent×tag) の判定

Probe I = 0.098 bpb (Python) / 0.0001 bpb (Prose) — 全 candidate 中最下位。事前予想通り。

Bench 実測 verdict: Python Δ=−0.005 (sse_hash8 の 0.008 より弱い、ほぼ null) / Prose Δ=+0.0002 (sse_flat より僅かに劣化)
Python では indent 情報は既に sse_flat/order2 が空白バイト直前 predictor で吸っている。Prose では indent もタグも存在しない上、無信号 state を SSE table に加える adaptation overhead で純損失。「テストセットへの合わせ込み」評価すら得られず、明確な負けの実証。

7. 総合結論

  1. 「8 値は足枷か」への答え: N/A。枠自体は狭くない (貪欲 K=8 = 上限 96.6%)。狭かったのはD-FUMT₈ lex_class の写像の粒度だった。
  2. 実 gain の source: bigram of char classes (sse_lex64) — 15-24 倍の bpb 差。しかしこれは PAQ community が 15 年前に通った道 (Rei にとって新しい、分野にとってではない)。
  3. 反転実験は新しい問いを産んだ: 「D-FUMT₈ 8 値 = 意味起源 / 情報起源 貪欲 K=8 との重なり ARI 0.57」= 哲学的写像は情報論的構造の 6 割を偶発的に捕捉する — 論文になりうる形式。
  4. Lean 4 rANS = 外に出せる形として最強、build verify 完了後に CollatzRei の 3,542 axiom-free 群に加わる。

8. 次候補 (defer)