Results 1  10
of
34
An Introduction to Partial Evaluation
 ACM Computing Surveys
, 1996
"... Partial evaluation provides a unifying paradigm for a broad spectrum of work in ..."
Abstract

Cited by 135 (0 self)
 Add to MetaCart
Partial evaluation provides a unifying paradigm for a broad spectrum of work in
Rules and Strategies for Transforming Functional and Logic Programs
 ACM Computing Surveys
, 1996
"... We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated ..."
Abstract

Cited by 73 (4 self)
 Add to MetaCart
We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated via simple examples. A preliminary version of this report has been published in: Moller, B., Partsch, H., and Schuman, S. (eds.): Formal Program Development. Lecture Notes in Computer Science 755, Springer Verlag (1993) 263304. Also published in: ACM Computing Surveys, Vol 28, No. 2, June 1996. 3 1 Introduction The program transformation approach to the development of programs has first been advocated by [BurstallDarlington 77], although the basic ideas were already presented in previous papers by the same authors [Darlington 72, BurstallDarlington 75]. In that approach the task of writing a correct and efficient program is realized in two phases: the first phase consists in writing an in...
Logic program specialisation through partial deduction: Control issues
 THEORY AND PRACTICE OF LOGIC PROGRAMMING
, 2002
"... Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It ..."
Abstract

Cited by 53 (12 self)
 Add to MetaCart
Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It is achieved through a wellautomated application of parts of the BurstallDarlington unfold/fold transformation framework. The main challenge in developing systems is to design automatic control that ensures correctness, efficiency, and termination. This survey and tutorial presents the main developments in controlling partial deduction over the past 10 years and analyses their respective merits and shortcomings. It ends with an assessment of current achievements and sketches some remaining research challenges.
Partial evaluation of numerical programs in Fortran
 ACM SIGPLAN WORKSHOP ON PARTIAL EVALUATION AND SEMANTICSBASED PROGRAM MANIPULATION (ORLANDO, FLORIDA)
, 1994
"... We investigate the application of partial evaluation to numerically oriented computation in scientific and engineering applications. We present our results using the Fast Fourier Transformation, the Nbody attraction problem, and the cubic splines interpolation as examples. All programs are written ..."
Abstract

Cited by 32 (1 self)
 Add to MetaCart
We investigate the application of partial evaluation to numerically oriented computation in scientific and engineering applications. We present our results using the Fast Fourier Transformation, the Nbody attraction problem, and the cubic splines interpolation as examples. All programs are written in Fortran 77, specialized using our Fortran partial evaluator, and compiled into executable machine code using a commercial Fortran compiler. The results demonstrate that existing partial evaluation technology is strong enough to improve the efficiency of a large class of numerical programs. However, using partial evaluation as a development tool in the ‘real world’ still remains a challenging problem.
A Complete Transformational Toolkit for Compilers
 ACM Transactions on Programming Languages and Systems
, 1996
"... . In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as ..."
Abstract

Cited by 23 (9 self)
 Add to MetaCart
. In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program slicing, symbolic evaluation, conditional constant propagation, and dependence analysis. PIM consists of the untyped lambda calculus extended with an algebraic rewriting system that characterizes the behavior of lazy stores and generalized conditionals. A major question left open in the earlier paper was whether there existed a complete equational axiomatization of PIM's semantics. In this paper, we answer this question in the affirmative for PIM's core algebraic component, PIM t , under the assumption of certain reasonable restrictions on term formation. We systematically derive the complete PIM logic as the culmination of a sequence of increasingly powerful equational systems starti...
BTA algorithms to ensure termination of offline partial evaluation
 In Perspectives of System Informatics: Proceedings of the Andrei Ershov Second International Memorial Conference, LNCS
, 1996
"... A partial evaluator, given a program and a known "static" part of its input data, outputs a residual program in which computations depending only on the static data have been precomputed [3]. The ideal is a "black box" which discovers and performs nontrivial static computations w ..."
Abstract

Cited by 23 (1 self)
 Add to MetaCart
A partial evaluator, given a program and a known "static" part of its input data, outputs a residual program in which computations depending only on the static data have been precomputed [3]. The ideal is a "black box" which discovers and performs nontrivial static computations whenever possible, and never fails to terminate. Practical partial evaluators fall short of this goal: they sometimes loop (typical of functional programing partial evaluation), or terminate but are excessively conservative (typical in partial deduction ). This paper presents e#cient algorithms (being implemented) for bindingtime analysis for o#line specialisers. They ensure that the specialiser performs many nontrivial static computations, and are at the same time guaranteed to terminate. 1
Initial Results for Glacial Variable Analysis
 In 9th International Workshop on Languages and Compilers for Parallel Computing
, 1996
"... . Runtime code generation that uses specific values to generate specialized code is called valuespecific optimization. Variables which provide values for valuespecific optimization are called candidate variables. They are modified much less frequently than they are referenced. In current systems ..."
Abstract

Cited by 23 (0 self)
 Add to MetaCart
. Runtime code generation that uses specific values to generate specialized code is called valuespecific optimization. Variables which provide values for valuespecific optimization are called candidate variables. They are modified much less frequently than they are referenced. In current systems that use runtime code generation, candidate variables are identified by programmer directives. We describe a novel technique, staging analysis, for automatically identifying candidate variables. We refer to such variables as glacial variables. Glacial variables are excellent candidate variables. Glacial Variable Analysis is an interprocedural analysis. We perform several experiments with glacial variable analysis to characterize the programs in the PERFECT benchmark suite. We explain the imprecision of our results due to procedure boundaries. We examine the structure of the programs to determine how often valuespecific optimization might be applied. We will explain how staging analysis r...
A Comparative Revisitation of Some Program Transformation Techniques
 Partial Evaluation, Int'l Seminar, Dagstuhl
, 1996
"... . We revisit the main techniques of program transformation which are used in partial evaluation, mixed computation, supercompilation, generalized partial computation, rulebased program derivation, program specialization, compiling control, and the like. We present a methodology which underlines the ..."
Abstract

Cited by 21 (0 self)
 Add to MetaCart
. We revisit the main techniques of program transformation which are used in partial evaluation, mixed computation, supercompilation, generalized partial computation, rulebased program derivation, program specialization, compiling control, and the like. We present a methodology which underlines these techniques as a `common pattern of reasoning' and explains the various correspondences which can be established among them. This methodology consists of three steps: i) symbolic computation, ii) search for regularities, and iii) program extraction. We also discuss some control issues which occur when performing these steps. 1 Introduction During the past years researchers working in various areas of program transformation, such as partial evaluation, mixed computation, supercompilation, generalized partial computation, rulebased program derivation, program specialization, and compiling control, have been using very similar techniques for the development and derivation of programs. Unfor...
Explanationbased generalisation = Partial evaluation
, 1988
"... We argue that explanationbased generalisation as recently proposed in the machine learning literature is essentially equivalent to partial evaluation, a well known technique in the functional and logic programming literature. We show this equivalence by analysing the definitions and underlying algo ..."
Abstract

Cited by 20 (1 self)
 Add to MetaCart
We argue that explanationbased generalisation as recently proposed in the machine learning literature is essentially equivalent to partial evaluation, a well known technique in the functional and logic programming literature. We show this equivalence by analysing the definitions and underlying algorithms of both techniques, and by giving a Prolog program which can be interpreted as doing either explanationbased generalisation or partial evaluation. 1 Introduction An interesting development in the field of machine learning is the advent of a technique called explanationbased generalisation (EBG). This name was first coined in [Mitchell et al., 1986], but the technique can be traced back to [Mitchell, 1983], and earlier to [DeJong, 1981] and [Mitchell, 1982]. This technique tackles the problem of formulating general concepts on the basis of specific training examples. For some considerable time, the functional programmingcommunity, and more recently the logic programming community, ...