Results 1 - 10
of
11
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...
Meta-Programming in Logic Programming
- Handbook of Logic in Artificial Intelligence and Logic Programming
, 1994
"... data types are facilitated in Godel by its type and module systems. Thus, in order to describe the meta-programming facilities of Godel, a brief account of these systems is given. Each constant, function, predicate, and proposition in a Godel program must be specified by a language declaration. The ..."
Abstract
-
Cited by 43 (3 self)
- Add to MetaCart
data types are facilitated in Godel by its type and module systems. Thus, in order to describe the meta-programming facilities of Godel, a brief account of these systems is given. Each constant, function, predicate, and proposition in a Godel program must be specified by a language declaration. The type of a variable is not declared but inferred from its context within a particular program statement. To illustrate the type system, we give the language declarations that would be required for the program in Figure 1. BASE Name. CONSTANT Tom, Jerry : Name. PREDICATE Chase : Name * Name; Cat, Mouse : Name. Note that the declaration beginning BASE indicates that Name is a base type. In the statement Chase(x,y) !- Cat(x) & Mouse(y). the variables x and y are inferred to be of type Name. Polymorphic types can also be defined in Godel. They are constructed from the base types, type variables called parameters, and type constructors. Each constructor has an arity 1 attached to it. As an...
Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments
- J. LOGIC PROGRAMMING
, 1999
"... ..."
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.
Unfold/Fold Transformations and Loop Optimization of Logic Programs
- In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation
, 1988
"... Abstract: Programs typically spend much of their execution time in loops. This makes the generation of efficient code for loops essential for good performance. Loop optimization of logic programming languages is complicated by the fact that such languages lack the iterative constructs of traditional ..."
Abstract
-
Cited by 23 (1 self)
- Add to MetaCart
Abstract: Programs typically spend much of their execution time in loops. This makes the generation of efficient code for loops essential for good performance. Loop optimization of logic programming languages is complicated by the fact that such languages lack the iterative constructs of traditional languages, and instead use recursion to express loops. In this paper, we examine the application of unfold/fold transformations to three kinds of loop optimization for logic programming languages: recur-sion removal, loop fusion and code motion out of loops. We describe simple unfold/fold transformation sequences for these optimizations that can be automated relatively easily. In the process, we show that the properties of unification and logical variables can sometimes be used to generalize, from traditional languages, the conditions under which these optimizations may be carried out. Our experience suggests that such source-level transformations may be used as an effective tool for the optimization of logic pro-grams. 1.
Exploiting Program Schemata in a Prolog Tutoring System
, 1993
"... After their beginnings in computer-aided instruction, automated tutors have re-emerged as intelligent tutoring systems. These intelligent tutors have obtained considerable success by using results from cognitive psychology and artificial intelligence to permit non-traditional instruction which is ta ..."
Abstract
-
Cited by 8 (3 self)
- Add to MetaCart
After their beginnings in computer-aided instruction, automated tutors have re-emerged as intelligent tutoring systems. These intelligent tutors have obtained considerable success by using results from cognitive psychology and artificial intelligence to permit non-traditional instruction which is tailored to their individual students. The success of these automated tutors is due to their precise understanding and modeling of both the student and the domain being taught. A common measure of the robustness of an automated tutor is the size of the domain that it can understand. The schema-based Prolog tutor described in this dissertation is capable of recognizing a larger class of programs than existing Prolog tutors. By using powerful generalized transformations, our Prolog tutor can generate this class of programs from a very small set of normal form programs. Thus, our Prolog tutor recognizes a larger class of programs using fewer normal form programs than existing Prolog tutors. One o...
Program Derivation = Rules + Strategies
- Computational Logic: Logic Programming and Beyond (Essays in honour of Bob Kowalski, Part I), Lecture Notes in Computer Science 2407
, 2001
"... In a seminal paper [38] Prof. Robert Kowalski advocated the paradigm Algorithm = Logic + Control which was intended to characterize program executions. Here we want to illustrate the corresponding paradigm Program Derivation = Rules + Strategies which is intended to characterize program derivations, ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
In a seminal paper [38] Prof. Robert Kowalski advocated the paradigm Algorithm = Logic + Control which was intended to characterize program executions. Here we want to illustrate the corresponding paradigm Program Derivation = Rules + Strategies which is intended to characterize program derivations, rather than executions. During program execution, the Logic component guarantees that the computed results are correct, that is, they are true facts in the intended model of the given program, while the Control component ensures that those facts are derived in an efficient way. Likewise, during program derivation, the Rules component guarantees that the derived programs are correct and the Strategies component ensures that the derived programs are efficient.
Transformation Rules for Locally Stratified Constraint Logic Programs
, 2004
"... We propose a set of transformation rules for constraint logic programs with negation. We assume that every program is locally strati- ed and, thus, it has a unique perfect model. We give sucient conditions which ensure that the proposed set of transformation rules preserves the perfect model of ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
We propose a set of transformation rules for constraint logic programs with negation. We assume that every program is locally strati- ed and, thus, it has a unique perfect model. We give sucient conditions which ensure that the proposed set of transformation rules preserves the perfect model of the programs. Our rules extend in some respects the rules for logic programs and constraint logic programs already considered in the literature and, in particular, they include a rule for unfolding a clause with respect to a negative literal.
Top-down Synthesis of Recursive Logic Procedures from First-order Logic Specifications
- Proc. 7 th Int. Conf. on Logic Programming
, 1990
"... Derivation of logic programs from first-order logic specifications is nontrivial and tends to be done by hand. We describe a method for synthesising recursive logic procedures from their first-order logic specifications that is amenable to mechanisation. The method is strictly top-down and has been ..."
Abstract
- Add to MetaCart
Derivation of logic programs from first-order logic specifications is nontrivial and tends to be done by hand. We describe a method for synthesising recursive logic procedures from their first-order logic specifications that is amenable to mechanisation. The method is strictly top-down and has been implemented as part of a user-guided synthesis system in Prolog.
Tutorial: Synthesis of Logic Programs
"... Introduction -- What is Logic Program Synthesis? -- Classification and Terminology ffl Constructive Synthesis -- Definition -- General Description -- Example ffl Deductive Synthesis -- Definition -- General Description -- Example and Brief Survey ffl Conclusion What is Logic Program Synt ..."
Abstract
- Add to MetaCart
Introduction -- What is Logic Program Synthesis? -- Classification and Terminology ffl Constructive Synthesis -- Definition -- General Description -- Example ffl Deductive Synthesis -- Definition -- General Description -- Example and Brief Survey ffl Conclusion What is Logic Program Synthesis? Specification j Synthesis # (Correct) Logic Program What is a specification? Spec = Prog ? Spec 6= Prog ? Spec = Prog + Types ? e.g. Naish 92 Spec = Theory ? Spec = Theory + (Generic) Goal ? e.g. Lau & Ornaghi 94a "Tutorial: Synthesis of Logic Programs", ICLP, Santa Margherita Ligure, Italy, 13th June 1994 What is Logic Program Synthesis? What kind of specification? -- Informal: natural lan

