Results 1 -
3 of
3
The Size-Change Principle for Program Termination
, 2001
"... The \size-change termination" principle for a rst-order functional language with well-founded data is: a program terminates on all inputs if every innite call sequence (following program control ow) would cause an innite descent in some data values. Size-change analysis is based only on local appr ..."
Abstract
-
Cited by 156 (10 self)
- Add to MetaCart
The \size-change termination" principle for a rst-order functional language with well-founded data is: a program terminates on all inputs if every innite call sequence (following program control ow) would cause an innite descent in some data values. Size-change analysis is based only on local approximations to parameter size changes derivable from program syntax. The set of innite call sequences that follow program ow and can be recognized as causing innite descent is an !-regular set, representable by a Buchi automaton. Algorithms for such automata can be used to decide size-change termination. We also give a direct algorithm operating on \size-change graphs" (without the passage to automata). Compared to other results in the literature, termination analysis based on the size-change principle is surprisingly simple and general: lexical orders (also called lexicographic orders), indirect function calls and permuted arguments (descent that is not in-situ) are all handled auto...
Finiteness Analysis in Polynomial Time
, 2002
"... To achieve the termination of offline partial evaluation, it is necessary to ensure that static variables assume boundedly many values during specialization. Various works have addressed the analysis of variable boundedness, also called finiteness analysis, in the context of specializing first-order ..."
Abstract
-
Cited by 18 (6 self)
- Add to MetaCart
To achieve the termination of offline partial evaluation, it is necessary to ensure that static variables assume boundedly many values during specialization. Various works have addressed the analysis of variable boundedness, also called finiteness analysis, in the context of specializing first-order functional programs. The underlying reasoning is always: Observing arbitrarily many increases in a static variable during specialization must be impossible, if that would imply observing arbitrarily long sequences of size decreases among some bounded-variable values. Static analysis is used...
Binding-Time Analysis in Partial Evaluation: One Size Does Not Fit All
, 2000
"... Existing partial evaluators usually fix the strategy for binding-time analysis. But a single strategy cannot fulfill all goals without leading to compromises regarding precision, termination, and code explosion in partial evaluators. Our goal is to improve the usability of partial evaluator systems ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Existing partial evaluators usually fix the strategy for binding-time analysis. But a single strategy cannot fulfill all goals without leading to compromises regarding precision, termination, and code explosion in partial evaluators. Our goal is to improve the usability of partial evaluator systems by developing an adaptive approach that can accommodate a variety of different strategies ranging from maximally polyvariant to entirely uniform analysis, and thereby make offline specialization more practical in a realistic setting. The core of the analysis has been implemented in FSpec, an offline partial evaluator for a subset of Fortran 77.

