Top-Down Synthesis of Divide-and-Conquer Algorithms

Abstract A top-down method is presented for the derivation of algorithms from a formal specification of a problem. This method has been implemented in a system called cypress . The synthesis process involves the top-down decomposition of the initial specification into a hierarchy of specifications for subproblems. Synthesizing programs for each of these subproblems results in the composition of a hierarchically structured program. The initial specification is allowed to be partial in that some or all of the input conditions may be missing. cypress completes the specification and produces a totally correct applicative program. Much of cypress ' knowledge comes in the form of ‘design strategies’ for various classes of algorithms. The structure of a class of divide-and-conquer algorithms is explored and provides the basis for several design strategies. Detailed derivations of mergesort and quicksort algorithms are presented.

[1]  Robert Balzer,et al.  Report on a knowledge-based software assistant , 1986 .

[2]  Douglas R. Smith Reasoning by Cases and the Formation of Conditional Programs , 1985, IJCAI.

[3]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[4]  Douglas R. Smith Derived Preconditions and Their Use in Program Synthesis , 1982, CADE.

[5]  Susan L. Gerhart Knowledge about programs: A model and case study , 1975 .

[6]  David R. Barstow,et al.  On Program Synthesis Knowledge , 1978, Artif. Intell..

[7]  Zohar Manna,et al.  Synthesis: Dreams - Programs , 1979, IEEE Trans. Software Eng..

[8]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[9]  Keith L. Clark,et al.  Algorithm Classification Through Synthesis , 1980, Comput. J..

[10]  Robert Balzer,et al.  Transformational Implementation: An Example , 1981, IEEE Transactions on Software Engineering.

[11]  Robert Balzer,et al.  On the inevitable intertwining of specification and implementation , 1982, CACM.

[12]  Douglas R. Smith,et al.  The Structure of Divide and Conquer Algorithms. , 1983 .

[13]  C. Cordell Green,et al.  Application of Theorem Proving to Problem Solving , 1969, IJCAI.

[14]  W. W. Bledsoe,et al.  Non-Resolution Theorem Proving , 1977, Artif. Intell..

[15]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[16]  William Taylor Laaser Synthesis of recursive programs , 1979 .

[17]  Lawrence Yelowitz,et al.  Control Structure Abstractions of the Backtracking Programming Technique , 1976, IEEE Transactions on Software Engineering.

[18]  David R. Barstow The Roles of Knowledge and Deduction in Program Synthesis , 1979, IJCAI.

[19]  Douglas R. Smith,et al.  Top-Down Synthesis of Simple Divide and Conquer Algorithms. , 1982 .

[20]  Wolfgang Bibel,et al.  Syntax-Directed, Semantics-Supported Program Synthesis , 1979, Artif. Intell..

[21]  Enn Tyugu,et al.  Justifications of the Structural Synthesis of Programs , 1982, Sci. Comput. Program..

[22]  Manfred Broy,et al.  Program Development as a Formal Activity , 1981, IEEE Transactions on Software Engineering.