Finding Lexicographic Orders for Termination Proofs in Isabelle/HOL

  • Lukas Bulwahn
  • Alexander Krauss
  • Tobias Nipkow
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4732)


We present a simple method to formally prove termination of recursive functions by searching for lexicographic combinations of size measures. Despite its simplicity, the method turns out to be powerful enough to solve a large majority of termination problems encountered in daily theorem proving practice.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Archive of Formal Proofs,
  2. 2.
    Abel, A.: foetus – termination checker for simple functional programs. Programming Lab. Report (1998)Google Scholar
  3. 3.
    Abel, A., Altenkirch, T.: A predicative analysis of structural recursion. J. Functional Programming 12(1), 1–41 (2002)zbMATHMathSciNetGoogle Scholar
  4. 4.
    Arts, T., Giesl, J.: Termination of term rewriting using dependency pairs. Theor. Comput. Sci. 236(1-2), 133–178 (2000)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Barthe, G., Forest, J., Pichardie, D., Rusu, V.: Defining and reasoning about recursive functions: a practical tool for the Coq proof assistant. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945, Springer, Heidelberg (2006)CrossRefGoogle Scholar
  6. 6.
    Berghofer, S., Wenzel, M.: Inductive datatypes in HOL - lessons learned in formal-logic engineering. In: Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., Théry, L. (eds.) TPHOLs 1999. LNCS, vol. 1690, pp. 19–36. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  7. 7.
    Gordon, M., Melham, T. (eds.): Introduction to HOL: A theorem proving environment for higher order logic. Cambridge University Press, Cambridge (1993)zbMATHGoogle Scholar
  8. 8.
    Harrison, J.: The HOL Light theorem prover,
  9. 9.
    Homeier, P.V., Martin, D.F.: Mechanical verification of total correctness through diversion verification conditions. In: Grundy, J., Newey, M. (eds.) Theorem Proving in Higher Order Logics. LNCS, vol. 1479, pp. 189–206. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  10. 10.
    Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach, June 2000. Kluwer Academic Publishers, Dordrecht (2000)Google Scholar
  11. 11.
    Krauss, A.: Partial recursive functions in higher-order logic. In: Furbach, U., Shankar, N. (eds.) IJCAR 2006. LNCS (LNAI), vol. 4130, pp. 589–603. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  12. 12.
    Krauss, A.: Certified size-change termination. In: Pfenning, F. (ed.) CADE-21. LNCS, vol. 4603, pp. 460–476. Springer, Heidelberg (to appear, 2007)Google Scholar
  13. 13.
    Lee, C.S., Jones, N.D., Ben-Amram, A.M.: The size-change principle for program termination. In: ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 81–92. ACM Press, New York (2001)Google Scholar
  14. 14.
    Manolios, P., Vroon, D.: Termination analysis with calling context graphs. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 401–414. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  15. 15.
    Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)zbMATHGoogle Scholar
  16. 16.
    Owre, S., Rushby, J.M., Shankar, N.: PVS: A prototype verification system. In: Kapur, D. (ed.) Automated Deduction - CADE-11. LNCS, vol. 607, pp. 748–752. Springer, Heidelberg (1992)Google Scholar
  17. 17.
    Pandya, P., Joseph, M.: A Structure-directed Total Correctness Proof Rule for Recursive Procedure Calls. The Computer Journal 29(6), 531–537 (1986)zbMATHCrossRefMathSciNetGoogle Scholar
  18. 18.
    Papadimitriou, C.H.: Computational Complexity. Addison-Wesley, New York (1994)zbMATHGoogle Scholar
  19. 19.
    Podelski, A., Rybalchenko, A.: A complete method for the synthesis of linear ranking functions. In: Steffen, B., Levi, G. (eds.) VMCAI 2004. LNCS, vol. 2937, pp. 239–251. Springer, Heidelberg (2004)Google Scholar
  20. 20.
    Slind, K.: Function definition in Higher-Order Logic. In: von Wright, J., Harrison, J., Grundy, J. (eds.) TPHOLs 1996. LNCS, vol. 1125, pp. 381–397. Springer, Heidelberg (1996)Google Scholar
  21. 21.
    Slind, K.: Reasoning About Terminating Functional Programs. PhD thesis, Institut für Informatik, TU München (1999)Google Scholar
  22. 22.
    Walther, C.: On proving the termination of algorithms by machine. Artif. Intell. 71(1), 101–157 (1994)zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Lukas Bulwahn
    • 1
  • Alexander Krauss
    • 1
  • Tobias Nipkow
    • 1
  1. 1.Technische Universität München, Institut für Informatik 

Personalised recommendations