Author:
Cho Chanhee,Zhou Yi,Bosamiya Jay,Parno Bryan
Abstract
AbstractMany program verification tools provide automation via SMT solvers, allowing them to automatically discharge many proofs. However, when a proof fails, it can be hard to understand why it failed or how to fix it. The main feedback the developer receives is simply the verification result (i.e., success or failure), with no visibility into the solver’s internal state. To assist developers using such tools, we introduce ProofPlumber, a novel and extensible proof-action framework for understanding and debugging proof failures. Proof actions act on the developer’s source-level proofs (e.g., assertions and lemmas) to determine why they failed and potentially suggest remedies. We evaluate ProofPlumber by writing a collection of proof actions that capture common proof debugging practices. We produce 17 proof actions, each only 29–177 lines of code.
Publisher
Springer Nature Switzerland
Reference41 articles.
1. Coq Development Team. The Coq Proof Assistant. https://coq.inria.fr/
2. d. Moura, L., Ullrich, S.: The Lean 4 theorem prover and programming language. In: International Conference on Automated Deduction (2021)
3. Delahaye, D.: A tactic language for the system Coq. In: Proceedings of the 7th International Conference on Logic for Programming and Automated Reasoning (2000)
4. Blanchette, J.C., Böhme, S., Paulson, L.C.: Extending sledgehammer with SMT solvers. In: International Conference on Automated Deduction (2011)
5. Meng, J., Paulson, L.C.: Translating higher-order clauses to first-order clauses. J. Autom. Reasoning 40(1), 35–60 (2008). https://doi.org/10.1007/s10817-007-9085-y