Results 1  10
of
32
Logic Program Synthesis
, 1993
"... This paper presents an overview and a survey of logic program synthesis. Logic program synthesis is interpreted here in a broad way; it is concerned with the following question: given a specification, how do we get a logic program satisfying the specification? Logic programming provides a uniquely n ..."
Abstract

Cited by 42 (11 self)
 Add to MetaCart
This paper presents an overview and a survey of logic program synthesis. Logic program synthesis is interpreted here in a broad way; it is concerned with the following question: given a specification, how do we get a logic program satisfying the specification? Logic programming provides a uniquely nice and uniform framework for program synthesis since the specification, the synthesis process and the resulting program can all be expressed in logic. Three main approaches to logic program synthesis by formal methods are described: constructive synthesis, deductive synthesis and inductive synthesis. Related issues such as correctness and verification as well as synthesis by informal methods are briefly presented. Our presentation is made coherent by employing a unified framework of terminology and notation, and by using the same running example for all the approaches covered. This paper thus intends to provide an assessment of existing work and a framework for future research in logic program synthesis.
Transformation of Logic Programs
 Handbook of Logic in Artificial Intelligence and Logic Programming
, 1998
"... Program transformation is a methodology for deriving correct and efficient programs from specifications. In this chapter, we will look at the so called 'rules + strategies' approach, and we will report on the main techniques which have been introduced in the literature for that approach, i ..."
Abstract

Cited by 40 (4 self)
 Add to MetaCart
Program transformation is a methodology for deriving correct and efficient programs from specifications. In this chapter, we will look at the so called 'rules + strategies' approach, and we will report on the main techniques which have been introduced in the literature for that approach, in the case of logic programs. We will also present some examples of program transformation, and we hope that through those examples the reader may acquire some familiarity with the techniques we will describe.
Controlling Conjunctive Partial Deduction of Definite Logic Programs
, 1996
"... "Classical" partial deduction, within the framework by Lloyd and Shepherdson, computes partial deduction for separate atoms independently. As a consequence, a number of program optimisations, known from unfold/fold transformations and supercompilation, cannot be achieved. In this paper, we ..."
Abstract

Cited by 35 (11 self)
 Add to MetaCart
"Classical" partial deduction, within the framework by Lloyd and Shepherdson, computes partial deduction for separate atoms independently. As a consequence, a number of program optimisations, known from unfold/fold transformations and supercompilation, cannot be achieved. In this paper, we show that this restriction can be lifted through (polygenetic) specialisation of entire atom conjunctions. We present a generic algorithm for such partial deduction and discuss its correctness in an extended formal framework. We concentrate on novel control challenges specific to this "conjunctive" partial deduction. We refine the generic algorithm into a fully automatic concrete one that registers partially deduced conjunctions in a global tree, and prove its termination and correctness. We discuss some further control refinements and illustrate the operation of the concrete algorithm and/or some of its possible variants on interesting transformation examples.
Synthesis And Transformation Of Logic Programs Using Unfold/Fold Proofs
 Journal of Logic Programming
, 1999
"... We present a method for proving properties of definite logic programs. This method is called unfold/fold proof method because it is based on the unfold/fold transformation rules... ..."
Abstract

Cited by 34 (13 self)
 Add to MetaCart
(Show Context)
We present a method for proving properties of definite logic programs. This method is called unfold/fold proof method because it is based on the unfold/fold transformation rules...
A parameterized unfold/fold transformation framework for definite logic programs
 In Principles and Practice of Declarative Programming (PPDP), LNCS 1702
, 1999
"... Given a program P, an unfold/fold program transformation system derives a sequence of programs P = P0, P1,:::, Pn, such that Pi+1 is derived from Pi by application of either an unfolding or a folding step. Existing unfold/fold transformation systems for definite logic programs differ from one anoth ..."
Abstract

Cited by 28 (6 self)
 Add to MetaCart
(Show Context)
Given a program P, an unfold/fold program transformation system derives a sequence of programs P = P0, P1,:::, Pn, such that Pi+1 is derived from Pi by application of either an unfolding or a folding step. Existing unfold/fold transformation systems for definite logic programs differ from one another mainly in the kind of folding transformations they permit at each step. Some allow folding using a single (possibly recursive) clause while others permit folding using multiple nonrecursive clauses. However, none allow folding using multiple recursive clauses that are drawn from some previous program in the transformation sequence. In this paper we develop a parameterized framework for unfold/fold transformations by suitably abstracting and extending the proofs of existing transformation systems. Various existing unfold/fold transformation systems can be obtained by instantiating the parameters of the framework. This framework enables us to not only understand the relative strengths and limitations of these systems but also construct new transformation systems. Specifically we present a more general transformation system that permits folding using multiple recursive clauses that can be drawn from any previous program in the transformation sequence. This new transformation system is also obtained by instantiating our parameterized framework.
Unfold/Fold Transformations For Definite Clause Programs
 In Proceedings of PLILP, LNCS 844
, 1994
"... . An unfold/fold program transformation system which extends the unfold/fold transformations of H. Tamaki and T. Sato is presented in this paper. The system consists of unfolding, simultaneous folding, and generalization + equality introduction rules. The simultaneous folding rule permits the foldin ..."
Abstract

Cited by 23 (5 self)
 Add to MetaCart
(Show Context)
. An unfold/fold program transformation system which extends the unfold/fold transformations of H. Tamaki and T. Sato is presented in this paper. The system consists of unfolding, simultaneous folding, and generalization + equality introduction rules. The simultaneous folding rule permits the folding of a set of folded clauses into a single clause, using a set of folding clauses, while the generalization + equality introduction rule facilitates the application of the simultaneous folding rule by performing appropriate abstractions. A proof of the correctness of the proposed transformations in the sense of the least Herbrand model semantics of the program is also presented. 1 Introduction Unfold/fold transformations were first proposed by R. Burstall and J. Darlington [BD77] in the context of a functional language. In the context of logic programming, H. Tamaki and T. Sato [TS84, TS86] formulated unfold/fold transformations for definite clause programs so as to preserve the equivalence...
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 18 (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
Automated Strategies for Specializing Constraint Logic Programs
 LOPSTR 2000, LNCS 2042
"... We consider the problem of specializing constraint logic programs w.r.t. constrained queries. We follow a transformational approach based on rules and strategies. The use of the rules ensures that the specialized program is equivalent to the initial program w.r.t. a given constrained query. The stra ..."
Abstract

Cited by 14 (12 self)
 Add to MetaCart
(Show Context)
We consider the problem of specializing constraint logic programs w.r.t. constrained queries. We follow a transformational approach based on rules and strategies. The use of the rules ensures that the specialized program is equivalent to the initial program w.r.t. a given constrained query. The strategies guide the application of the rules so to derive an efficient specialized program. In this paper we address various issues concerning the development of an automated transformation strategy. In particular, we consider the problems of when and how we should unfold, replace constraints, introduce generalized clauses, and apply the contextual constraint replacement rule. We propose a solution to these problems by adapting to our framework various techniques developed in the field of constraint programming, partial evaluation, and abstract interpretation. In particular, we use: (i) suitable solvers for simplifying constraints, (ii) wellquasiorders for ensuring the termination...
Beyond TamakiSato Style Unfold/Fold Transformations for Normal Logic Programs
 IN ASIAN, LNCS 1742
, 1999
"... Unfold/fold transformation systems for logic programs have been extensively investigated. Existing unfold/fold transformation systems for normal logic programs allow only TamakiSato style folding using clauses from a previous program in the transformation sequence: i.e., they fold using a singl ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
Unfold/fold transformation systems for logic programs have been extensively investigated. Existing unfold/fold transformation systems for normal logic programs allow only TamakiSato style folding using clauses from a previous program in the transformation sequence: i.e., they fold using a single, nonrecursive clause. In this paper we present a transformation system that permits folding in the presence of recursion, disjunction, as well as negation. We show that the transformations are correct with respect to various semantics of negation including the wellfounded model and stable model semantics.