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 M9: Isabelle/HOL adapter — second heavy-tail backend (foundation-first)
Provisioned Isabelle2025 (1.08 GB tarball, HOL heap prebuilt) BEFORE the
adapter, ground-truthed the invocation, then built and dogfooded against the
real tool. arghda is now an eight-backend prover-parametric workspace.
Adapter (src/prover/isabelle.rs, `Isabelle`):
- Assistant kind, extensions [thy], command `isabelle`.
- Isabelle is session-based (no single-file --check), so check_file generates a
throwaway session: copies the target .thy + sibling .thy files into a temp
dir, writes a ROOT (`session ArghdaCheck = HOL + theories <T>`), and runs
`isabelle build -o quick_and_dirty -d <dir> ArghdaCheck`. Heaps land in
~/.isabelle, so the source tree stays clean (~6 s/theory).
- Verdict, ground-truthed vs Isabelle2025: exit≠0 → Error; exit 0 + sorry/oops
→ Admitted (sorry compiles under quick_and_dirty, so it is caught at the
source, not hidden by the exit code); exit 0 + axiomatization → Postulated;
exit 0 clean → Proven. Never fabricated.
- Imports: the header `imports … begin` clause (bare names + quoted-path final
segment; stdlib Main dropped as external). Roots: a ROOT file's `theories`
section — the genuine Isabelle entry-point convention (analogue of All.agda),
parsed tolerantly (option groups skipped).
- probe() overridden to `isabelle version` (not `--version`, which errors
"Unknown Isabelle tool" — `doctor` caught this); added a pub(crate)
probe_tool_arg helper for the custom version query.
Lint (src/lint/isabelle.rs, `IsabelleEscapeHatch`): warn under the shared
`escape-hatch` name (amber cap); flags sorry/oops/axiomatization.
Provisioning fix at source: the script's Isabelle URL was stale
(`/dist/Isabelle2024…` 404s once a newer release is current) — switched to the
archived `/website-<VER>/dist/` path and bumped to Isabelle2025.
Wired: backend_for "isabelle", KNOWN_BACKENDS, all four `--backend` help
strings, the CLI about line.
Verification (actually run): cargo fmt --check, clippy -D warnings, cargo test
(159 pass: +6 isabelle unit, +4 isabelle lint unit, +3 isabelle integration;
graph tests hermetic — text/ROOT only, run tool-less), check-spdx.sh — all
green. Dogfooded vs real Isabelle2025: `check` → Good=proven / Admits=admitted
/ Postulate=postulated / Broken=error; `reason --check --backend isabelle`
reproduces those; imports All→Base / All→Util / Util→Base parsed; ROOT
theories=All → crt_root All, Base+Util wired, Orphan unwired; `doctor` →
[OK] isabelle assistant Isabelle2025.
Remaining (M9 at 90%): session-qualified / relative-path imports +
dependency-ordered multi-session builds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7
Copy file name to clipboardExpand all lines: .machine_readable/6a2/STATE.a2ml
+49-12Lines changed: 49 additions & 12 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. Seven backends across both interaction models (Agda, Cubical-Agda, Idris2, Lean4, Coq/Rocq 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. 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."
"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.",
0 commit comments