Loop Invariant Symbolic Execution for Parallel Programs

  • Stephen F. Siegel
  • Timothy K. Zirkel
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7148)

Abstract

Techniques for verifying program assertions using symbolic execution exhibit a significant limitation: they typically require that (small) bounds be imposed on the number of loop iterations. For sequential programs, there is a way to overcome this limitation using loop invariants. The basic idea is to assign new symbolic constants to the variables modified in the loop body, add the invariant to the path condition, and then explore two paths: one which executes the loop body and checks that the given invariant is inductive, the other which jumps to the location just after the loop. For parallel programs, the situation is more complicated: the invariant may relate the state of multiple processes, these processes may enter and exit the loop at different times, and they may be at different iteration counts at the same time. In this paper, we show how to overcome these obstacles. Specifically, we introduce the notion of collective loop invariant and a symbolic execution technique that uses it to verify assertions in message-passing parallel programs with unbounded loops, generalizing the sequential technique.

Keywords

Parallel Program Message Passing Interface Loop Iteration Path Condition Symbolic Execution 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. In: PASTE 2005, pp. 82–87. ACM, New York (2005)Google Scholar
  2. 2.
    Cadar, C., Dunbar, D., Engler, D.: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI 2008 (2008)Google Scholar
  3. 3.
    Clarke, E., Kroning, D., Lerda, F.: A Tool for Checking ANSI-C Programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  4. 4.
    Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A Practical System for Verifying Concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  5. 5.
    Godefroid, P., Luchaup, D.: Automatic partial loop summarization in dynamic test generation. In: ISSTA 2011. ACM, New York (2011)Google Scholar
  6. 6.
    Goldberg, B.: Translation Validation of Loop Optimizations and Software Pipelining in the TVOC Framework - in Memory of Amir Pnueli. In: Cousot, R., Martel, M. (eds.) SAS 2010. LNCS, vol. 6337, pp. 6–21. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  7. 7.
    Gopalakrishnan, G., Qadeer, S. (eds.): CAV 2011. LNCS, vol. 6806. Springer, Heidelberg (2011)MATHGoogle Scholar
  8. 8.
    Hantler, S.L., King, J.C.: An introduction to proving the correctness of programs. ACM Comput. Surv. 8, 331–353 (1976)MathSciNetCrossRefMATHGoogle Scholar
  9. 9.
    Khurshid, S., Păsăreanu, C.S., Visser, W.: Generalized Symbolic Execution for Model Checking and Testing. In: Garavel, H., Hatcliff, J. (eds.) TACAS 2003. LNCS, vol. 2619, pp. 553–568. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  10. 10.
    King, J.C.: Symbolic execution and program testing. Comm. ACM 19(7), 385–394 (1976)MathSciNetCrossRefMATHGoogle Scholar
  11. 11.
    Lahiri, S., et al.: Poirot: The concurrency sleuth (2011), http://research.microsoft.com/en-us/projects/poirot
  12. 12.
    Lal, A., Qadeer, S., Lahiri, S.: Corral: A whole-program analyzer for Boogie. Tech. Rep. MSR-TR-2011-60, Microsoft Research (May 2011)Google Scholar
  13. 13.
    Păsăreanu, C., Rungta, N.: Symbolic PathFinder: Symbolic execution of Java bytecode. In: ASE 2010. ACM, New York (2010)Google Scholar
  14. 14.
    Păsăreanu, C.S., Visser, W.: Verification of Java Programs Using Symbolic Execution and Invariant Generation. In: Graf, S., Mounier, L. (eds.) SPIN 2004. LNCS, vol. 2989, pp. 164–181. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  15. 15.
    Ramos, D., Engler, D.: Practical, low-effort equivalence verification of real code. In: Gopalakrishnan and Qadeer [7], pp. 669–685Google Scholar
  16. 16.
    Santelices, R., Harrold, M.J.: Exploiting program dependencies for scalable multiple-path symbolic execution. In: ISSTA 2010. ACM, New York (2010)Google Scholar
  17. 17.
    Saxena, P., Poosankam, P., McCamant, S., Song, D.: Loop-extended symbolic execution on binary programs. In: ISSTA 2009, pp. 225–236. ACM, New York (2009), http://doi.acm.org/10.1145/1572272.1572299 Google Scholar
  18. 18.
    Siegel, S.F., Mironova, A., Avrunin, G.S., Clarke, L.A.: Combining symbolic execution with model checking to verify parallel numerical programs. ACM TOSEM 17(2), Article 10, 1–34 (2008)CrossRefGoogle Scholar
  19. 19.
    Siegel, S.F., Zirkel, T.K.: Collective Assertions. In: Jhala, R., Schmidt, D. (eds.) VMCAI 2011. LNCS, vol. 6538, pp. 387–402. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  20. 20.
    Siegel, S.F., Zirkel, T.K.: Symbolic execution for sequential and multi-process programs with unbounded loops. Tech. Rep. UD-CIS-2011/03, Univ. Delaware (2011)Google Scholar
  21. 21.
    Siegel, S.F., Zirkel, T.K.: TASS: The Toolkit for Accurate Scientific Software. Mathematics in Computer Science (2011), Special Issue on the Third International Workshop on Numerical Software Verification, to appearGoogle Scholar
  22. 22.
    Siegel, S.F., et al.: The Toolkit for Accurate Scientific Software (2011), http://vsl.cis.udel.edu/tass
  23. 23.
    Stepp, M., Tate, R., Lerner, S.: Equality-based translation validator for LLVM. In: Gopalakrishnan and Qadeer [7], pp. 737–742Google Scholar
  24. 24.
    Verdoolaege, S., Janssens, G., Bruynooghe, M.: Equivalence Checking of Static Affine Programs Using Widening to Handle Recurrences. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 599–613. Springer, Heidelberg (2009)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Stephen F. Siegel
    • 1
  • Timothy K. Zirkel
    • 1
  1. 1.Verified Software Laboratory, Department of Computer and Information SciencesUniversity of DelawareNewarkUSA

Personalised recommendations