2002
DOI: 10.1007/3-540-45657-0_36
|View full text |Cite
|
Sign up to set email alerts
|

Practical Methods for Proving Program Termination

Abstract: We present two algorithms to prove termination of programs by synthesizing linear ranking functions. The first uses an invariant generator based on iterative forward propagation with widening and extracts ranking functions from the generated invariants by manipulating polyhedral cones. It is capable of finding subtle ranking functions which are linear combinations of many program variables, but is limited to programs with few variables. The second, more heuristic, algorithm targets the class of structured prog… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
94
0

Year Published

2005
2005
2009
2009

Publication Types

Select...
8

Relationship

1
7

Authors

Journals

citations
Cited by 110 publications
(94 citation statements)
references
References 13 publications
0
94
0
Order By: Relevance
“…Here, sum(x, y) computes x i=y i and log(x, y) computes ⌊log y (x)⌋. 6 In this paper, we restrict ourselves to innermost rewriting for simplicity. 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.…”
Section: Definition 1 (Itrs)mentioning
confidence: 99%
See 1 more Smart Citation
“…Here, sum(x, y) computes x i=y i and log(x, y) computes ⌊log y (x)⌋. 6 In this paper, we restrict ourselves to innermost rewriting for simplicity. 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.…”
Section: Definition 1 (Itrs)mentioning
confidence: 99%
“…Footnote 7). Our data base contains all 19 examples from the collection of [17] and all 29 examples from the collection 23 of [9] converted to integers, all 19 examples from the papers [2][3][4][5][6][7][8]24, 25] 24 on imperative programs converted to term rewriting, and several other "typical" algorithms on integers (including also some nonterminating ones). With a timeout of 1 minute for each example, the new version of AProVE with the contributions of this paper can prove termination of 104 examples (i.e., of 88.9 %).…”
Section: Experiments and Conclusionmentioning
confidence: 99%
“…Among the methods dealing with liveness properties, we mention [CS02], which handles termination of sequential programs, network invariants [LHR97], and counter abstraction [PXZ02].…”
Section: I K P( I)mentioning
confidence: 99%
“…Finding such ranking functions is not easy, and automation requires techniques adapted to specific data domains. Techniques have been developed for programs with integers or reals [12,13,14,18,19], functional programs, [25], and parameterized systems [22,23].…”
Section: Introductionmentioning
confidence: 99%
“…Automated construction of such ranking functions is a challenging task, which requires techniques adapted to specific data domains. Recently, significant progress has been achieved for programs that operate on numerical domains, integers or reals [12,13,14,18,19,21]. Rather few papers present efficient techniques to prove termination for programs that operate on arbitrary data domains.…”
Section: Introductionmentioning
confidence: 99%