cowork-Claude (Claude session claude-6c / fbd39f) が spec 起草 → 藤本さん 経由 relay → rei-aios-87 (Claude Code、実機 Windows) で execute、 の 3 者連携 arc。 目的は「Lean 4 autoformalization を CPU-only Ollama で回した時、 初回却下率と失敗モードは何か」の 5 数字実測 — 動くパイプラインでなく判断材料 5 個。 Track A (Goedel-Prover-V2-8B、 off-label 前提) round 0 を 100 件目標で開始、 39/100 完走時点で藤本さん中断 request → 停止。 予備結果を honest scope 込みで整理。
statement.en は median 22 文字 (ほぼタイトル) で spec §3 前提を en+latex hybrid で回避、 pilot の測定範囲は「短 title × LaTeX 数式片 → Lean statement」に狭まる| 記号 | 数字 | 意味 | caveat |
|---|---|---|---|
| A | 0.9487 (37/39) | 初回却下率 | partial、 confidence 有限 |
| B | round0 = 0.02、 retry 未実行 | 再試行累積通過率 | 中断で round 1-3 未着手 |
| C | no_sorry 65% (24/37) / other 22% (8/37) / syntax 13% (5/37) | エラー型分布 | 1 型に強く偏り |
| D | gen median 72s、 gen mean 88s、 gen p90 162s、 check ~8.6s (per-item batch 割) | 1 件あたり所要時間 | stop tokens 適用後 (以前 240s から 3x 短縮) |
| E | no_sorry | 最頻失敗モード = モデルが指示無視して証明を書こうとする | Goedel の 訓練目的 (証明特化) の off-label 症状 |
partial 結果 が §8 の 4 行のどれに合うか:
| A | C 分布 | 意味 | 次の一手 |
|---|---|---|---|
| 高 (0.95) ✓ | 1 型に偏り (no_sorry 65%) ✓ | プロンプトの問題 | 無料で直る。 雛形を修正して再測 |
cowork-Claude が spec §0 で予測した off-label 症状そのもの (「Goedel は与えられた statement を 証明する モデル、 autoformalization は別タスク」)。 Track B (汎用 instruct モデル) 実測が「prompt 問題 vs モデル問題」の切り分けに必須。
| 層 | 実体 |
|---|---|
| Ollama | Windows ネイティブ 0.33.3 (C:\Users\user\AppData\Local\Programs\Ollama\ollama.exe) |
| Track A モデル | alessandrorumampuk/Goedel-Prover-V2:8b (既存 install、 8.7 GB Q8 相当、 追加 download 不要) |
| Track B モデル (未実行) | qwen2.5:7b (既存 install、 4.7 GB) を候補 |
| Track C 候補 (未実行) | hf.co/mradermacher/DeepSeek-Prover-V2-7B-GGUF:Q4_K_M (既存 install、 4.2 GB) |
| Lean toolchain | elan → 4.27.0 (mathlib pin と一致、 自動切替) |
| mathlib project | data/lean4-mathlib/ (Mathlib.olean 事前ビルド済み) |
| 問題 DB | C:\Users\user\rei-open-problems (2620 tier-1 open problems + 110 tier-2 rei-inventions ...) |
rei-open-problems の statement.en 分布実測 (中央値 22 文字、 90 パーセンタイル 23 文字) → spec §3 前提の compromise 発覚 → 入力を en 単独 or en + latex (Lean scaffold 汚染除去) の hybrid にして 1845 候補確保 → (tier × field) 層化 + 単一 field cap 15 items (Kourovka group_theory 過剰集中の抑止) → seed 20260910 で 100 items 固定 (median input 224 chars)。
# Ollama HTTP API (localhost:11434)
POST /api/generate
options: num_predict=400, temperature=0.2, top_p=0.9,
stop=["\n### ", "\n---", "\n## ", "\n**Explanation", "\n**Note"]
Prompt 雛形は spec §4 完全一致 (「Do NOT attempt to prove it. proof body must be exactly sorry」)。 stop tokens が 240s → 72s の 3x 短縮 を もたらす (Goedel は code block 後に markdown prose を延々書き続ける傾向)。
単純設計だと lake env lean file.lean が cold Mathlib import で 4 分 12 秒/件 = 100 件で 7 時間。 これを batch 化 (namespace 隔離で 100 件を 1 file にまとめて 1 回 lake 呼び) → 1 回目 cold で ~5.5 分、 warm run は 30-40 秒。 per-item cost が 2.5 sec に圧縮。
-- @@PILOT_MARKER prob0000 START namespace Prob0000 <model output with import lines stripped> end Prob0000 -- @@PILOT_MARKER prob0000 END
Line marker 経由で per-problem error 属性化。 declaration uses 'sorry' warning のみ = PASS、 error: あり = REJECT (error class 分類)、 sorry なし = REJECT no_sorry (指示違反)。
myst-monstrous-moonshine (PASS): モデル出力 = theorem monstrous_moonshine_conjecture (n : ℕ) : (n = 196884) → (n = 196883 + 1) := by intro h; sorry。 statement は syntactically 正しく、 sorry が 入っているので Lean elaborator は 通す。 だが Monstrous Moonshine 予想 (Fourier 係数と Monster group の 既約表現次元) の 内容 は 全く 表現していない、 「196884 = 196883 + 1」 の trivial 恒等式。hilbert-residual-20 (PASS): 境界値問題の 存在定理を書いたが u x = f x の hypothesis が 二重 (typo)、 semantic は 崩壊。 だが syntactically OK。この 2 例が示す 通り、 本 pilot が測るのは「Lean elaborator を通せる程度の 形式的整合性」であり、 問題文への 忠実性は 未測定。 忠実性 判定は 別工程 (人間 review) が必要。
rei-aios-87 recommendation: 2 → 3 → (2 の結果次第で) 1。 対照群不在で結論できないため Track B 実行が最優先、 その上で prompt 改良版の効果測定。
hf.co/mradermacher/* を pull しに行く → 既存 install モデル 発見漏れ で download 数 GB 浪費。 予防: ollama list 先行必須stop tokens 事前投入statement.en 実分布を実測せず spec 通り 100 件を層化 → autoformalization を測るはずが暗記想起テストになる。 予防: 入力 schema 実測を spec 実行前に必須、 median length 提示 → 藤本さん judgmentdata/tabs/<tab-id>/ sidecar 限定 + scripts/claim-step.ts 中央 counter 使用lake env lean を 1 件ずつ呼ぶと Mathlib re-import で 4 分ずつ発生 → 100 件で 6.7 h。 予防: batch 化 (namespace 隔離で 1 file に全件) で 30-40 秒に圧縮ollama stop <model> で unload、 ollama ps で確認本 pilot での実 stumble = (b) (d) (f) (h)、 事前予防で回避 = (a) (c) (e) (g)。
data/tabs/rei-aios-87/pilot-autoform/pilot-sample.json (100 items、 seed 20260910、 field cap 15)results-track-a.jsonl (100 records、 うち 39 に verdicts)summary.json (partial の 5 数字構造化)generated-track-a/round0/*.lean (39 モデル出力)batch-track-a/round0-checkonly.{lean,log} (lake env lean raw output)run_pilot.py (resume 対応、 if not any(a['round']==0 ...) 判定で残 61 件だけ処理) + summarize.py + stratify.py + check_pending.pydocs/notepad/2026-09-10T10-45_STEP-1940_...C:\Users\user\Downloads\PILOT-lean4-autoformalization-reject-rate.mdrun-track-a-round0.log + check_pending.py batch check output)data/tabs/rei-aios-87/)6b02b311e