Refining Abstract Interpretation Based Value Analysis with Constraint Programming Techniques

Abstract interpretation based value analysis is a classical approach for verifying programs with floating-point computations. However, state-of-the-art tools compute an over-approximation of the variable values that can be very coarse. In this paper, we show that constraint solvers can significantly refine the approximations computed with abstract interpretation tools. We introduce a hybrid approach that combines abstract interpretation and constraint programming techniques in a single static and automatic analysis. rAiCp, the system we developed is substantially more precise than Fluctuat, a state-of-the-art static analyser. Moreover, it could eliminate 13 false alarms generated by Fluctuat on a standard set of benchmarks.

[1]  Yahia Lebbah,et al.  Solving Constraints over Floating-Point Numbers , 2001, CP.

[2]  Florent de Dinechin,et al.  Certifying the Floating-Point Implementation of an Elementary Function Using Gappa , 2011, IEEE Transactions on Computers.

[3]  John Harrison,et al.  A Machine-Checked Theory of Floating Point Arithmetic , 1999, TPHOLs.

[4]  David Cohen,et al.  Principles and Practice of Constraint Programming - CP 2010 - 16th International Conference, CP 2010, St. Andrews, Scotland, UK, September 6-10, 2010. Proceedings , 2010, CP.

[5]  Frédéric Benhamou,et al.  Algorithm 852: RealPaver: an interval solver using constraint satisfaction techniques , 2006, TOMS.

[6]  Daniel Kroening,et al.  Numeric Bounds Analysis with Conflict-Driven Learning , 2012, TACAS.

[7]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[8]  Charlotte Truchet,et al.  Octagonal Domains for Continuous Constraints , 2011, CP.

[9]  Arnaud Gotlieb,et al.  An Abstract Interpretation Based Combinator for Modelling While Loops in Constraint Programming , 2007, CP.

[10]  Eric Goubault,et al.  Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software , 2009, FMICS.

[11]  Bruno Marre,et al.  Improving the Floating Point Addition and Subtraction Constraints , 2010, CP.

[12]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[13]  Eric Goubault,et al.  A Logical Product Approach to Zonotope Intersection , 2010, CAV.

[14]  David Aspinall,et al.  Formalising Java's Data Race Free Guarantee , 2007, TPHOLs.

[15]  K. Rustan M. Leino,et al.  Weakest-precondition of unstructured programs , 2005, PASTE '05.

[16]  Jean-Christophe Filliâtre,et al.  Formal Verification of Floating-Point Programs , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[17]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[18]  Patrick Cousot,et al.  Varieties of Static Analyzers: A Comparison with ASTREE , 2007, First Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering (TASE '07).

[19]  Claude Marché,et al.  Multi-Prover Verification of Floating-Point Programs , 2010, IJCAR.

[20]  Toby Walsh,et al.  Principles and Practice of Constraint Programming — CP 2001: 7th International Conference, CP 2001 Paphos, Cyprus, November 26 – December 1, 2001 Proceedings , 2001, Lecture Notes in Computer Science.

[21]  Eric Goubault,et al.  Static Analysis of Numerical Algorithms , 2006, SAS.

[22]  K. Rustan M. Leino,et al.  Efficient weakest preconditions , 2005, Inf. Process. Lett..

[23]  Pascal Van Hentenryck,et al.  CPBPV: a constraint-programming framework for bounded program verification , 2009, Constraints.

[24]  Siegfried M. Rump,et al.  Verification methods: rigorous results using floating-point arithmetic , 2010, Acta Numerica.

[25]  Olivier Lhomme,et al.  Consistency Techniques for Numeric CSPs , 1993, IJCAI.

[26]  Eric Goubault,et al.  Static Analysis of Finite Precision Computations , 2011, VMCAI.

[27]  Arnaud Gotlieb,et al.  Symbolic execution of floating‐point computations , 2006, Softw. Test. Verification Reliab..

[28]  Claude Michel Exact Projection Functions for Floating Point Number Constraints , 2002, ISAIM.

[29]  Gilberto Filé,et al.  Computations, abstractions and constraints in logic programs , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[30]  Daniel Kroening,et al.  Mixed abstractions for floating-point arithmetic , 2009, 2009 Formal Methods in Computer-Aided Design.

[31]  Christian Bessière Principles and Practice of Constraint Programming - CP 2007, 13th International Conference, CP 2007, Providence, RI, USA, September 23-27, 2007, Proceedings , 2007, CP.