Results 1 - 10
of
31
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...
Optimal Ordered Problem Solver
, 2002
"... We present a novel, general, optimally fast, incremental way of searching for a universal algorithm that solves each task in a sequence of tasks. The Optimal Ordered Problem Solver (OOPS) continually organizes and exploits previously found solutions to earlier tasks, eciently searching not only the ..."
Abstract
-
Cited by 47 (12 self)
- Add to MetaCart
We present a novel, general, optimally fast, incremental way of searching for a universal algorithm that solves each task in a sequence of tasks. The Optimal Ordered Problem Solver (OOPS) continually organizes and exploits previously found solutions to earlier tasks, eciently searching not only the space of domain-specific algorithms, but also the space of search algorithms. Essentially we extend the principles of optimal nonincremental universal search to build an incremental universal learner that is able to improve itself through experience.
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 27 (9 self)
- Add to MetaCart
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...
Middle-Out Reasoning for Synthesis and Induction
, 1995
"... We develop two applications of middle-out reasoning in inductive proofs: Logic program synthesis and the selection of induction schemes. Middle-out reasoning as part of proof planning was first suggested by Bundy et al [Bundy et al 90a]. Middle-out reasoning uses variables to represent unknown te ..."
Abstract
-
Cited by 24 (11 self)
- Add to MetaCart
We develop two applications of middle-out reasoning in inductive proofs: Logic program synthesis and the selection of induction schemes. Middle-out reasoning as part of proof planning was first suggested by Bundy et al [Bundy et al 90a]. Middle-out reasoning uses variables to represent unknown terms and formulae. Unification instantiates the variables in the subsequent planning, while proof planning provides the necessary search control. Middle-out reasoning is used for synthesis by planning the verification of an unknown logic program: The program body is represented with a meta-variable. The planning results both in an instantiation of the program body and a plan for the verification of that program. If the plan executes successfully, the synthesized program is partially correct and complete. Middle-out reasoning is also used to select induction schemes. Finding an appropriate induction scheme during synthesis is difficult, because the recursion of the program, which is un...
On Specification Frameworks and Deductive Synthesis of Logic Programs
, 1994
"... this paper, we take a closer look at such frameworks. We shall explain what they are, and how they can be used to specify properties such as correctness and modularity (and hence reusability). Moreover, we shall show that there is a close two-way relationship between specification frameworks and ded ..."
Abstract
-
Cited by 23 (16 self)
- Add to MetaCart
this paper, we take a closer look at such frameworks. We shall explain what they are, and how they can be used to specify properties such as correctness and modularity (and hence reusability). Moreover, we shall show that there is a close two-way relationship between specification frameworks and deductive synthesis. In particular, a deductive synthesis process can provide a useful feedback mechanism which can not only check for desirable properties in the specification framework, but also improve the framework (with regard to such properties) using the result of the synthesis. In our approach to modularity, we borrow many of the basic ideas developed in the algebraic approach (e.g. [6, 7, 14]). We shall briefly contrast the two approaches in Section 2.3. 2 Specification Frameworks and Specifications
The Relationship between Logic Programs and Specifications - The Subset Example Revisited
, 1997
"... this paper, we argue that the relation between S and P ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
this paper, we argue that the relation between S and P
Program Development Schemata as Derived Rules
, 2000
"... This paper makes several contributions towards a clarified view of schema-based program development. First, we propose that schemata can be understood, formalized, and used in a simple way: program development schemata are derived rules. We mean this in the standard sense of a derived rule of infere ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
This paper makes several contributions towards a clarified view of schema-based program development. First, we propose that schemata can be understood, formalized, and used in a simple way: program development schemata are derived rules. We mean this in the standard sense of a derived rule of inference in logic. A schema like Figure i can be formulated as a rule stating that the conclusion follows from the premises defining F, G, and the applicability conditions. By deriving the rule in an axiomatic theory, we validate a semantic statement about it: the conclusion of the rule holds in every model where both the axioms of the theory and the premises of the rule are true. Hence, by selecting a language to work in we control which development schemata are formalizable, and by selecting a theory we determine which schemata are derivable
A Formal Approach to Deductive Synthesis of Constraint Logic Programs
- Proc. 1995 Int. Logic Programming Symp
, 1995
"... Formal program synthesis is concerned with deriving programs that are (formally) correct wrt their specifications, and is therefore of crucial importance to formal development of verifiably correct software. Declarative paradigms such as logic programming are particularly suitable for program synthe ..."
Abstract
-
Cited by 8 (6 self)
- Add to MetaCart
Formal program synthesis is concerned with deriving programs that are (formally) correct wrt their specifications, and is therefore of crucial importance to formal development of verifiably correct software. Declarative paradigms such as logic programming are particularly suitable for program synthesis, and we have formulated a formal approach to synthesising standard logic programs. Our approach is object-oriented in the sense that it allows the synthesis of modular, reusable, and hence maintainable programs. In this paper, we propose a formal approach to synthesising constraint logic programs based on our current work. We will show that this approach can be used to synthesise modular and reusable CLP programs. An integral part of this paper is the introduction of an abstract semantics to reason about the synthesis of CLP programs. 1 Introduction Program synthesis is concerned with deriving programs that are correct wrt their specifications. A formal approach to synthesis guarantees ...
A New Technique for Verifying and Correcting Logic Programs
- the Journal of Automated Reasoning
, 1997
"... . A significant extension of a model building method is presented. A quite complete, albeit reasonably short, description of the former method is given in order to make this paper self-contained. The extension allows to handle Presburger arithmetic and to deduce inductive consequences from sets of H ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
. A significant extension of a model building method is presented. A quite complete, albeit reasonably short, description of the former method is given in order to make this paper self-contained. The extension allows to handle Presburger arithmetic and to deduce inductive consequences from sets of Horn clauses. For a large class of programs it also permit to deduce negative facts and to detect non termination. It is shown how the extended method can be used in verifying and correcting programs. Logic programs verification and correction is emphasized, but the same techniques work for imperative programs as evidenced by an example. Models are built incrementally --- feature particularly important in software reusing. The proposed method verifies programs w.r.t. formal specifications, but its fundamentals (i.e. model building) allows to point out errors and suggests the way of correcting wrong programs also w.r.t. informal specifications, such as specifications by examples: : : (this is ...

