Abstraction Refinement of Linear Programs with Arrays

  • Alessandro Armando
  • Massimo Benerecetti
  • Jacopo Mantovani
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4424)


In previous work we presented a model checking procedure for linear programs, i.e. programs in which variables range over a numeric domain and expressions involve linear combinations of the variables. In this paper we lift our model checking procedure for linear programs to deal with arrays via iterative abstraction refinement. While most approaches are based on predicate abstraction and therefore the abstraction is relative to sets of predicates, in our approach the abstraction is relative to sets of variables and array indexes, and the abstract program can express complex correlations between program variables and array elements. Thus, while arrays are problematic for most of the approaches based on predicate abstraction, our approach treats them in a precise way.This is an important feature as arrays are ubiquitous in programming. We provide a detailed account of both the abstraction and the refinement processes, discuss their implementation in the eureka tool, and present experimental results that confirm the effectiveness of our approach on a number of programs of interest.


Model Check Array Element Program Variable Gray Code Execution Trace 


  1. 1.
    Armando, A., Castellini, C., Mantovani, J.: Software model checking using linear constraints. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, Springer, Heidelberg (2004)Google Scholar
  2. 2.
    Armando, A., Benerecetti, M., Mantovani, J.: Model checking linear programs with arrays. In: SoftMC’05. ENTCS, vol. 144, Elsevier, Amsterdam (2005)Google Scholar
  3. 3.
    Ball, T., Rajamani, S.K.: Automatically validating temporal safety properties of interfaces. In: Dwyer, M.B. (ed.) Model Checking Software. LNCS, vol. 2057, pp. 103–122. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  4. 4.
    Henzinger, T., et al.: Software Verification with Blast. In: Ball, T., Rajamani, S.K. (eds.) Model Checking Software. LNCS, vol. 2648, pp. 235–239. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  5. 5.
    Henzinger, T.A., et al.: Abstractions from proofs. In: POPL’04, Venice, Italy, pp. 232–244. ACM Press, New York (2004), doi:10.1145/964001.964021Google Scholar
  6. 6.
    Jhala, R., McMillan, K.L.: A practical and complete approach to predicate refinement. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006 and ETAPS 2006. LNCS, vol. 3920, pp. 459–473. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  7. 7.
    Clarke, E., et al.: SATABS: SAT-Based Predicate Abstraction for ANSI-C. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 570–574. Springer, Heidelberg (2005)Google Scholar
  8. 8.
    Kroening, D., Clarke, E., Yorav, K.: Behavioral Consistency of C and Verilog Programs Using Bounded Model Checking. In: Proc. of DAC 2003, pp. 368–371. ACM Press, New York (2003)Google Scholar
  9. 9.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading (1986)Google Scholar
  10. 10.
    Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: Proc. of POPL ’95, San Francisco, California, United States, pp. 49–61. ACM Press, New York (1995)CrossRefGoogle Scholar
  11. 11.
    Bagnara, R., et al.: Possibly not closed convex polyhedra and the Parma Polyhedra Library. In: Hermenegildo, M.V., Puebla, G. (eds.) SAS 2002. LNCS, vol. 2477, pp. 213–229. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  12. 12.
    Berezin, S., Barrett, C.W.: CVC Lite: A New Implementation of the Cooperating Validity Checker Category B. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 515–518. Springer, Heidelberg (2004)Google Scholar
  13. 13.
    Black, P.E.: Gray code, in dictionary of algorithms and data structures (2005), http://www.nist.gov/dads/HTML/graycode.html
  14. 14.
    Henzinger, T.A., et al.: Lazy abstraction. In: POPL 2002, pp. 58–70 (2002)Google Scholar

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  • Alessandro Armando
    • 1
  • Massimo Benerecetti
    • 2
  • Jacopo Mantovani
    • 1
  1. 1.AI-Lab, DIST, Università di GenovaItaly
  2. 2.Dip. di Scienze Fisiche, Università di Napoli “Federico II”Italy

Personalised recommendations