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
ArghDA M10: Mizar adapter — heavy tail complete (a real verify, not detect-only) (#46)
## What
The third and last heavy-tail backend — and the "highest uncertainty"
one. It turned out **tractable**: Mizar 8.1.15's statically-linked i386
verifier runs on x86_64 with no 32-bit libs, so M10 is a **genuine
dogfooded verify**, not the planned detect-only stub.
arghda is now a **nine-backend** prover-parametric workspace (agda,
agda-cubical, idris2, lean4, coq, isabelle, **mizar** as Assistants; z3,
cvc5 as Solvers). **The heavy tail (M8–M10) is complete.**
## How
**Adapter — `src/prover/mizar.rs` (`Mizar`)**
- Assistant kind, extensions `[miz]`, command `verifier`.
- **No lint pack, by design**: Mizar has no `sorry`/`admit` escape hatch
— an incomplete proof is simply a verifier error, and a normal article
cannot introduce axioms — so soundness *is* the verifier and the verdict
is binary.
- `check_file`, ground-truthed vs Mizar 8.1.15: `MIZFILES` unset →
`Unavailable` (the MML data dir is the precondition — honest, never a
fabricated pass); binary absent → `Unavailable`; otherwise copy the
`.miz` (+ siblings) to a temp dir, run `accom` then `verifier` (env
`MIZFILES`), and read the sibling `<stem>.err` — **empty + exit 0 →
`Proven`, non-empty / exit ≠ 0 → `Error`** (Mizar reports errors in
`.err`, the authoritative signal).
- Imports: the `environ` block's directives
(`vocabularies`/`notations`/`theorems`/…), lower-cased to match on-disk
stems; MML references are external and dropped.
- Roots: none — Mizar has no aggregator convention (honest empty set).
- `probe()` overridden to `verifier -v`.
**Provisioning at source**: `install_mizar` upgraded from a warn-stub to
a real installer (static i386 tarball from `mizar.uwb.edu.pl` →
`/opt/mizar` + symlinks), with a `MIZAR_TAR` pin and a `doctor` verify
line.
**Wired**: `backend_for "mizar"`, `KNOWN_BACKENDS`, all four `--backend`
help strings, the CLI about line.
## Verification (actually run)
- `cargo fmt --check` — clean
- `cargo clippy --all-targets -- -D warnings` — clean
- `cargo test` — **167 pass** (+6 mizar unit, +2 mizar integration; the
graph tests are hermetic — `environ` text only, run tool-less)
- `bash scripts/check-spdx.sh .` — OK
**Dogfooded against real Mizar 8.1.15** (`MIZFILES=/opt/mizar`):
| fixture | `arghda check --backend mizar` |
|---|---|
| `good.miz` (`theorem for X being set holds X = X`, importing XBOOLE_0)
| `proven` |
| `broken.miz` (undefined reference) | `error` |
| `empty.miz` (empty environ+begin) | `proven` |
- `arghda doctor` → `[OK] mizar assistant Mizar Ver. 8.1.15`
## Scope
M10 at 85%. Remaining: local-article cross-references need prel export
(`miz2prel`) for the throwaway session; no root convention.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7
---
_Generated by [Claude
Code](https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7)_
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .machine_readable/6a2/STATE.a2ml
+48-13Lines changed: 48 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ status = "active" # active | paused | archived
11
11
12
12
[project-context]
13
13
name = "arghda-core"
14
-
purpose = "Multi-backend proof-workspace manager — the 'Flying Logic for provers/solvers' engine. A four-state triage workspace (inbox/working/proven/rejected) as file moves, per-backend lint packs targeting the silent-failure class, a backend-parametric import-graph DAG, a demote-only status-propagating reasoning graph, and a JSON + event-stream contract a visual layer (arghda-studio) consumes. Eight backends across both interaction models (Agda, Cubical-Agda, Idris2, Lean4, Coq/Rocq, Isabelle/HOL assistants; Z3, CVC5 solvers). It never proves anything itself; the tools do."
14
+
purpose = "Multi-backend proof-workspace manager — the 'Flying Logic for provers/solvers' engine. A four-state triage workspace (inbox/working/proven/rejected) as file moves, per-backend lint packs targeting the silent-failure class, a backend-parametric import-graph DAG, a demote-only status-propagating reasoning graph, and a JSON + event-stream contract a visual layer (arghda-studio) consumes. Nine backends across both interaction models (Agda, Cubical-Agda, Idris2, Lean4, Coq/Rocq, Isabelle/HOL, Mizar assistants; Z3, CVC5 solvers). It never proves anything itself; the tools do."
15
15
completion-percentage = 92
16
16
17
17
[position]
@@ -50,7 +50,7 @@ milestones = [
50
50
{ name = "M7: Echidna dispatch seam (optional route to orchestrator :8090, same Outcome)", completion = 70 },
"M3 follow-on: DONE — `reason --workspace <ws>` sources real verdicts from a `proven/` state (workspace_verdicts) + demotes stale-proven via the content-hash closure. Refinement follow-ons bucket now complete.",
"M10 (Mizar): next, foundation-first — detect-only first (distribution is manual/niche via mizar.org; provision honestly, check_file → Unavailable until a real toolchain confirms invocation). Then climb to M6 lake-env, M4 totality lint, M7 Echidna client.",
383
+
"M10 (Mizar): DONE (85%) — turned out to be a REAL verify, not detect-only: static i386 verifier runs on x86_64; provisioned + adapter (accom+verifier+.err) + dogfooded (proven/error). HEAVY TAIL M8-M10 COMPLETE. Remaining: local-article prel export.",
384
+
"Next, climb up: M6 (lake-env/LEAN_PATH so imported Lean files get audited), M4 (totality-hole ?name + per-def partial lint for Idris2), M7 (real Echidna HTTP client, feature-gated). Each its own focused draft PR, gate green, real-tool dogfood where installed.",
0 commit comments