Results 1 - 10
of
24
S-Semantics Approach: Theory and Applications
, 1994
"... The paper is a general overview of an approach to the semantics of logic programs whose aim is finding notions of models which really capture the operational semantics, and are therefore useful for defining program equivalences and for semantics-based program analysis. The approach leads to the intr ..."
Abstract
-
Cited by 110 (26 self)
- Add to MetaCart
The paper is a general overview of an approach to the semantics of logic programs whose aim is finding notions of models which really capture the operational semantics, and are therefore useful for defining program equivalences and for semantics-based program analysis. The approach leads to the introduction of extended interpretations which are more expressive than Herbrand interpretations. The semantics in terms of extended interpretations can be obtained as a result of both an operational (top-down) and a fixpoint (bottom-up) construction. It can also be characterized from the model-theoretic viewpoint, by defining a set of extended models which contains standard Herbrand models. We discuss the original construction modeling computed answer substitutions, its compositional version and various semantics modeling more concrete observables. We then show how the approach can be applied to several extensions of positive logic programs. We finally consider some applications, mainly in the area of semantics-based program transformation and analysis.
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 so-called `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 s ..."
Abstract
-
Cited by 68 (3 self)
- Add to MetaCart
We present an overview of the program transformation methodology, focusing our attention on the so-called `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) 263--304. 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 [Burstall-Darlington 77], although the basic ideas were already presented in previous papers by the same authors [Darlington 72, Burstall-Darlington 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 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 35 (10 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.
On The Correctness Of Unfold/fold Transformation Of Normal And Extended Logic Programs
- JOURNAL OF LOGIC PROGRAMMING
, 1995
"... ..."
A Transformation System for Lazy Functional Logic Programs
, 1999
"... Needed narrowing is a complete operational principle for modern declarative languages which integrate the best features of (lazy) functional and logic programming. We define a transformation methodology for functional logic programs based on needed narrowing. We provide (strong) correctness results ..."
Abstract
-
Cited by 17 (12 self)
- Add to MetaCart
Needed narrowing is a complete operational principle for modern declarative languages which integrate the best features of (lazy) functional and logic programming. We define a transformation methodology for functional logic programs based on needed narrowing. We provide (strong) correctness results for the transformation system w.r.t. the set of computed values and answer substitutions and show that the prominent properties of needed narrowing -- namely, the optimality w.r.t. the length of derivations and the number of computed solutions -- carry over to the transformation process and the transformed programs. We illustrate the power of the system by taking on in our setting two well-known transformation strategies (composition and tupling). We also provide an implementation of the transformation system which, by means of some experimental results, highlights the benefits of our approach.
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 16 (5 self)
- Add to MetaCart
. 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...
Covering vs. Divide-and-Conquer for Top-Down Induction of Logic Programs
- Proceedings of the Fourteenth International Joint Conference on Artificial Intelligence
, 1995
"... Covering and divide-and-conquer are two wellestablished search techniques for top-down induction of propositional theories. However, for top-down induction of logic programs, only covering has been formalized and used extensively. In this work, the divide-and-conquer technique is formalized as ..."
Abstract
-
Cited by 15 (5 self)
- Add to MetaCart
Covering and divide-and-conquer are two wellestablished search techniques for top-down induction of propositional theories. However, for top-down induction of logic programs, only covering has been formalized and used extensively. In this work, the divide-and-conquer technique is formalized as well and compared to the covering technique in a logic programming framework. Covering works by repeatedly specializing an overly general hypothesis, on each iteration focusing on finding a clause with a high coverage of positive examples. Divide-and-conquer works by specializing an overly general hypothesis once, focusing on discriminating positive from negative examples. Experimental results are presented demonstrating that there are cases when more accurate hypotheses can be found by divideand -conquer than by covering. Moreover, since covering considers the same alternatives repeatedly it tends to be less efficient than divideand -conquer, which never considers the same ...
Transformation of Left Terminating Programs: The Reordering Problem
- PROCEEDINGS LOPSTR'95, VOLUME 1048 OF LECTURE NOTES IN COMPUTER SCIENCE
, 1995
"... An Unfold/Fold transformation system is a source-to-source rewrit-ing methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. When dealing with logic programs such as PRO-LOG programs, on ..."
Abstract
-
Cited by 14 (3 self)
- Add to MetaCart
An Unfold/Fold transformation system is a source-to-source rewrit-ing methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. When dealing with logic programs such as PRO-LOG programs, one is particularly interested in preserving left termination i.e. termination wrt the leftmost selection rule, which is by far the most widely employed of the search rules. Unfortunately, the most popular Unfold/Fold transformation systems ([TS84, Sek91]) do not preserve the above termina-tion property. In this paper we study the reasons why left termination may be spoiled by the application of a transformation operation and we present a transformation system based on the operations of Unfold, Fold and Switch which- if applied to a left terminating programs- yields a program which is left terminating as well.
Observable Behaviors and Equivalences of Logic Programs
- Information and Computation
, 1992
"... We first introduce a general semantic scheme for logic programs which provides a uniform framework for defining different compositional semantics parametrically wrt a given notion of observability. The equivalence of the operational (top-down) and fixpoint (bottom-up) construction of the semantics i ..."
Abstract
-
Cited by 10 (3 self)
- Add to MetaCart
We first introduce a general semantic scheme for logic programs which provides a uniform framework for defining different compositional semantics parametrically wrt a given notion of observability. The equivalence of the operational (top-down) and fixpoint (bottom-up) construction of the semantics is ensured by the scheme (provided a congruence property is verified). We then define several observational equivalences on logic programs and investigate how they are related. The equivalences are based on various observables (successful derivations, computed answers, partial computed answers and call patterns) and on a notion of program composition. For each observational equivalence we study the relation with a suitable formal semantics, by investigating correctness and full abstraction properties. All the semantics we consider are obtained as instances of the general scheme. 1 Introduction According to [36], the semantics of positive logic programs is defined in model-theoretic terms (th...
Safe Folding/Unfolding with Conditional Narrowing
- PROC. OF THE INTERNATIONAL CONFERENCE ON ALGEBRAIC AND LOGIC PROGRAMMING, ALP'97, SOUTHAMPTON (ENGLAND
, 1997
"... Functional logic languages with a complete operational semantics are based on narrowing, a generalization of term rewriting where unification replaces matching. In this paper, we study the semantic properties of a general transformation technique called unfolding in the context of functional logic l ..."
Abstract
-
Cited by 10 (9 self)
- Add to MetaCart
Functional logic languages with a complete operational semantics are based on narrowing, a generalization of term rewriting where unification replaces matching. In this paper, we study the semantic properties of a general transformation technique called unfolding in the context of functional logic languages. Unfolding a program is defined as the application of narrowing steps to the calls in the program rules in some appropriate form. We show that, unlike the case of pure logic or pure functional programs, where unfolding is correct w.r.t. practically all available semantics, unrestricted unfolding using narrowing does not preserve program meaning, even when we consider the weakest notion of semantics the program can be given. We single out the conditions which guarantee that an equivalent program w.r.t. the semantics of computed answers is produced. Then, we study the combination of this technique with a folding transformation rule in the case of innermost conditional narrowing, and prove that the resulting transformation still preserves the computed answer semantics of the initial program, under the usual conditions for the completeness of innermost conditional narrowing. We also discuss a relationship between unfold/fold transformations and partial evaluation of functional logic programs.

