Refining Abstract Interpretation Based Value Analysis with Constraint Programming Techniques

  • Olivier Ponsini
  • Claude Michel
  • Michel Rueher
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7514)


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.


Program verification Floating-point computation Constraint solvers over floating-point numbers Constraint solvers over real number intervals Abstract interpretation-based approximation 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Ayad, A., Marché, C.: Multi-Prover Verification of Floating-Point Programs. In: Giesl, J., Hähnle, R. (eds.) IJCAR 2010. LNCS, vol. 6173, pp. 127–141. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  2. 2.
    Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. Information Processing Letters 93(6), 281–288 (2005)MathSciNetCrossRefGoogle Scholar
  3. 3.
    Boldo, S., Filliâtre, J.C.: Formal verification of floating-point programs. In: 18th IEEE Symposium on Computer Arithmetic, pp. 187–194. IEEE (2007)Google Scholar
  4. 4.
    Botella, B., Gotlieb, A., Michel, C.: Symbolic execution of floating-point computations. Software Testing, Verification and Reliability 16(2), 97–121 (2006)CrossRefGoogle Scholar
  5. 5.
    Brillout, A., Kroening, D., Wahl, T.: Mixed abstractions for floating-point arithmetic. In: 9th International Conference on Formal Methods in Computer-Aided Design, pp. 69–76. IEEE (2009)Google Scholar
  6. 6.
    Codognet, P., Filé, G.: Computations, abstractions and constraints in logic programs. In: International Conference on Computer Languages (ICCL 1992), pp. 155–164. IEEE (1992)Google Scholar
  7. 7.
    Collavizza, H., Rueher, M., Hentenryck, P.V.: A constraint-programming framework for bounded program verification. Constraints Journal 15(2), 238–264 (2010)CrossRefzbMATHGoogle Scholar
  8. 8.
    Cousot, P., Cousot, R., Feret, J., Miné, A., Mauborgne, L., Monniaux, D., Rival, X.: Varieties of static analyzers: A comparison with ASTRÉE. In: 1st Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering, pp. 3–20. IEEE (2007)Google Scholar
  9. 9.
    Delmas, D., Goubault, E., Putot, S., Souyris, J., Tekkal, K., Védrine, F.: Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software. In: Alpuente, M., Cook, B., Joubert, C. (eds.) FMICS 2009. LNCS, vol. 5825, pp. 53–69. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  10. 10.
    Denmat, T., Gotlieb, A., Ducassé, M.: An Abstract Interpretation Based Combinator for Modelling While Loops in Constraint Programming. In: Bessière, C. (ed.) CP 2007. LNCS, vol. 4741, pp. 241–255. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  11. 11.
    de Dinechin, F., Lauter, C.Q., Melquiond, G.: Certifying the floating-point implementation of an elementary function using Gappa. IEEE Transactions on Computers 60(2), 242–253 (2011)CrossRefGoogle Scholar
  12. 12.
    D’Silva, V., Haller, L., Kroening, D., Tautschnig, M.: Numeric Bounds Analysis with Conflict-Driven Learning. In: Flanagan, C., König, B. (eds.) TACAS 2012. LNCS, vol. 7214, pp. 48–63. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  13. 13.
    Ghorbal, K., Goubault, E., Putot, S.: A Logical Product Approach to Zonotope Intersection. In: Touili, T., Cook, B., Jackson, P. (eds.) CAV 2010. LNCS, vol. 6174, pp. 212–226. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  14. 14.
    Goldberg, D.: What every computer scientist should know about floating point arithmetic. ACM Computing Surveys 23(1), 5–48 (1991)CrossRefGoogle Scholar
  15. 15.
    Goubault, E., Putot, S.: Static Analysis of Numerical Algorithms. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 18–34. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  16. 16.
    Goubault, E., Putot, S.: Static Analysis of Finite Precision Computations. In: Jhala, R., Schmidt, D. (eds.) VMCAI 2011. LNCS, vol. 6538, pp. 232–247. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  17. 17.
    Granvilliers, L., Benhamou, F.: Algorithm 852: RealPaver: an interval solver using constraint satisfaction techniques. ACM Transactions on Mathematical Software 32(1), 138–156 (2006)MathSciNetCrossRefGoogle Scholar
  18. 18.
    Harrison, J.: A Machine-Checked Theory of Floating Point Arithmetic. In: Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., Théry, L. (eds.) TPHOLs 1999. LNCS, vol. 1690, pp. 113–130. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  19. 19.
    Lhomme, O.: Consistency techniques for numeric CSPs. In: 13th International Joint Conference on Artificial Intelligence, pp. 232–238 (1993)Google Scholar
  20. 20.
    Marre, B., Michel, C.: Improving the Floating Point Addition and Subtraction Constraints. In: Cohen, D. (ed.) CP 2010. LNCS, vol. 6308, pp. 360–367. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  21. 21.
    Michel, C.: Exact projection functions for floating-point number constraints. In: 7th International Symposium on Artificial Intelligence and Mathematics (2002)Google Scholar
  22. 22.
    Michel, C., Rueher, M., Lebbah, Y.: Solving Constraints over Floating-Point Numbers. In: Walsh, T. (ed.) CP 2001. LNCS, vol. 2239, pp. 524–538. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  23. 23.
    Pelleau, M., Truchet, C., Benhamou, F.: Octagonal Domains for Continuous Constraints. In: Lee, J. (ed.) CP 2011. LNCS, vol. 6876, pp. 706–720. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  24. 24.
    Rump, S.M.: Verification methods: Rigorous results using floating-point arithmetic. Acta Numerica 19, 287–449 (2010)MathSciNetCrossRefzbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Olivier Ponsini
    • 1
  • Claude Michel
    • 1
  • Michel Rueher
    • 1
  1. 1.University of Nice–Sophia Antipolis, I3S/CNRSSophia Antipolis CedexFrance

Personalised recommendations