Abstract
We present a new approach for automatic termination analysis of functional programs. Several methods have been presented which try to find a well-founded ordering such that the arguments in the recursive calls are smaller than the corresponding inputs. However, previously developed approaches for automated termination analysis often disregard the conditions under which the recursive calls are evaluated. Hence, the existing methods fail for an important class of algorithms where the necessary information for proving termination is ‘hidden’ in the conditions. In this paper we develop the inductive evaluation method which analyzes the auxiliary functions occurring in the conditions of the recursive calls. We also discuss an extension of our method to partial functions in order to determine their domains automatically. The proposed technique proved successful for termination analysis of numerous algorithms in functional as well as imperative programming languages.
Preview
Unable to display preview. Download preview PDF.
References
T. Arts and J. Giesl. Proving innermost normalisation automatically. In Proc. RTA-97, Sitges, Spain, LNCS 1232, 1997.
R. S. Boyer and J S. Moore. A computational logic. Academic Press, 1979.
A. Bouhoula and M. Rusinowitch. Implicit induction in conditional theories. Journal of Automated Reasoning, 14:189–235, 1995.
J. Brauburger and J. Giesl. Termination analysis for partial functions. In Proc. 3rd Int. Static Analysis Symp., Aachen, Germany, LNCS 1145, 1996. Extended version appeared as Report IBN-96-33, TU Darmstadt, 1996.
J. Brauburger and J. Giesl. Termination analysis with inductive evaluation. Technical Report IBN-98-47, TU Darmstadt, Germany, 1998.
J. Brauburger. Automatic termination analysis for partial functions using polynomial orderings. In Proc. 4th SAS, Paris, France, LNCS 1302, 1997.
A. Bundy, F. van Harmelen, J. Hesketh, A. Smaill, and A. Stevens. A rational reconstruction and extension of recursion analysis. In Proc. IJCAI '89, Detroit, USA, 1989.
N. Dershowitz. Termination of rewriting. J. Symb. Comp., 3:69–115, 1987.
J. Giesl. Generating polynomial orderings for termination proofs. In Proc. RTA-95, Kaiserslautern, Germany, LNCS 914, 1995.
J. Giesl. Automatisierung von Terminierungsbeweisen für rekursiv definierte Algorithmen. PhD thesis, Infix-Verlag, St. Augustin, Germany, 1995.
J. Giesl. Termination analysis for functional programs using term orderings. In Proc. 2nd Int. Static Analysis Symp., Glasgow, UK, LNCS 983, 1995.
J. Giesl. Termination of nested and mutually recursive algorithms. Journal of Automated Reasoning, 19:1–29, 1997.
J. Giesl, C. Walther, and J. Brauburger. Termination analysis for functional programs. In W. Bibel and P. Schmitt, editors, Automated Deduction — A Basis for Applications, vol. 3. Kluwer Academic Publishers, 1998.
D. Gries. The science of programming. Springer-Verlag, New York, 1981.
P. Henderson. Functional programming. Prentice-Hall, London, 1980.
D. Hutter and C. Sengler. INKA: The next generation. In Proc. CADE-13, New Brunswick, USA, LNAI 1104, 1996.
D. Kapur and H. Zhang. An overview of Rewrite Rule Laboratory (RRL). J. Computer Math. Appl., 29:91–114, 1995.
D.S. Lankford. On proving term rewriting systems are noetherian. Memo MTP-3, Math. Dept., Louisiana Tech. Univ., Ruston, USA, 1979.
F. Nielson and H. R. Nielson. Operational semantics of termination types. Nordic Journal of Computing, 3(2):144–187, 1996.
S. E. Panitz and M. Schmidt-Schau\. TEA: Automatically proving termination of programs in a non-strict higher-order functional language. In Proc. 4th Int. Static Analysis Symp., Paris, France, LNCS 1302, 1997.
L. Plümer. Termination proofs for logic programs. LNAI 446, 1990.
M. Protzen. Patching faulty conjectures. In Proc. CADE-13, LNAI 1104, New Brunswick, USA, 1996.
D. De Schreye and S. Decorte. Termination of logic programs: The never-ending story. Journal of Logic Programming, 19/20:199–260, 1994.
C. Sengler. Termination of algorithms over non-freely generated data types. In Proc. CADE-13, New Brunswick, USA, LNAI 1104, 1996.
J. Steinbach. Generating polynomial orderings. IPL, 49:85–93, 1994.
J. Steinbach. Simplification orderings: History of results. Fundamenta Informaticae, 24:47–87, 1995.
J. D. Ullman and A. van Gelder. Efficient tests for top-down termination of logical rules. Journal of the ACM, 35(2):345–373, 1988.
C. Walther. Mathematical induction. In D. M. Gabbay, C. J. Hogger, and J. A. Robinson, editors, Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 2. Oxford University Press, 1994.
C. Walther. On proving the termination of algorithms by machine. Artificial Intelligence, 71(1):101–157, 1994.
H. Zhang, D. Kapur, and M. S. Krishnamoorthy. A mechanizable induction principle for equational specifications. In Proc. CADE-9, Argonne, USA, LNCS 310, 1988.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Brauburger, J., Giesl, J. (1998). Termination analysis by inductive evaluation. In: Kirchner, C., Kirchner, H. (eds) Automated Deduction — CADE-15. CADE 1998. Lecture Notes in Computer Science, vol 1421. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0054264
Download citation
DOI: https://doi.org/10.1007/BFb0054264
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64675-4
Online ISBN: 978-3-540-69110-5
eBook Packages: Springer Book Archive