Result Certification of Static Program Analysers with Automated Theorem Provers [chapter]

Frédéric Besson, Pierre-Emmanuel Cornilleau, Thomas Jensen
2014 Lecture Notes in Computer Science  
The automation of the deductive approach to program verification crucially depends on the ability to efficiently infer and discharge program invariants. In an ideal world, user-provided invariants would be strengthened by incorporating the result of static analysers as untrusted annotations and discharged by automated theorem provers. However, the results of object-oriented analyses are heavily quantified and cannot be discharged, within reasonable time limits, by state-of-the-art automated
more » ... rem provers. In the present work, we investigate an original approach for verifying automatically and efficiently the result of certain classes of object-oriented static analyses using off-the-shelf automated theorem provers. We propose to generate verification conditions that are generic enough to capture, not a single, but a family of analyses which encompasses Java bytecode verification and Fähndrich and Leino typesystem for checking null pointers. For those analyses, we show how to generate tractable verification conditions that are still quantified but fall in a decidable logic fragment that is reducible to the Effectively Propositional logic. Our experiments confirm that such verification conditions are efficiently discharged by off-the-shelf automated theorem provers. * This work was partly funded by the ANR DeCert and FNRAE ASCERT projects.
doi:10.1007/978-3-642-54108-7_16 fatcat:66itrrnsgvghrdmedy3umlt24e