Debugging Program Verification Proof Scripts (Tool Paper)
Interactive program verification is characterized by iterations of unfinished proof attempts. To support the process of constructing a complete proof, many interactive program verification systems offer a proof scripting language as a text-based way to describe the non-automatic steps in a proof. Such scripting languages are beneficial, but users spent a lot of effort on inspecting proof scripts and the proofs they construct to detect the cause when a proof attempt is unsuccessful and leads to unintended proof states. We present an offline and replay debugger to support the user in analyzing proof attempts performed with proof scripts. This debugger adapts successful concepts from software debugging to the area of proof script debugging. The tool is built on top of KeY, a system for deductive verification of Java programs. The debugger and its graphical user interface are designed to support program verification in particular, the underlying concepts and the implementation, however, are adaptable to other provers and proof tasks.
READ FULL TEXT