Abstractions from proofs

作者: Thomas A. Henzinger , Ranjit Jhala , Rupak Majumdar , Kenneth L. McMillan

DOI: 10.1145/2641638.2641655

关键词: Local variableModel checkingTheoretical computer scienceMathematical proofExpression (mathematics)Predicate abstractionComputer scienceUninterpreted functionPredicate (grammar)CorrectnessProgramming languageCPAcheckerCraig interpolationEvaluation strategyIs-a

摘要: The success of model checking for large programs depends crucially on the ability to efficiently construct parsimonious abstractions. A predicate abstraction is if at each control location, it specifies only relationships between current values variables, and those which are required proving correctness. Previous methods automatically refining abstractions until sufficient precision obtained do not systematically abstractions: predicates usually contain symbolic added heuristically often uniformly many or all locations once. We use Craig interpolation construct, from a given abstract error trace cannot be concretized, parsominous that removes trace. At location trace, we infer relevant as an interpolant two formulas define past future segment Each relationship program particular location. It can found by linear scan proof infeasibility trace.We develop our method with arithmetic pointer expressions, call-by-value function calls. For calls, offers systematic way generating local variables formal parameters when was called. have extended checker Blast discovery interpolation, applied successfully C more than 130,000 lines code, possible approaches build less

参考文章(29)
John C. Mitchell, Foundations of programming languages MIT Press. ,(1996)
Cormac Flanagan, Automatic software model checking using CLP european symposium on programming. pp. 189- 203 ,(2003) , 10.1007/3-540-36575-3_14
K. L. McMillan, Interpolation and SAT-Based Model Checking computer aided verification. pp. 1- 13 ,(2003) , 10.1007/978-3-540-45069-6_1
Joseph M. Morris, A General Axiom of Assignment Springer, Dordrecht. pp. 25- 34 ,(1982) , 10.1007/978-94-009-7893-5_3
Thomas A. Henzinger, George C. Necula, Ranjit Jhala, Grégoire Sutre, Rupak Majumdar, Westley Weimer, Temporal-Safety Proofs for Systems Code computer aided verification. pp. 526- 538 ,(2002) , 10.1007/3-540-45657-0_45
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, Marco A. A. Sanvido, Extreme Model Checking Lecture Notes in Computer Science. pp. 332- 358 ,(2003) , 10.1007/978-3-540-39910-0_16
Sagar Chaki, Edmund Clarke, Alex Groce, Ofer Strichman, Predicate Abstraction with Minimum Predicates. Lecture Notes in Computer Science. pp. 19- 34 ,(2003) , 10.1007/978-3-540-39724-3_5
James Painter, John McCarthy, Correctness of a compiler for arithmetic expressions Computer Science Department, School of Humanities and Sciences, Stanford University. ,(1966)
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, F. Kenneth Zadeck, Efficiently computing static single assignment form and the control dependence graph ACM Transactions on Programming Languages and Systems. ,vol. 13, pp. 451- 490 ,(1991) , 10.1145/115372.115320