Results 1 
8 of
8
Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments
 J. LOGIC PROGRAMMING
, 1999
"... ..."
Conjunctive Partial Deduction in Practice
 Proceedings of the International Workshop on Logic Program Synthesis and Transformation (LOPSTR'96), LNCS 1207
, 1996
"... . Recently, partial deduction of logic programs has been extended to conceptually embed folding. To this end, partial deductions are no longer computed of single atoms, but rather of entire conjunctions; Hence the term "conjunctive partial deduction". Conjunctive partial deduction aims at ..."
Abstract

Cited by 27 (20 self)
 Add to MetaCart
. Recently, partial deduction of logic programs has been extended to conceptually embed folding. To this end, partial deductions are no longer computed of single atoms, but rather of entire conjunctions; Hence the term "conjunctive partial deduction". Conjunctive partial deduction aims at achieving unfold/foldlike program transformations such as tupling and deforestation within fully automated partial deduction. However, its merits greatly surpass that limited context: Also other major efficiency improvements are obtained through considerably improved sideways information propagation. In this extended abstract, we investigate conjunctive partial deduction in practice. We describe the concrete options used in the implementation(s), look at abstraction in a practical Prolog context, include and discuss an extensive set of benchmark results. From these, we can conclude that conjunctive partial deduction indeed pays off in practice, thoroughly beating its conventional precursor on a wide...
On Extra Variables in (Equational) Logic Programming
, 1994
"... Extra variables in a clause are variables which occur in the body but not in the head. It has been argued that extra variables are necessary and contribute to the expressive power of logic languages. In the first part of this paper, we show that this is not true in general. For this purpose, we p ..."
Abstract

Cited by 23 (2 self)
 Add to MetaCart
Extra variables in a clause are variables which occur in the body but not in the head. It has been argued that extra variables are necessary and contribute to the expressive power of logic languages. In the first part of this paper, we show that this is not true in general. For this purpose, we provide a simple syntactic transformation of each logic program into a logic program without extra variables. Moreover, we show a strong correspondence between the original and the transformed program with respect to the declarative and the operational semantics. In the second part of this paper, we use a similar technique to provide new completeness results for equational logic programs with extra variables. In equational logic programming it is well known that extra variables cause problems since narrowing, the standard operational semantics for equational logic programming, may become incomplete in the presence of extra variables. Since extra variables are useful from a programmin...
Developing Correct and Efficient Logic Programs by Transformation
 Knowledge Engineering Review
, 1996
"... this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, in order to improve efficiency one may want to use program transformation for avoiding multiple visits of data structures, or replacing complex forms of recursion by tail recursion, or reducing nondeterminism of procedures. This paper is structured as follows. In Section 2 we present the rulebased approach to program transformation and its use for the derivation and synthesis of logic programs from specifications. In Section 3 we consider the schemabased transformation technique for the development of efficient programs. In Section 4 we consider the partial evaluation technique and its use for the specialization of logic programs when the input data are partially known at compile time. In the final section we discuss some of the achievements and challanges of program transformation as a tool for logicbased software engineering. For simplicity reasons in this paper we will only consider definite logic programs, although most of the techniques we will describe can be applied also in the case of general logic programs. We refer to [35, 41] for all notions concerning logic programming and logic program transformation which are not explicitly presented here.
SchemaBased Logic Program Transformation
"... SCHEMABASED LOGIC PROGRAM TRANSFORMATION Halime Buyukyildiz M.S. in Computer Engineering and Information Science Supervisor: Ass't Prof. Pierre Flener August 1997 In traditional programming methodology, developing a correct and efficient program is divided into two phases: in the first pha ..."
Abstract
 Add to MetaCart
SCHEMABASED LOGIC PROGRAM TRANSFORMATION Halime Buyukyildiz M.S. in Computer Engineering and Information Science Supervisor: Ass't Prof. Pierre Flener August 1997 In traditional programming methodology, developing a correct and efficient program is divided into two phases: in the first phase, called the synthesis phase, a correct, but maybe inefficient program is constructed, and in the second phase, called the transformation phase, the constructed program is transformed into a more efficient equivalent program. If the synthesis phase is guided by a schema that embodies the algorithm design knowledge abstracting the construction of a particular family of programs, then the transformation phase can also be done in a schemaguided fashion using transformation schemas, which encode the transformation techniques from input program schemas to output program schemas by defining the conditions that have to be verified to have a more efficient equivalent program. Seven program schemas ar...
A Prolog Positive Supercompiler
, 1997
"... . Supercompilation is a method for program specialization. It has been developed in the context of functional languages. We present a positive supercompiler for Prolog. We give the basic algorithm used in APROPOS and explain the different phases involved in supercompilation of logic programs. Then t ..."
Abstract
 Add to MetaCart
. Supercompilation is a method for program specialization. It has been developed in the context of functional languages. We present a positive supercompiler for Prolog. We give the basic algorithm used in APROPOS and explain the different phases involved in supercompilation of logic programs. Then the operation and efficiency of the method is demonstrated by means of examples. Finally we compare our work to related work in supercompilation and partial evaluation. 1 Introduction Supercompilation 1 is a program specialization technique originally developed by Valentin F. Turchin (e.g. [Tur86]) for a language called Refal . Supercompilation is composed of four steps: driving, generalization, folding and postunfolding. Whereas in the original supercompiler positive and negative information, i.e. equality and inequality of variables and values was propagated, we restrict propagation to the case of positive information gained by unification. In [Sør94, SGJ94] a positive supercompiler for...
J. LOGIC PROGRAMMING 1999:41:233{277 233 CONJUNCTIVE PARTIAL DEDUCTION: FOUNDATIONS, CONTROL, ALGORITHMS, AND EXPERIMENTS
"... . Partial deduction in the LloydShepherdson framework cannot achieve certain optimisations which are possible by unfold/fold transformations. We introduce conjunctive partial deduction, an extension of partial deduction accommodating such optimisations, e.g., tupling and deforestation. We rst pres ..."
Abstract
 Add to MetaCart
. Partial deduction in the LloydShepherdson framework cannot achieve certain optimisations which are possible by unfold/fold transformations. We introduce conjunctive partial deduction, an extension of partial deduction accommodating such optimisations, e.g., tupling and deforestation. We rst present a framework for conjunctive partial deduction, extending the LloydShepherdson framework by considering conjunctions of atoms (instead of individual atoms) for specialisation and renaming. Correctness results are given for the framework with respect to computed answer semantics, least Herbrand model semantics, and nite failure semantics. Maintaining the wellknown distinction between local and global control, we describe a basic algorithm for conjunctive partial deduction, and rene it into a concrete algorithm for which we prove termination. The problem of nding suitable renamings which remove redundant arguments turns out to be important, so we give an independent technique for this. A fully automatic implementation has been undertaken, which always ter
Author's Address
, 1994
"... Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficien ..."
Abstract
 Add to MetaCart
(Show Context)
Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficient implementations of these execution principles have been developed so that these languages became relevant for practical applications. In this paper we survey the development of the operational semantics as well as the improvement of the implementation of functional logic languages.