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.
Similar content being viewed by others
References
Alur R, Madhusudan P (2004) Visibly pushdown languages. In: STOC. ACM, New York
Alur R, Etessami K, Madhusudan P (2004) A temporal logic of nested calls and returns. In: TACAS. Springer, Berlin
Alur R, Benedikt M, Etessami K, Godefroid P, Reps TW, Yannakakis M (2005) Analysis of recursive state machines. ACM Trans Program Lang Syst
Alur R, Chaudhuri S, Madhusudan P (2006) A fixpoint calculus for local and global program flows. In: POPL. ACM, New York
Ball T, Rajamani SK (2000) Bebop: A symbolic model checker for Boolean programs. In: SPIN. Springer, Berlin
Ball T, Rajamani SK (2001) Bebop: a path-sensitive interprocedural dataflow engine. In: PASTE
Bouajjani A, Esparza J, Maler O (1997) Reachability analysis of pushdown automata: Application to model-checking. In: CONCUR. Springer, Berlin
Bourdoncle F (1993) Abstract debugging of higher-order imperative languages. In: PLDI. ACM, New York
Bradley A, Manna Z, Sipma H (2005) Termination of polynomial programs. In: VMCAI
Colón M, Sipma H (2002) Practical methods for proving program termination. In: CAV
Cook B, Podelski A, Rybalchenko A (2006) Termination proofs for systems code. In: PLDI. ACM, New York
Dijkstra EW, Scholten CS (1989) Predicate calculus and program semantics. Springer, Berlin
Esparza J, Podelski A (2000) Efficient algorithms for pre* and post* on interprocedural parallel flow graphs. In: POPL. ACM, New York
Esparza J, Schwoon S (2001) A bdd-based model checker for recursive programs. In: CAV. Springer, Berlin
Esparza J, Hansel D, Rossmanith P, Schwoon S (2000) Efficient algorithms for model checking pushdown systems. In: CAV. Springer, Berlin
Gotsman A, Berdine J, Cook B (2006) Interprocedural shape analysis with separated heap abstractions. In: SAS. Springer, Berlin
Gupta A, Henzinger TA, Majumdar R, Rybalchenko A, Xu R-G (2008) Proving non-termination. In: POPL. ACM, New York
Jeannet B, Loginov A, Reps TW, Sagiv S (2004) A relational approach to interprocedural shape analysis. In: SAS. Springer, Berlin
Jhala R, Majumdar R (2007) Interprocedural analysis of asynchronous programs. In: POPL. ACM, New York
Kodumal J, Aiken A (2004) The set constraint/CFL reachability connection in practice. In: PLDI. ACM, New York
Lal A, Reps TW (2006) Improving pushdown system model checking. In: CAV. ACM, New York
Lal A, Touili T, Kidd N, Reps TW (2008) Interprocedural analysis of concurrent programs under a context bound. In: TACAS. Springer, Berlin
Lee CS, Jones ND, Ben-Amram AM (2001) The size-change principle for program termination. In: POPL
Manolios P, Vroon D (2006) Termination analysis with calling context graphs. In: CAV. Springer, Berlin
Podelski A, Rybalchenko A (2004) Transition invariants. In: LICS. IEEE, New York
Podelski A, Rybalchenko A (2005) Transition predicate abstraction and fair termination. In: POPL
Podelski A, Rybalchenko A (2007) ARMC: the logical choice for software model checking with abstraction refinement. In: PADL
Podelski A, Schaefer I, Wagner S (2005) Summaries for total correctness of recursive programs. In: ESOP. Springer, Berlin
Qadeer S, Rajamani SK, Rehof J (2004) Summarizing procedures in concurrent programs. In: POPL. ACM, New York
Reps TW, Horwitz S, Sagiv S (1995) Precise interprocedural dataflow analysis via graph reachability. In: POPL
Reps TW, Schwoon S, Jha S, Melski D (2005) Weighted pushdown systems and their application to interprocedural dataflow analysis. Sci Comput Program
Reps TW, Lal A, Kidd N (2007) Program analysis using weighted pushdown systems. In: FSTTCS. Springer, Berlin
Sharir M, Pnueli A (1981) Two approaches to interprocedural data flow analysis. In: Program Flow Analysis: Theory and Application. Prentice Hall, Englewood Cliffs
Author information
Authors and Affiliations
Corresponding author
Rights 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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10703-009-0087-8