Skip to main content
Log in

Summarization for termination: no return!

  • Published:
Formal Methods in System Design Aims and scope Submit manuscript

Abstract

We propose a program analysis method for proving termination of recursive programs. The analysis is based on a reduction of termination to two separate problems: reachability of recursive programs, and termination of non-recursive programs. Our reduction works through a program transformation that modifies the call sites and removes return edges. In the new, non-recursive program, a procedure call may non-deterministically enter the procedure body (which means that it will never return) or apply a summary statement.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Alur R, Madhusudan P (2004) Visibly pushdown languages. In: STOC. ACM, New York

    Google Scholar 

  2. Alur R, Etessami K, Madhusudan P (2004) A temporal logic of nested calls and returns. In: TACAS. Springer, Berlin

    Google Scholar 

  3. Alur R, Benedikt M, Etessami K, Godefroid P, Reps TW, Yannakakis M (2005) Analysis of recursive state machines. ACM Trans Program Lang Syst

  4. Alur R, Chaudhuri S, Madhusudan P (2006) A fixpoint calculus for local and global program flows. In: POPL. ACM, New York

    Google Scholar 

  5. Ball T, Rajamani SK (2000) Bebop: A symbolic model checker for Boolean programs. In: SPIN. Springer, Berlin

    Google Scholar 

  6. Ball T, Rajamani SK (2001) Bebop: a path-sensitive interprocedural dataflow engine. In: PASTE

  7. Bouajjani A, Esparza J, Maler O (1997) Reachability analysis of pushdown automata: Application to model-checking. In: CONCUR. Springer, Berlin

    Google Scholar 

  8. Bourdoncle F (1993) Abstract debugging of higher-order imperative languages. In: PLDI. ACM, New York

    Google Scholar 

  9. Bradley A, Manna Z, Sipma H (2005) Termination of polynomial programs. In: VMCAI

  10. Colón M, Sipma H (2002) Practical methods for proving program termination. In: CAV

  11. Cook B, Podelski A, Rybalchenko A (2006) Termination proofs for systems code. In: PLDI. ACM, New York

    Google Scholar 

  12. Dijkstra EW, Scholten CS (1989) Predicate calculus and program semantics. Springer, Berlin

    Google Scholar 

  13. Esparza J, Podelski A (2000) Efficient algorithms for pre* and post* on interprocedural parallel flow graphs. In: POPL. ACM, New York

    Google Scholar 

  14. Esparza J, Schwoon S (2001) A bdd-based model checker for recursive programs. In: CAV. Springer, Berlin

    Google Scholar 

  15. Esparza J, Hansel D, Rossmanith P, Schwoon S (2000) Efficient algorithms for model checking pushdown systems. In: CAV. Springer, Berlin

    Google Scholar 

  16. Gotsman A, Berdine J, Cook B (2006) Interprocedural shape analysis with separated heap abstractions. In: SAS. Springer, Berlin

    Google Scholar 

  17. Gupta A, Henzinger TA, Majumdar R, Rybalchenko A, Xu R-G (2008) Proving non-termination. In: POPL. ACM, New York

    Google Scholar 

  18. Jeannet B, Loginov A, Reps TW, Sagiv S (2004) A relational approach to interprocedural shape analysis. In: SAS. Springer, Berlin

    Google Scholar 

  19. Jhala R, Majumdar R (2007) Interprocedural analysis of asynchronous programs. In: POPL. ACM, New York

    Google Scholar 

  20. Kodumal J, Aiken A (2004) The set constraint/CFL reachability connection in practice. In: PLDI. ACM, New York

    Google Scholar 

  21. Lal A, Reps TW (2006) Improving pushdown system model checking. In: CAV. ACM, New York

    Google Scholar 

  22. Lal A, Touili T, Kidd N, Reps TW (2008) Interprocedural analysis of concurrent programs under a context bound. In: TACAS. Springer, Berlin

    Google Scholar 

  23. Lee CS, Jones ND, Ben-Amram AM (2001) The size-change principle for program termination. In: POPL

  24. Manolios P, Vroon D (2006) Termination analysis with calling context graphs. In: CAV. Springer, Berlin

    Google Scholar 

  25. Podelski A, Rybalchenko A (2004) Transition invariants. In: LICS. IEEE, New York

    Google Scholar 

  26. Podelski A, Rybalchenko A (2005) Transition predicate abstraction and fair termination. In: POPL

  27. Podelski A, Rybalchenko A (2007) ARMC: the logical choice for software model checking with abstraction refinement. In: PADL

  28. Podelski A, Schaefer I, Wagner S (2005) Summaries for total correctness of recursive programs. In: ESOP. Springer, Berlin

    Google Scholar 

  29. Qadeer S, Rajamani SK, Rehof J (2004) Summarizing procedures in concurrent programs. In: POPL. ACM, New York

    Google Scholar 

  30. Reps TW, Horwitz S, Sagiv S (1995) Precise interprocedural dataflow analysis via graph reachability. In: POPL

  31. Reps TW, Schwoon S, Jha S, Melski D (2005) Weighted pushdown systems and their application to interprocedural dataflow analysis. Sci Comput Program

  32. Reps TW, Lal A, Kidd N (2007) Program analysis using weighted pushdown systems. In: FSTTCS. Springer, Berlin

    Google Scholar 

  33. Sharir M, Pnueli A (1981) Two approaches to interprocedural data flow analysis. In: Program Flow Analysis: Theory and Application. Prentice Hall, Englewood Cliffs

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Byron Cook.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Cook, B., Podelski, A. & Rybalchenko, A. Summarization for termination: no return!. Form Methods Syst Des 35, 369–387 (2009). https://doi.org/10.1007/s10703-009-0087-8

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10703-009-0087-8

Keywords

Navigation