Results 11 - 20
of
22
Towards Stepwise, Schema-Guided Synthesis of Logic Programs
- LOGIC PROGRAM SYNTHESIS AND TRANSFORMATION
, 1991
"... We present a general strategy for stepwise, sound and progressive synthesis of logic programs from specifications by examples and properties. We particularize this to schema-guided synthesis, and state a generic synthesis theorem. We justify some design choices for the development of a particular sy ..."
Abstract
-
Cited by 13 (4 self)
- Add to MetaCart
We present a general strategy for stepwise, sound and progressive synthesis of logic programs from specifications by examples and properties. We particularize this to schema-guided synthesis, and state a generic synthesis theorem. We justify some design choices for the development of a particular synthesis mechanism that is guided by a Divide-and-Conquer schema, is inductive and deductive, is interactive, and features a non-incremental presentation of examples. Some crucial steps of this mechanism are explained, and illustrated by a sample synthesis. We draw some conclusions on our results so far, state some related work, and outline future research directions.
Synthesis of a Family of Recursive Sorting Procedures
- Proc. 1991 Int. Logic Programming Symposium
, 1991
"... In an earlier paper, we described a method for synthesising recursive logic procedures from their first-order logic specifications. The method is practical because it is strictly top-down and has been implemented as part of a user-guided synthesis system in Prolog. We have used the system to synthes ..."
Abstract
-
Cited by 9 (3 self)
- Add to MetaCart
In an earlier paper, we described a method for synthesising recursive logic procedures from their first-order logic specifications. The method is practical because it is strictly top-down and has been implemented as part of a user-guided synthesis system in Prolog. We have used the system to synthesise procedures for a wide variety of algorithms, including a large family of recursive sorting procedures. In this paper we describe the synthesis of this family of procedures. 1 Introduction Although much theoretical work has been done in logic program derivation, most notably by Clark, Hansson, Hogger, and Tarnlund [3, 4, 7, 9], there has been relatively little work in mechanising logic program synthesis. The recent work of Sato and Tamaki [15, 14] is one of the few examples. Independently, we worked on designing and implementing a practical system for mechanised program synthesis. The result is a method for top-down synthesis of recursive logic procedures from their specifications in fir...
An Incompleteness Result for Deductive Synthesis of Logic Programs
- Proc. 10 th Int. Conf. on Logic Programming
, 1993
"... We formalise the derivation of logic programs from their specifications by deductive synthesis, and introduce the notion of uniform equivalence between logical systems. This enables us to present an incompleteness result for deductive synthesis of logic programs from first-order logic specifications ..."
Abstract
-
Cited by 7 (6 self)
- Add to MetaCart
We formalise the derivation of logic programs from their specifications by deductive synthesis, and introduce the notion of uniform equivalence between logical systems. This enables us to present an incompleteness result for deductive synthesis of logic programs from first-order logic specifications. 1 Introduction Logic program synthesis was studied by some researchers in the early days of logic programming. Most notable among these are Clark, Hansson, Hogger, and Tarnlund. Automated (or semi-automated) synthesis, however, has only received serious attention much more recently. A preliminary survey, in the form of a catalogue, of logic program synthesis methods can be found in [8]. The goal of logic program synthesis is to systematically derive logic programs from their specifications. For example, in the proofs-as-programs approach, the specification takes the form of a theorem (or more accurately a conjecture) stating the existence of the required output for any legitimate input; a...
Mixing List Recursion and Arithmetic
- Proc. 7th IEEE Symp. on Logic in Computer Science
, 1991
"... We consider in this paper a special class of predicates. Every class predicate, say p, has one argument denoted Y of type list. All the other arguments are integers and form a vector denoted X. The predicates are primitive recursively defined over the structure of Y, and the auxiliary predicates are ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
We consider in this paper a special class of predicates. Every class predicate, say p, has one argument denoted Y of type list. All the other arguments are integers and form a vector denoted X. The predicates are primitive recursively defined over the structure of Y, and the auxiliary predicates are arithmetic relations over the integer arguments. When two atoms of this class, say p 1 (Y, X 1 ) and p 2 (Y, X 2 ), share the same list argument Y, it induces an implicit relation between the integers of X 1 and X 2 . We describe a method for generating under certain conditions an arithmetic expression that characterizes this relation. The method is useful for proving or synthesizing inductive assertions about programs with arrays. 1 Introduction When proving assertions about programs with arrays, one often meets boundary conditions which can be encoded under the following form (~) p 1 (Y, X 1 ):::p n (Y, Xn ) ) a(X 1 [ :::[ Xn ) where Y is a list variable, X 1 ,...,X n are vectors of natu...
Forms of Logic Specifications: A Preliminary Study
- Proc. LOPSTR'96, pages 295--312, LNCS 1207
, 1997
"... . There is no universal agreement on exactly what form a specification should take, what part it should play in synthesis, and what its precise relationship with the specified program should be. In logic programming, the role of specification is all the more unclear since logic programs are often us ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
. There is no universal agreement on exactly what form a specification should take, what part it should play in synthesis, and what its precise relationship with the specified program should be. In logic programming, the role of specification is all the more unclear since logic programs are often used as executable specifications. In this paper we take the view that specifications should be set in the context of the problem domain, which we call a framework . We conduct a preliminary study of two useful forms of logic specifications: if-and-only-if and partial specifications. First we set up a three-tier formalism for synthesis, the top-tier being a framework. Then within this formalism we define these two forms of specifications, and discuss their roles in synthesis. 1 Introduction The purpose of program synthesis is to derive programs that are correct wrt to their (formal or informal) specifications. There is no universal agreement, however, on exactly what form a specification sho...
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.
Synthesis of Composition and Discrimination Operators for Divide-and-Conquer Logic Programs
, 1993
"... ..."
Hoare Logic, Executable Specifications, and Logic Programs
, 1992
"... this paper, I present a new method that is based on non-executable logic specifications derived from Hoare correctness formulae for logic programs. Logic specifications specify the same programs, they are equivalent to correctness formulae. 2 ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
this paper, I present a new method that is based on non-executable logic specifications derived from Hoare correctness formulae for logic programs. Logic specifications specify the same programs, they are equivalent to correctness formulae. 2
Logic Program Synthesis via Proof Planning using Clam
, 1999
"... Logic Programs are computer programs whose syntax is logic. An example of such a language is Prolog. This Msc dissertation describes a system that automatically synthesizes logic programs from their specications. This is done within a framework of theorem proving using the Clam proof planner develop ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Logic Programs are computer programs whose syntax is logic. An example of such a language is Prolog. This Msc dissertation describes a system that automatically synthesizes logic programs from their specications. This is done within a framework of theorem proving using the Clam proof planner developed in the Department of AI, Edinburgh. The developed system is partly a re-implementation of work done by Ina Kraan in her PhD awarded by the Department. However, this project extends her work greatly through its use of the higher order programming language Prolog. The system is extended to cope with synthesizing of higher order programs and programs that depend on certain assumptions about the objects they are manipulating (parameterized proofs). Acknowledgements I would rst of all like to thank my supervisors, Dr Alan Smaill and Dr Julian Richardson, for their patient and careful guidance during the course of the research reported here. Also, I thank the EPSRC who provided nancial ...
Automatic Derivation of Logic Programs by Transformation
- Course notes for ESSLLI
, 2000
"... We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To il ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To illustrate the power of the program transformation approach we also give some examples of program development. Finally, we show how to use program transformations for proving properties of predicates and synthesizing programs from logical specifications.

