Results 1  10
of
12
Redundant Argument Filtering of Logic Programs
 Logic Program Synthesis and Transformation. Proceedings of LOPSTR’96, LNCS 1207
, 1996
"... This paper is concerned with the problem of removing, from a given logic program, redundant arguments. These are arguments which can be removed without affecting correctness. Most program specialisation techniques, even though they perform argument filtering and redundant clause removal, fail to re ..."
Abstract

Cited by 42 (17 self)
 Add to MetaCart
This paper is concerned with the problem of removing, from a given logic program, redundant arguments. These are arguments which can be removed without affecting correctness. Most program specialisation techniques, even though they perform argument filtering and redundant clause removal, fail to remove a substantial number of redundant arguments, yielding in some cases rather inefficient residual programs. We formalise the notion of a redundant argument and show that one cannot decide effectively whether a given argument is redundant. We then give a safe, effective approximation of the notion of a redundant argument and describe several simple and efficient algorithms calculating based on the approximative notion. We conduct extensive experiments with our algorithms on mechanically generated programs illustrating the practical benefits of our approach.
Offline specialisation in Prolog using a handwritten compiler generator
, 2004
"... The so called âcogen approachâ to program specialisation, writing a compiler generator instead of a specialiser, has been used with considerable success in partial evaluation of both functional and imperative languages. This paper demonstrates that this approach is also applicable to partial eva ..."
Abstract

Cited by 41 (21 self)
 Add to MetaCart
The so called âcogen approachâ to program specialisation, writing a compiler generator instead of a specialiser, has been used with considerable success in partial evaluation of both functional and imperative languages. This paper demonstrates that this approach is also applicable to partial evaluation of logic programming languages, also called partial deduction. Selfapplication has not been as much in focus in logic programming as for functional and imperative languages, and the attempts to selfapply partial deduction systems have, of yet, not been altogether that successful. So, especially for partial deduction, the cogen approach should prove to have a considerable importance when it comes to practical applications. This paper first develops a generic offline partial deduction technique for pure logic programs, notably supporting partially instantiated datastructures via binding types. From this a very efficient cogen is derived, which generates very efficient generating extensions (executing up to several orders of magnitude faster than current online systems) which in turn perform very good and nontrivial specialisation, even rivalling existing online systems. All this is supported by extensive benchmarks. Finally, it is shown how the cogen can be extended to directly support a large part of Prologâs declarative and nondeclarative features and how semionline specialisation can be efficiently integrated.
Program specialisation and abstract interpretation reconciled
 In Joint International Conference and Symposium on Logic Programming
, 1998
"... We clarify the relationship between abstract interpretation and program specialisation in the context of logic programming. We present a generic topdown abstract specialisation framework, along with a generic correctness result, into which a lot of the existing specialisation techniques can be cast ..."
Abstract

Cited by 27 (13 self)
 Add to MetaCart
We clarify the relationship between abstract interpretation and program specialisation in the context of logic programming. We present a generic topdown abstract specialisation framework, along with a generic correctness result, into which a lot of the existing specialisation techniques can be cast. The framework also shows how these techniques can be further improved by moving to more refined abstract domains. It, however, also highlights inherent limitations shared by all these approaches. In order to overcome them, and to fully unify program specialisation with abstract interpretation, we also develop a generic combined bottomup/topdown framework, which allows specialisation and analysis outside the reach of existing techniques. 1
Ecological Partial Deduction: Preserving Characteristic Trees Without Constraints
 Logic Program Synthesis and Transformation. Proceedings of LOPSTR'95, LNCS 1048
, 1995
"... . A partial deduction strategy for logic programs usually uses an abstraction operation to guarantee the finiteness of the set of atoms for which partial deductions are produced. Finding an abstraction operation which guarantees finiteness and does not loose relevant information is a difficult probl ..."
Abstract

Cited by 24 (14 self)
 Add to MetaCart
. A partial deduction strategy for logic programs usually uses an abstraction operation to guarantee the finiteness of the set of atoms for which partial deductions are produced. Finding an abstraction operation which guarantees finiteness and does not loose relevant information is a difficult problem. In earlier work Gallagher and Bruynooghe proposed to base the abstraction operation on characteristic paths and trees. A characteristic tree captures the relevant structure of the generated partial SLDNFtree for a given goal. Unfortunately the abstraction operations proposed in the earlier work do not always produce more general atoms and do not always preserve the characteristic trees. This problem has been solved for purely determinate unfolding rules and definite programs in [12, 13] by using constraints inside the partial deduction process. In this paper we propose an alternate solution which achieves the preservation of characteristic trees for any unfolding rule, normal logic prog...
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...
Preserving Termination of Tabled Logic Programs While Unfolding
 In Proc. of the 7th Int’l Workshop on Logic Programming Synthesis and Transformation (LOPSTR’97
, 1997
"... We provide a first investigation of the specialisation and transformation of tabled logic programs through unfolding. We show that  surprisingly  unfolding, even determinate, can worsen the termination behaviour in the context of tabling. We therefore establish two criteria which ensure that s ..."
Abstract

Cited by 14 (8 self)
 Add to MetaCart
We provide a first investigation of the specialisation and transformation of tabled logic programs through unfolding. We show that  surprisingly  unfolding, even determinate, can worsen the termination behaviour in the context of tabling. We therefore establish two criteria which ensure that such mishaps are avoided. We also briefly discuss the influence of some other transformation techniques on the termination and efficiency of tabled logic programs.
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...
Specialising interpreters using offline partial deduction
 In Program Development in Computational Logic
, 2004
"... Abstract. We present the latest version of the logen partial evaluation system for logic programs. In particular we present new bindingtypes, and show how they can be used to effectively specialise a wide variety of interpreters. We show how to achieve Jonesoptimality in a systematic way for sever ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Abstract. We present the latest version of the logen partial evaluation system for logic programs. In particular we present new bindingtypes, and show how they can be used to effectively specialise a wide variety of interpreters. We show how to achieve Jonesoptimality in a systematic way for several interpreters. Finally, we present and specialise a nontrivial interpreter for a small functional programming language. Experimental results are also presented, highlighting that the logen system can be a good basis for generating compilers for highlevel languages. 1