You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The sixth backend, and a soundness-honesty fix it exposed.
## Lean4 backend (src/prover/lean.rs)
`lean <file>` elaboration. The subtlety Lean forces us to be honest about:
a green exit does NOT mean proven — `sorry` is only a *warning* and still
exits 0. So the verdict is parsed from output, not the bare exit code:
- exit non-zero → Error (elaboration failed)
- exit 0 + `sorry` in output → Admitted (a hole rode along)
- exit 0 clean → Unknown — elaborated, but arghda refuses to claim Proven
without a `#print axioms` audit (it could still use native_decide /
sorryAx). This is exactly the plan's "honest Unknown when the audit is
absent".
Dotted modules reuse `graph::module_name_of`; `.lean` `module_to_path`;
import parser for top-level `import Mod` (`open` is a namespace directive,
NOT an edge — deliberately ignored); `Main.lean` root discovery.
`src/lint/lean.rs`: `LeanEscapeHatch` (sorry/admit/native_decide/unsafe),
named `escape-hatch` to reuse the reasoning-graph amber cap. Wired via
`--backend lean4`. Ground-truthed against Lean 4.13.0.
## Honesty fix exposed by M6 (applies to ALL backends)
`check`'s verdict was collapsing to proven-eligible/rejected, which
mislabelled a *clean, correct* Lean file as "rejected" and an SMT `sat` as
"rejected". It now reports the real verdict word — proven-eligible /
refuted / unknown / admitted / postulated / rejected — and the human line
drops the assistant-centric ok/FAILED.
## Verified (ran, not inferred)
- `cargo test` → 119 passing, 0 failed (+5 lean unit, +4 lean-escape unit,
+2 lean integration).
- clippy -D warnings, fmt, SPDX clean.
- Dogfooded REAL lean: clean proof → `unknown`, `sorry` → `admitted`;
re-dogfooded z3 `sat` → `refuted`, `unsat` → `proven-eligible`, agda →
`proven-eligible`. `arghda doctor` → 6 backends.
- STATE.a2ml records M6 = 85% (lake-env multi-file resolution + the
#print axioms audit to promote Unknown→Proven are the follow-on 15%).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7
"Flying-Logic epic M11: studio JSON freeze (reason/0.1) + Groove /.well-known/groove manifest (the one open v0.1 milestone; `arghda doctor` output feeds the manifest).",
168
189
"Flying-Logic epic M7: Echidna dispatch seam (feature-gated client, same Outcome).",
0 commit comments