Automated Termination Analysis for Haskell: From Term Rewriting to Programming Languages

There are many powerful techniques for automated termination analysis of term rewriting. However, up to now they have hardly been used for real programming languages. We present a new approach which permits the application of existing techniques from term rewriting in order to prove termination of programs in the functional language Haskell. In particular, we show how termination techniques for ordinary rewriting can be used to handle those features of Haskell which are missing in term rewriting (e.g., lazy evaluation, polymorphic types, and higher-order functions). We implemented our results in the termination prover AProVE and successfully evaluated them on existing Haskell-libraries.

[1]  Andreas Abel Termination checking with types , 2004, RAIRO Theor. Informatics Appl..

[2]  Jürgen Giesl,et al.  Automatic Termination Proofs in the Dependency Pair Framework , 2006, IJCAR.

[3]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[4]  Jürgen Giesl,et al.  Termination Analysis for Functional Programs using Term Orderings , 1995, SAS.

[5]  Jürgen Giesl,et al.  Termination of term rewriting using dependency pairs , 2000, Theor. Comput. Sci..

[6]  Neil D. Jones,et al.  The size-change principle for program termination , 2001, POPL '01.

[7]  Luís Pinto,et al.  Type-based termination of recursive definitions , 2004, Mathematical Structures in Computer Science.

[8]  Paul Gastin,et al.  A simple process algebra based on atomic actions with resources , 2004, Mathematical Structures in Computer Science.

[9]  Hélène Kirchner,et al.  Outermost ground termination , 2004, WRLA.

[10]  Hongwei Xi,et al.  Dependent Types for Program Termination Verification , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[11]  Manfred Schmidt-Schauß,et al.  TEA: Automatically Proving Termination of Programs in a Non-strict Higher-Order Functional Language , 1997, SAS.

[12]  Jürgen Giesl,et al.  Automated Termination Analysis for Logic Programs by Term Rewriting , 2006, LOPSTR.

[13]  Jürgen Giesl,et al.  The Dependency Pair Framework: Combining Techniques for Automated Termination Proofs , 2005, LPAR.

[14]  Jürgen Giesl,et al.  Transformation techniques for context-sensitive rewrite systems , 2004, J. Funct. Program..

[15]  Christoph Walther,et al.  On Proving the Termination of Algorithms by Machine , 1994, Artif. Intell..

[16]  Hongwei Xi Dependent Types for Program Termination Verification , 2002, High. Order Symb. Comput..

[17]  Jürgen Giesl,et al.  Proving and Disproving Termination of Higher-Order Functions , 2005, FroCoS.

[18]  David Turner,et al.  Ensuring Termination in ESFP , 2000, J. Univers. Comput. Sci..