Predicate Abstraction of Programs with Non-linear Computation

  • Songtao Xia
  • Ben Di Vito
  • Cesar Munoz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4218)

Abstract

Verification of programs relies on reasoning about the computations they perform. In engineering programs, many of these computations are non-linear. Although predicate abstraction enables model checking of programs with large state spaces, the decision procedures that currently support predicate abstraction are not able to handle such non-linear computations. In this paper, we propose an approach to model checking a class of data-flow properties for engineering programs that contain non-linear products and transcendental functions. The novelty of our approach is the integration of interval constraint solving techniques into the automated predicate discovery/predicate abstraction process, which extends the expressive power of predicate abstraction-based model checking. Using this approach, we construct a prototype model checker for C programs called VISA (Verification of Industrial-Strength Applications). VISA is built on top of Berkeley’s BLAST and University of Nantes’ Realpaver. We successfully apply VISA to scientific computation libraries and avionics applications to verify the absence of certain runtime arithmetic errors.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Neumaier, A.: Interval Methods for System of Equations. Cambridge University Press, Cambridge (1990)Google Scholar
  2. 2.
    Alefeld, G., Herzberger, J.: Introduction to Interval Computations. Academic Press, London (1983)MATHGoogle Scholar
  3. 3.
    Asarin, E., Dang, T., Maler, O.: The d/dt tool for verification of hybrid systems. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 365–370. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  4. 4.
    Ball, T.: Formalizing counter-example driven predicate refinement with weakest preconditions. Technical Report MSR-TR-2004-134, Microsoft Research (2004)Google Scholar
  5. 5.
    Ball, T., Cook, B., Lahiri, S.K., Zhang, L.: Zapato: Automatic theorem proving for predicate abstraction refinement. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 457–461. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  6. 6.
    Ball, T., Majumdar, R., Millstein, T., Rajamani, S.: Automatic Predicate Abstraction of C Programs. In: Proceedings of Programming Languages Design and Implementation (PLDI) 2001, pp. 268–283. ACM Press, New York (2001)Google Scholar
  7. 7.
    Ball, T., Rajamani, S.: Automatically Validating Temporal Safety Properties of Interfaces. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 103–122. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  8. 8.
    Barret, C., Tinelli, C.: Theory and practice of decision procedures for combinations of theories. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, Springer, Heidelberg (2005)Google Scholar
  9. 9.
    Barrett, C., Berezin, S.: CVC Lite: A new implementation of the cooperating validity checker. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, Springer, Heidelberg (2004)CrossRefGoogle Scholar
  10. 10.
    Bensalem, S., Lakhnech, Y., Owre, S.: Computing Abstractions of Infinite State Systems Compositionally and Automatically. In: Y. Vardi, M. (ed.) CAV 1998. LNCS, vol. 1427, pp. 319–331. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  11. 11.
    Beyer, D., Chlipala, A.J., Henzinger, T.A., Jhala, R., Majumdar, R.: The BLAST query language for software verification. In: Giacobazzi, R. (ed.) SAS 2004. LNCS, vol. 3148, pp. 2–18. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  12. 12.
    Clarke, E., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, Springer, Heidelberg (2000)CrossRefGoogle Scholar
  13. 13.
    Collins, G.: Quantifier elimination for real closed fields by cylindrical algebraic decomposition. In: Brakhage, H. (ed.) GI-Fachtagung 1975. LNCS, vol. 33, pp. 134–183. Springer, Heidelberg (1975)Google Scholar
  14. 14.
    Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., Rival, X.: The ASTREE analyser. In: Proceedings of The European Symposium on Programming, pp. 21–30 (2005)Google Scholar
  15. 15.
    Das, S., Dill, D., Park, S.J.: Experience with Predicate Abstraction. In: Halbwachs, N., Peled, D.A. (eds.) CAV 1999. LNCS, vol. 1633, pp. 160–171. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  16. 16.
    Das, S., Dill, D.L.: Counter-example based predicate discovery in predicate abstraction. In: Proceedings of Conference on Formal Methods in Computer-Aided Design, Portland, Oregon (November 2002)Google Scholar
  17. 17.
    Detlefs, D., Nelson, G., Saxe, J.: Simplify: A theorem prover for program checking (2003)Google Scholar
  18. 18.
    Dowek, G., Geser, A., Muñoz, C.: Tactical conflict detection and resolution in a 3-D airspace. In: Proceedings of the 4th USA/Europe Air Traffic Management R&DSeminar, ATM 2001, Santa Fe, New Mexico, 2001. A long version appears as report NASA/CR-2001-210853 ICASE Report No 2001-7Google Scholar
  19. 19.
    Dwyer, M., Hatcliff, J., Joehanes, R., Laubach, S., Pasareanu, C., Visser, R., Zheng, H.: Tool-supported Program Abstraction for Finite-state VerificationGoogle Scholar
  20. 20.
    Filliâtre, J.-C., Owre, S., Rueß, H., Shankar, N.: ICS: Integrated Canonizer and Solver. In: Berry, G., Comon, H., Finkel, A. (eds.) CAV 2001. LNCS, vol. 2102, pp. 246–249. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  21. 21.
    Graf, S., Saidi, H.: Construction of Abstract State Graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)Google Scholar
  22. 22.
    Granvilliers, L.: On the combination of interval constraint solvers. Reliable Computing 7(6), 467–483 (2001)MATHCrossRefMathSciNetGoogle Scholar
  23. 23.
    Harvey, W., Stuckey, P.J.: Constraint representation for propagation. In: Maher, M.J., Puget, J.-F. (eds.) CP 1998. LNCS, vol. 1520, pp. 235–245. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  24. 24.
    Hentenryck, P.V., Michel, L., Deville, Y.: Numerica, A Modeling Language for Global Optimization. MIT Press, Cambridge (1997)Google Scholar
  25. 25.
    Henzinger, T., Jhala, R., Majumdar, R., McMillan, K.: Abstraction from Proofs. In: Proceedings of ACM SIGPLAN-SIGACT Conference on Principles of Programming Languages (POPL), pp. 232–244 (2004)Google Scholar
  26. 26.
    Henzinger, T., Jhala, R., Majumdar, R., Necula, G., Sutre, G., Weimer, W.: Temporal-Safety Proofs for Systems Code. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 526–538. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  27. 27.
    Yamamura, K., Kawata, H., Tokue, A.: Interval analysis using linear programming. In: Proceedings of BIT 38, pp. 188–201 (1998)Google Scholar
  28. 28.
    Granvilliers, L., Benhamou, F.: Realpaver: An interval solver using constraint satisfaction techniques. ACM Transactions on Mathematical Software (accepted for publication)Google Scholar
  29. 29.
    McMillan, K.L.: Craig interpolation and reachability analysis. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, p. 336. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  30. 30.
    McPeak, S., Necula, G.C., Rahul, S.P., Weimer, W.: CIL: Intermediate Languages and Tools for C Program Analysis and Transformation. In: Horspool, R.N. (ed.) CC 2002 and ETAPS 2002. LNCS, vol. 2304, Springer, Heidelberg (2002)Google Scholar
  31. 31.
    Moore, R.: Interval Analysis. Prentice-Hall, Englewood Cliffs (1966)MATHGoogle Scholar
  32. 32.
    Owre, S., Rushby, J., Shankar, N.: Pvs: A prototype verification system (1992)Google Scholar
  33. 33.
    Ratschan, S.: Slides, available at http://www.mpi-sb.mpg.de/~ratschan/decproc1.pdf
  34. 34.
    Ratschan, S.: Continuous first-order constraint satisfaction. In: Proceedings of Artificial Intelligence and Symbolic Computation. LNCS, Springer, Heidelberg (2002)Google Scholar
  35. 35.
    Rudin, W.: Principles of Mathematical Analysis, 3rd edn., ch. 10. McGraw-Hill, New York (1976)MATHGoogle Scholar
  36. 36.
    Saidi, H., Shankar, N.: Abstract and Model-check While You Prove. In: Halbwachs, N., Peled, D.A. (eds.) CAV 1999. LNCS, vol. 1633, pp. 443–454. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  37. 37.
    Schmidt, D.: Data Flow Analysis is Model Checking of Abstract Interpretation. In: Proceedings of SIGPLAN Symposium on Principles of Programming Languages (POPL 1998) (1998)Google Scholar
  38. 38.
    Tarski, A.: Logic, Semantics, Metamathematics, papers from 1923 to 1938. Hackett Publishing Company (1983) English Version, original in PolishGoogle Scholar
  39. 39.
    Tiwari, A.: An algebraic approach for the unsatisfiability of nonlinear constraints. In: Ong, L. (ed.) CSL 2005. LNCS, vol. 3634, pp. 248–262. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  40. 40.
    Visser, W., Park, S., Penix, J.: Applying Predicate Abstraction to Model Check Object-oriented Programs. In: Proceedings of the 33rd ACM SIGSOFT Workshop on Formal Methods in Software Practice,Google Scholar
  41. 41.
    Adams, W., Loustaunau, P.: An Introduction to Gröbner Bases. American Mathematical Society (1994)Google Scholar
  42. 42.
    Wallace, M., Novello, S., Schimpf, J.: ECLiPSe: A platform for constraint logic programming (1997)Google Scholar
  43. 43.
    Xia, S., Vito, B.D., Muñoz, C.: Automated test case generations for non-linear engineering programs. In: Proceedings of the Nineenth International Conference on Automated Software Engineering (2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Songtao Xia
    • 1
  • Ben Di Vito
    • 2
  • Cesar Munoz
    • 3
  1. 1.NASA Postdoc at NASA Langley Research CenterHampton
  2. 2.NASA Langley Research CenterHampton
  3. 3.National Institute of AerospaceHampton

Personalised recommendations