Results 1  10
of
18
A System For Specialising Logic Programs
, 1991
"... This report describes SP, a system for specialising logic programs. The report functions as a user's manual for SP, and also contains the algorithms employed and arguments for their correctness. A number of examples of program specialisation are given in Appendix A. Contents 1 Program Specialisation ..."
Abstract

Cited by 147 (12 self)
 Add to MetaCart
This report describes SP, a system for specialising logic programs. The report functions as a user's manual for SP, and also contains the algorithms employed and arguments for their correctness. A number of examples of program specialisation are given in Appendix A. Contents 1 Program Specialisation 4 2 Transformations in SP 5 3 Unfolding Rules 10 4 Approximation 13 5 The Specialisation Algorithm 16 6 How to Use SP 20 7 Discussion 23 A Examples of Specialisation 28 B Unfoldability Conditions for Builtins 36 1 Program Specialisation SP is a system for specialising logic programs. Before describing the system, it is worth reviewing briefly the aims and interesting applications of program specialisation. To specialise a program is to restrict its behaviour in some way. The purpose of specialisation is to exploit the restriction to gain efficiency. A specialised program is equivalent, within the bounds of the restriction imposed, to the original unspecialised program, but should be ...
On perfect supercompilation
 Journal of Functional Programming
, 1996
"... We extend positive supercompilation to handle negative as well as positive information. This is done by instrumenting the underlying unfold rules with a small rewrite system that handles constraints on terms, thereby ensuring perfect information propagation. We illustrate this by transforming a na ..."
Abstract

Cited by 79 (3 self)
 Add to MetaCart
We extend positive supercompilation to handle negative as well as positive information. This is done by instrumenting the underlying unfold rules with a small rewrite system that handles constraints on terms, thereby ensuring perfect information propagation. We illustrate this by transforming a naively specialised string matcher into an optimal one. The presented algorithm is guaranteed to terminate by means of generalisation steps.
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 54 (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.
A Roadmap to Metacomputation by Supercompilation
, 1996
"... This paper gives a gentle introduction to Turchin's supercompilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Th ..."
Abstract

Cited by 35 (4 self)
 Add to MetaCart
This paper gives a gentle introduction to Turchin's supercompilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Then a taxonomy of related transformers is given and compared to the supercompiler. Finally, we put supercompilation into the larger perspective of metacomputation and consider three metacomputation tasks: specialization, composition, and inversion.
Reducing Nondeterminism while Specializing Logic Programs
, 1997
"... Program specialization is a collection of program transformation techniques for improving program efficiency by exploiting some information available at compiletime about the input data. We show that current techniques for program specialization based on partial evaluation do not perform well on non ..."
Abstract

Cited by 25 (14 self)
 Add to MetaCart
Program specialization is a collection of program transformation techniques for improving program efficiency by exploiting some information available at compiletime about the input data. We show that current techniques for program specialization based on partial evaluation do not perform well on nondeterministic logic programs. We then consider a set of transformation rules which extend the ones used for partial evaluation, and we propose a strategy to direct the application of these extended rules so to derive very efficient specialized programs. The efficiency improvements which may even be exponential, are achieved because the derived programs are semideterministic and the operations which are performed by the initial programs in different branches of the computation trees, are performed in the specialized programs within single branches. We also make use of mode information to guide the unfolding process and to reduce nondeterminism. To exemplify our technique, we show that we can...
Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC
, 1994
"... We study four transformation methodologies which are automatic instances of Burstall and Darlington's fold/unfold framework: partial evaluation, deforestation, supercompilation, and generalized partial computation (GPC). One can classify these and other fold/unfold based transformers by how much inf ..."
Abstract

Cited by 22 (0 self)
 Add to MetaCart
We study four transformation methodologies which are automatic instances of Burstall and Darlington's fold/unfold framework: partial evaluation, deforestation, supercompilation, and generalized partial computation (GPC). One can classify these and other fold/unfold based transformers by how much information they maintain during transformation. We introduce the positive supercompiler, a version of deforestation including more information propagation, to study such a classification in detail. Via the study of positive supercompilation we are able to show that partial evaluation and deforestation have simple information propagation, positive supercompilation has more information propagation, and supercompilation and GPC have even more information propagation. The amount of information propagation is significant: positive supercompilation, GPC, and supercompilation can specialize a general pattern matcher to a fixed pattern so as to obtain efficient output similar to that of the KnuthMorrisPratt algorithm. In the case of partial evaluation and deforestation, the general matcher must be rewritten to achieve this.
Constrained Partial Deduction and the Preservation of Characteristic Trees
 NEW GENERATION COMPUTING
, 1997
"... Partial deduction strategies for logic programs often use an abstraction operator to guarantee the finiteness of the set of goals for which partial deductions are produced. Finding an abstraction operator which guarantees finiteness and does not lose relevant information is a difficult problem. I ..."
Abstract

Cited by 21 (16 self)
 Add to MetaCart
Partial deduction strategies for logic programs often use an abstraction operator to guarantee the finiteness of the set of goals for which partial deductions are produced. Finding an abstraction operator which guarantees finiteness and does not lose relevant information is a difficult problem. In earlier work Gallagher and Bruynooghe proposed to base the abstraction operator on characteristic paths and trees, which capture the structure of the generated incomplete SLDNFtree for a given goal. In this paper we exhibit the advantages of characteristic trees over purely syntactical measures: if characteristic trees can be preserved upon generalisation, then we obtain an almost perfect abstraction operator, providing just enough polyvariance to avoid any loss of local specialisation. Unfortunately, the abstraction operators proposed in earlier work do not always preserve the characteristic trees upon generalisation. We show that this can lead to important specialisation losses as well as to nontermination of the partial deduction algorithm. Furthermore, this problem cannot be adequately solved in the ordinary partial deduction setting. We therefore extend the expressivity and precision of the Lloyd and Shepherdson partial deduction framework by integrating constraints. We provide formal correctness results for the so obtained generic framework of constrained partial deduction. Within this new framework we are, among others, able to overcome the above mentioned problems by introducing an alternative abstraction operator, based on so called pruning constraints. We thus present a terminating partial deduction strategy which, for purely determinate unfolding rules, induces no loss of local specialisation due to the abstraction while ensuring correctness o...
Sharing of Computations
, 1993
"... This report is a revised version of my thesis of the same title, which was accepted for the Ph.D. degree in Computer Science at University of Aarhus, Denmark, in June 1993 ..."
Abstract

Cited by 15 (3 self)
 Add to MetaCart
This report is a revised version of my thesis of the same title, which was accepted for the Ph.D. degree in Computer Science at University of Aarhus, Denmark, in June 1993
Partial Evaluation of the "Real Thing"
, 1994
"... In this paper we present a partial evaluation scheme for a "real life" subset of Prolog. This subset contains firstorder builtin's, simple sideeffects and the operational predicate ifthenelse. We outline a denotational semantics for this subset of Prolog and show how partial deduction can be ex ..."
Abstract

Cited by 14 (5 self)
 Add to MetaCart
In this paper we present a partial evaluation scheme for a "real life" subset of Prolog. This subset contains firstorder builtin's, simple sideeffects and the operational predicate ifthenelse. We outline a denotational semantics for this subset of Prolog and show how partial deduction can be extended to specialise programs of this kind. We point out some of the problems not occurring in partial deduction and show how they can be solved in our setting. Finally we provide some results based on an implementation of the above.
An Almost Perfect Abstraction Operator for Partial Deduction
, 1994
"... ion Operator for Partial Deduction Michael Leuschel and Danny De Schreye K.U. Leuven, Department of Computer Science Celestijnenlaan 200 A, B3001 Heverlee, Belgium email: fmichael,dannydg@cs.kuleuven.ac.be January 18, 1995 Abstract A partial deduction strategy for logic programs usually uses an a ..."
Abstract

Cited by 13 (9 self)
 Add to MetaCart
ion Operator for Partial Deduction Michael Leuschel and Danny De Schreye K.U. Leuven, Department of Computer Science Celestijnenlaan 200 A, B3001 Heverlee, Belgium email: fmichael,dannydg@cs.kuleuven.ac.be January 18, 1995 Abstract A partial deduction strategy for logic programs usually uses an abstraction operator to guarantee the finiteness of the set of goals for which partial deductions are produced. Finding an abstraction operator which guarantees finiteness and still does not loose relevant information (with respect to the partial deduction) is a difficult problem. In [4] and [7] Gallagher and Bruynooghe proposed to base the abstraction operator on characteristic paths and trees. A characteristic tree captures the structure of the generated partial SLDNFtree for a given goal, i.e. it captures the relevant information for partial deduction. The generation of more general atoms having the same characteristic tree would lead to an almost perfect abstraction operator. Unfortunate...