Invariant Checking for Programs with Procedure Calls

  • Guillem Godoy
  • Ashish Tiwari
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5673)

Abstract

Invariants are a crucial component of the overall correctness of programs. We explore the theoretical limits for doing automatic invariant checking and show that invariant checking is decidable for a large class of programs that includes some recursive programs. The proof uses known results like the decidability of Presburger arithmetic and the semilinearity of the Parikh image of a regular language. Removing some of the restrictions on the program model leads to undecidability of the invariant checking problem.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Bouajjani, A., Esparza, J., Touili, T.: A generic approach to the static analysis of concurrent programs with procedures. In: POPL, pp. 62–73 (2003)Google Scholar
  2. 2.
    Comon, H., Delor, C.: Equational formulae with membership constraints. Inf. Comput. 112, 167–216 (1994)MathSciNetCrossRefMATHGoogle Scholar
  3. 3.
    Esparza, J., Hansel, D., Rossmanith, P., Schwoon, S.: Efficient algorithm for model checking pushdown systems. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  4. 4.
    Esparza, J., Knoop, J.: An automata-theoretic approach to interprocedural data-flow analysis. In: Thomas, W. (ed.) FOSSACS 1999. LNCS, vol. 1578, pp. 14–30. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  5. 5.
    Gascon, A., Godoy, G., Schmidt-Schauß, M., Tiwari, A.: Context unification with one context variable. J. of symbolic computation (submitted, 2009)Google Scholar
  6. 6.
    Gulwani, S., Necula, G.C.: A polynomial-time algorithm for global value numbering. In: Giacobazzi, R. (ed.) SAS 2004. LNCS, vol. 3148, pp. 212–227. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    Gulwani, S., Tiwari, A.: Assertion checking over combined abstraction of linear arithmetic & uninterpreted functions. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 279–293. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  8. 8.
    Gulwani, S., Tiwari, A.: Assertion checking unified. In: Cook, B., Podelski, A. (eds.) VMCAI 2007. LNCS, vol. 4349, pp. 363–377. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  9. 9.
    Gulwani, S., Tiwari, A.: Computing procedure summaries for interprocedural analysis. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 253–267. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  10. 10.
    Müller-Olm, M., Petter, M., Seidl, H.: Interprocedurally analyzing polynomial identities. In: Durand, B., Thomas, W. (eds.) STACS 2006. LNCS, vol. 3884, pp. 50–67. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  11. 11.
    Müller-Olm, M., Rüthing, O., Seidl, H.: Checking Herbrand equalities and beyond. In: Cousot, R. (ed.) VMCAI 2005. LNCS, vol. 3385, pp. 79–96. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  12. 12.
    Müller-Olm, M., Seidl, H.: A note on Karr’s algorithm. In: 31st ICALP, pp. 1016–1028 (2004)Google Scholar
  13. 13.
    Müller-Olm, M., Seidl, H.: Precise interprocedural analysis through linear algebra. In: 31st ACM Symposium on POPL, January 2004, pp. 330–341 (2004)Google Scholar
  14. 14.
    Müller-Olm, M., Seidl, H., Steffen, B.: Interprocedural Herbrand equalities. In: Sagiv, M. (ed.) ESOP 2005. LNCS, vol. 3444, pp. 31–45. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  15. 15.
    Parikh, R.J.: On context-free languages. J. of the ACM 13(4), 570–581 (1966)MathSciNetCrossRefMATHGoogle Scholar
  16. 16.
    Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: 22nd ACM Symposium on POPL, pp. 49–61 (1995)Google Scholar
  17. 17.
    Seidl, H., Schwentick, T., Muscholl, A., Habermehl, P.: Counting in trees for free. In: Díaz, J., Karhumäki, J., Lepistö, A., Sannella, D. (eds.) ICALP 2004. LNCS, vol. 3142, pp. 1136–1149. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  18. 18.
    Tiwari, A., Gulwani, S.: Logical interpretation: Static program analysis using theorem proving. In: Pfenning, F. (ed.) CADE 2007. LNCS, vol. 4603, pp. 147–166. Springer, Heidelberg (2007)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Guillem Godoy
    • 1
  • Ashish Tiwari
    • 2
  1. 1.LSI DepartmentTechnical University of CataloniaBarcelonaSpain
  2. 2.SRI InternationalMenlo ParkU.S.A.

Personalised recommendations