Term Rewriting and Applications

Volume 4098 of the series Lecture Notes in Computer Science pp 297-312

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

  • Jürgen GieslAffiliated withRWTH Aachen, LuFG Informatik 2
  • , Stephan SwiderskiAffiliated withRWTH Aachen, LuFG Informatik 2
  • , Peter Schneider-KampAffiliated withRWTH Aachen, LuFG Informatik 2
  • , René ThiemannAffiliated withRWTH Aachen, LuFG Informatik 2

* Final gross prices may vary according to local VAT.

Get Access


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.