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
fix(provers): extend source_path pattern to 32 remaining lossy backends
Applies the same parse_file → stash "source_path", parse_string →
stash "{prover}_source", verify_proof → prefer-metadata-before-IR
fix to the rest of the LOSSY_ROUNDTRIP backends: alloy, cbmc, chuffed,
dafny, dreal, framac, fstar, glpk, hol_light, idris2, imandra,
isabelle, key, lean, minizinc, minlog, mizar, nuprl, nusmv, ortools,
prism, proverif, scip, seahorn, spin_checker, tamarin, tlaps, tlc,
twelf, uppaal, viper, why3.
Non-trivial adaptations required to preserve semantics:
- idris2: Idris 2 resolves the top-level module name from CWD like
Agda, so the source_path branch spawns with current_dir set to
the file's parent and passes the bare filename.
- seahorn: already had a seahorn_input_file escape hatch for pre-
compiled .bc/.ll bitcode; source_path becomes the primary
preference with the existing hatch and the IR reconstruction as
successive fallbacks.
- cbmc/framac: the --unwind / -wp-* metadata knobs were hoisted
above the source_path branch so every path honours the user's
bound overrides.
- prism/tlc: these write two files (model + properties/cfg). The
source_path branch passes the real model file verbatim; the
multi-file generation fallback stays intact behind the if-let.
- isabelle/mizar: both already had partial source stashing
(raw_thy_content, source_path). Normalised to the canonical
source_path + {prover}_source convention; Mizar's is_complete()
short-circuit was moved below the source-backed branches so real
files are not rejected for having open goals in our IR.
- acl2: ACL2 reads input on stdin — the source_path branch opens
the real file as Stdio::from(File) rather than piping string
content, matching the existing lossy-path invocation shape.
No trait signatures changed; every fallback path remains byte-for-
byte identical behind an if-let guard. Full workspace build, the
625-test unit suite, and `cargo clippy --lib --bin echidna` all
remain green.
Phase 3 closes out the broken-backend audit that started with the
Z3/CVC5/Coq MVP fixes: 39 backends now prefer their original source
over the lossy Term-IR round-trip.
https://claude.ai/code/session_01NaC5RXjTyr5xg9XXUa2FCC
0 commit comments