In software verification, a successful automated program proof is the ultimate triumph. The road to such success is, however, paved with many failed proof attempts. The message produced by the prover when a proof fails is often obscure, making it very hard to know how to proceed further. The work reported here attempts to help in such cases by providing immediately understandable counterexamples. To this end, it introduces an approach called Counterexample Extraction and Minimization (CEAM). When a proof fails, CEAM turns the counterexample model generated by the prover into a a clearly understandable version; it can in addition simplify the counterexamples further by minimizing the integer values they contain. We have implemented the CEAM approach as an extension to the AutoProof verifier and demonstrate its application to a collection of examples.
翻译:在软件核查中,成功的自动化程序验证是最终的胜利。然而,成功的道路是许多失败的验证尝试的铺垫。证明者在证明失败时所产生的信息往往模糊不清,很难知道如何进一步推进。在此报告的工作试图通过提供可立即理解的反实例来帮助处理这类案例。为此,它引入了一种称为 " 反采掘和最小化 " (CEAM)的方法。当证明失败时,CEAM将证明者产生的反样模型转换成一个清晰易懂的版本;此外,它还可以通过尽可能减少其包含的整数值来进一步简化反样例。我们实施了CEAM方法,作为AutoProof验证器的延伸,并展示其对一系列实例的应用。