On-line and off-line partial evaluation: semantic specifications and correctness proofs
- 1 October 1995
- journal article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 5 (4) , 461-500
- https://doi.org/10.1017/s0956796800001453
Abstract
This paper presents semantic specifications and correctness proofs for both on-line and offline partial evaluation of strict first-order functional programs. To do so, our strategy consists of defining acore semanticsas a basis for the specification of three non-standard evaluations: instrumented evaluation, on-line and off-line partial evaluation. We then use the technique oflogical relationsto prove the correctness of both on-line and off-line partial evaluation semantics.The contributions of this work are as follows:1. We provide auniform frameworkto defining and proving correct both on-line and off-line partial evaluation.2. This work required a formal specification of on-line partial evaluation with polyvariant specialization. We define criteria for its correctness with respect to an instrumented standard semantics. As a by-product, on-line partial evaluation appears to be based on a fixpoint iteration process, just like binding-time analysis.3. We show that binding-time analysis, the preprocessing phase of off-line partial evaluation, is anabstractionof on-line partial evaluation. Therefore, its correctness can be proved with respect to on-line partial evaluation, instead of with respect to the standard semantics, as is customarily done.4. Based on the binding-time analysis, we formallyderivethe specialization semantics for off-line partial evaluation. This strategy ensures the correctness of the resulting semantics.Keywords
This publication has 22 references indexed in Scilit:
- Partial evaluation, self-application and typesPublished by Springer Nature ,2005
- Parameterized partial evaluationACM Transactions on Programming Languages and Systems, 1993
- A self-applicable partial evaluator for the lambda calculusACM Transactions on Programming Languages and Systems, 1992
- Automatic autoprojection of higher order recursive equationsScience of Computer Programming, 1991
- Abstract Interpretation, Logical Relations, and Kan ExtensionsJournal of Logic and Computation, 1990
- Two-level semantics and abstract interpretationTheoretical Computer Science, 1989
- Mix: A self-applicable partial evaluator for experiments in compiler generationHigher-Order and Symbolic Computation, 1989
- Deriving mixed evaluation from standard evaluation for a simple functional languagePublished by Springer Nature ,1989
- Automatic binding time analysis for a typed λ-calculusScience of Computer Programming, 1988
- New insights into partial evaluation: the SCHISM experimentPublished by Springer Nature ,1988