Results 1 
7 of
7
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 firstorder logic specifications. The method is practical because it is strictly topdown and has been implemented as part of a userguided 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 firstorder logic specifications. The method is practical because it is strictly topdown and has been implemented as part of a userguided 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 topdown synthesis of recursive logic procedures from their specifications in fir...
Topdown Synthesis of Sorting Algorithms
, 1992
"... Traditionally sorting algorithms are classified according to their main operational characteristic, rather than their underlying logic. More recent work in program synthesis has exposed the logic of and hence the logical relationships between some sorting algorithms. Following the program synthesis ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Traditionally sorting algorithms are classified according to their main operational characteristic, rather than their underlying logic. More recent work in program synthesis has exposed the logic of and hence the logical relationships between some sorting algorithms. Following the program synthesis approach, and by using a logic programming system for deriving recursive logic procedures from their specifications, we have synthesised a large family of sorting algorithms in a strictly topdown manner. Such an approach not only produces algorithms which are guaranteed to be partially correct, it also provides a family tree showing clearly the relationships between its members. This paper contains c.4500 words, 15 pages, and 1 diagram. 1 Introduction Traditionally, algorithms are "discovered" first, and then proved correct. Sorting algorithms are no exception. More recently, work in program synthesis has been applied to the derivation of algorithms from their specifications. The main adva...
Proof Based Synthesis of Sorting Algorithms Authors:
"... July, 2010We present some case studies in constructive synthesis of sorting algorithms. In order to synthesize some algorithms on tuples (like e. g. insertionsort, mergesort) we use an approach based on proving. Namely, we start from the specification of the problem (input and output condition) an ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
July, 2010We present some case studies in constructive synthesis of sorting algorithms. In order to synthesize some algorithms on tuples (like e. g. insertionsort, mergesort) we use an approach based on proving. Namely, we start from the specification of the problem (input and output condition) and we construct an inductive proof of the fact that for each input there exists a solution which satisfies the output condition. The problem will be reduced into smaller and smaller problems, the method will be applied like in a ”cascade” and finally the problem is so simple that the corresponding algorithm (function) already exists in the knowledge. The algorithm can be then extracted immediately from the proof. These experiments are paralleled with the exploration of the appropriate theory of tuples. The purpose of these experiments is multifold: to construct the appropriate knowledge base necessary for this type of proofs, to find the natural deduction inference rules and the necessary strategies for their application, and finally to implement the corresponding provers in the frame of the Theorema system. The novel specific feature of our approach is applying this method like in a ”cascade”
Case Studies in Systematic Exploration of Tuple Theory
, 2010
"... Abstract. We illustrate with concrete examples the systematic exploration of Tuple Theory in a bottomup and topdown way. In the bottomup exploration we start from two axioms, add new notions and in this way we build the theory, check all the new notions introduced and prove some of them by the ne ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Abstract. We illustrate with concrete examples the systematic exploration of Tuple Theory in a bottomup and topdown way. In the bottomup exploration we start from two axioms, add new notions and in this way we build the theory, check all the new notions introduced and prove some of them by the new prover which we created in the TH∃OREM ∀ system. In order to synthesize some algorithms on tuples (like e. g. insertionsort) we use an approach based on proving. Namely, we start from the specification of the problem (input and output condition) and we construct an inductive proof of the fact that for each input there exists a solution which satisfies the output condition. The problem will be reduced to smaller problems, the method will be applied like in a ”cascade” and finally the problem is so simple that the corresponding algorithm (function) already exists in the knowledge. The algorithm can be then extracted immediately from the proof. We present an experiment on synthesis of the insertionsort algorithm on tuples, based on the proof existence of the solution. This experiment is paralleled with the construction (exploration) of the appropriate theory of tuples. The main purpose of this research is to concretely construct examples of theories and to reveal the typical activities which occur in theory exploration, in the context of a specific application – in this case algorithm synthesis by proving. 1
A Logical Inverted Taxonomy of Sorting Algorithms
, 1997
"... Sorting is still one of the most important problems in Computer Science. Work in transformational programming and automatic program synthesis provided the insight that led to Merritt's inverted taxonomy of sorting algorithms, a highlevel, topdown, conceptually simple and symmetric categorization ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Sorting is still one of the most important problems in Computer Science. Work in transformational programming and automatic program synthesis provided the insight that led to Merritt's inverted taxonomy of sorting algorithms, a highlevel, topdown, conceptually simple and symmetric categorization of sorting algorithms. More recent work in logicbased program synthesis by Lau has produced a logical taxonomy of sorting algorithms. This provides a logical basis for the inverted taxonomy and expands it into a logical inverted taxonomy to include distributive sorting algorithms which can be derived along with comparisonbased algorithms. The inclusion of distributive algorithms into a unified conceptual framework is new and significant for a comprehensive perspective on sorting algorithms. In this paper, we describe both the inverted and the logical taxonomies and show how the latter strengthens the latter and expands it into a logical inverted taxonomy of sorting algorithms, a highlevel...
Topdown Synthesis of Recursive Logic Procedures from Firstorder Logic Specifications
 Proc. 7 th Int. Conf. on Logic Programming
, 1990
"... Derivation of logic programs from firstorder logic specifications is nontrivial and tends to be done by hand. We describe a method for synthesising recursive logic procedures from their firstorder logic specifications that is amenable to mechanisation. The method is strictly topdown and has been ..."
Abstract
 Add to MetaCart
Derivation of logic programs from firstorder logic specifications is nontrivial and tends to be done by hand. We describe a method for synthesising recursive logic procedures from their firstorder logic specifications that is amenable to mechanisation. The method is strictly topdown and has been implemented as part of a userguided synthesis system in Prolog.
Semiautomatic Synthesis of Some Sorting Programs in Theorema
"... Abstract. In the context of constructive synthesis we present a general method for synthesis of seven versions of sorting algorithms and the synthesis of some necessary auxiliary functions. We synthesize also new algorithms like: Special MergeSort and Special QuickSort. The method that we implemen ..."
Abstract
 Add to MetaCart
Abstract. In the context of constructive synthesis we present a general method for synthesis of seven versions of sorting algorithms and the synthesis of some necessary auxiliary functions. We synthesize also new algorithms like: Special MergeSort and Special QuickSort. The method that we implemented in the Theorema system and the case studies presented in this paper complement the work from [8]. The synthesis process is paralleled with the exploration of the appropriate theory of lists. 1