Skip to content

Commit 92c6b6e

Browse files
hyperpolymathclaude
andcommitted
fix(provers): correct EProver '#'→'%' prefix bug and Z3 get-value parsing bug; add proof_failure diagnostics
EProver uses '%' as its output comment prefix (TPTP convention), not '#' (shell convention). parse_result was checking '# SZS status ...' so every EProver result came back inconclusive. Tests updated to match real output. Z3's parse_smt_result took the last non-empty line as the check-sat answer. When a (get-value ...) follows the final (check-sat), the last line is a model term like '(found_2 0))' — not 'sat'/'unsat'. Fixed to scan backward for the last line that is exactly one of the three answer tokens, skipping model/value output. Adds src/rust/diagnostics/proof_failure.rs: a new DiagnosticReport type with FailureKind taxonomy (ParseMismatch, BackendBug, UnsolvedGoal, TypeError, SyntaxError, OutOfScope, Timeout, ProverCrash, Satisfiable, ConfigError, Unknown), per-prover output parsers for EProver/Z3/CVC5/Coq/Agda/Lean/Idris2/ Vampire, location extraction, human-readable display, and A2ML serialisation. 11 unit tests all pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9351a96 commit 92c6b6e

4 files changed

Lines changed: 971 additions & 26 deletions

File tree

src/rust/diagnostics/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
pub mod corpus_monitor;
55
pub mod health;
66
pub mod gnn_training;
7+
pub mod proof_failure;
78

89
pub use corpus_monitor::{CorpusMetrics, CorpusMonitor};
910
pub use health::{HealthStatus, ProverHealth, ModelHealth, CorpusHealth, DegradationMode};
1011
pub use gnn_training::{GnnTrainingMetrics, load_training_metrics, update_health_with_metrics};
12+
pub use proof_failure::{diagnose, DiagnosticReport, FailureKind, SourceLocation};

0 commit comments

Comments
 (0)