Termination Analysis for Offline Partial Evaluation of a Higher Order Functional Language

Abstract

One of the remaining problems on the path towards fully automatic partial evaluation is ensuring termination of the specialization phase. In [10] we gave a termination analysis which could be applied to partial evaluation of first-order strict languages, using a new result about inductive arguments (loosely: if whenever something grows, something gets smaller then the program will only enter finitely many different states). In this paper we extend this work to cover higher-order functional languages. We take an operational approach to the problem and consider the closure representation of higher-order functions to perform a combined data-and control-dependency analysis. The result of this analysis is then used, as in the first-order case, to decide which arguments need to be dynamic to guarantee termination of partial evaluation of the analysed program. The new methods have been tested on a variety of programs, and will be incorporated in a future release of the Similix partial evaluator for Scheme.

DOI: 10.1007/3-540-61739-6_34

Extracted Key Phrases

Showing 1-10 of 15 references

The Similix system, version 5.1

  • 1995

Finiteness analysis

  • Carsten Kehler, Holst
  • 1991

Introduction to Lattices and Order. Cambridge Mathematical Textbooks

  • B A Davey, H A Priestley
  • 1990