Static Contract Checking with Abstract Interpretation

作者: Manuel Fähndrich , Francesco Logozzo

DOI: 10.1007/978-3-642-18070-5_2

关键词:

摘要: We present an overview of Clousot, our current tool to statically check CodeContracts. CodeContracts enable a compiler and language-independent specification Contracts (precondition, postconditions object invariants). Clousot checks every method in isolation using assume/guarantee reasoning: For each under analysis Clousot assumes its precondition asserts the postcondition. invoked method, also absence common runtime errors, such as null-pointer buffer or array overruns, divisions by zero, well less ones checked integer overflows floating point precision mismatches comparisons. At core there is abstract interpretation engine which infers program facts. Facts are used discharge assertions. The use (vs usual weakest precondition-based checkers) has two main advantages: (i) checker automatically loop invariants letting user focus only on boundary specifications; (ii) deterministic behavior (which abstractly mimics flowof program) it can be tuned for cost. embodies other techniques, iterative domain refinement, goal-directed backward propagation, postcondition inference, message prioritization.

参考文章(47)
Ranjit Jhala, Kenneth L. McMillan, Array Abstractions from Proofs Computer Aided Verification. pp. 193- 206 ,(2007) , 10.1007/978-3-540-73368-3_23
K. Etessami, Analysis of Recursive Game Graphs Using Data Flow Equations verification model checking and abstract interpretation. pp. 282- 296 ,(2004) , 10.1007/978-3-540-24622-0_23
Sriram Sankaranarayanan, Franjo Ivančić, Aarti Gupta, Program analysis using symbolic ranges static analysis symposium. pp. 366- 383 ,(2007) , 10.1007/978-3-540-74061-2_23
Bertrand Jeannet, Antoine Miné, Apron: A Library of Numerical Abstract Domains for Static Analysis Computer Aided Verification. ,vol. 5643, pp. 661- 667 ,(2009) , 10.1007/978-3-642-02658-4_52
Vincent Laviron, Francesco Logozzo, SubPolyhedra: A (More) Scalable Approach to Infer Linear Inequalities Lecture Notes in Computer Science. pp. 229- 244 ,(2008) , 10.1007/978-3-540-93900-9_20
Jean-Christophe Filliâtre, Claude Marché, The Why/Krakatoa/Caduceus Platform for Deductive Program Verification Computer Aided Verification. pp. 173- 177 ,(2007) , 10.1007/978-3-540-73368-3_21
Gilles Barthe, Lilian Burdy, Julien Charles, Benjamin Grégoire, Marieke Huisman, Jean-Louis Lanet, Mariela Pavlova, Antoine Requet, JACK: a tool for validation of security and behaviour of Java applications formal methods. pp. 152- 174 ,(2006) , 10.1007/978-3-540-74792-5_7
Jan Smans, Bart Jacobs, Frank Piessens, VeriCool: An Automatic Verifier for a Concurrent Object-Oriented Language Lecture Notes in Computer Science. pp. 220- 239 ,(2008) , 10.1007/978-3-540-68863-1_14
Francesco Logozzo, Radhia Cousot, Patrick Cousot, Contract Precondition Inference from Intermittent Assertions on Collections Springer Verlag. ,(2011)
Patrick Cousot, Radhia Cousot, Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation international symposium on programming language implementation and logic programming. pp. 269- 295 ,(1992) , 10.1007/3-540-55844-6_142