2006
DOI: 10.1007/11805618_23
|View full text |Cite
|
Sign up to set email alerts
|

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

Abstract: Abstract. 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… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
49
0

Year Published

2006
2006
2010
2010

Publication Types

Select...
6
1

Relationship

3
4

Authors

Journals

citations
Cited by 46 publications
(49 citation statements)
references
References 15 publications
0
49
0
Order By: Relevance
“…Another related application is concerned with the termination analysis of Haskell programs introduced in [33]. In this work, a restricted form of partial evaluation based on a narrowing-like mechanism is used to encode the lazy strategy of Haskell.…”
Section: Other Applicationsmentioning
confidence: 99%
See 1 more Smart Citation
“…Another related application is concerned with the termination analysis of Haskell programs introduced in [33]. In this work, a restricted form of partial evaluation based on a narrowing-like mechanism is used to encode the lazy strategy of Haskell.…”
Section: Other Applicationsmentioning
confidence: 99%
“…We note that, although current functional logic languages like Curry [27] and Toy [50] consider some narrowing strategy (i.e., some variant of lazy narrowing [20,54,59] like needed narrowing [8]), our termination analysis techniques provide a sufficient condition for the termination of these programs. Moreover, it would not be difficult to extend our approach following the ideas in [33] in order to get more accurate results. Termination analysis is also essential for ensuring the finiteness of partial evaluation [44].…”
Section: Introductionmentioning
confidence: 99%
“…This is not a severe restriction as innermost termination is equivalent to full termination for non-overlapping TRSs and moreover, many programming languages already have an innermost evaluation strategy. Even for lazy languages like Haskell, with the translation of programs to TRSs in [14], it suffices to show innermost termination. 7 Of course, one could easily include additional junctors like ∨ or ¬ in BoolOp.…”
Section: Definition 1 (Itrs)mentioning
confidence: 99%
“…But the desired interpretation SUM Pol = x 1 − x 2 cannot be used, because in DP (8), the defined symbol + occurs in the second argument of SUM which is not a Pol -increasing position. 14 To avoid the need for considering infinitely many rules in the reduction pair processor and in order to handle ITRSs where defined symbols like + occur on non-increasing positions, we will now restrict ourselves to so-called Iinterpretations where we fix the max-polynomials that are associated with the pre-defined symbols from Z ∪ ArithOp. The definition of I-interpretations guarantees that we have ℓ ≈ Pol r for all rules ℓ → r ∈ PD where root(ℓ) ∈ {+, −, * }.…”
Section: Integer Dependency Pair Frameworkmentioning
confidence: 99%
See 1 more Smart Citation