The Refinement Paradigm: The Interaction of Coding and Efficiency Knowledge in Program Synthesis

A refinement paradigm for implementing a high-level specification in a low-level target language is discussed. In this paradigm, coding and analysis knowledge work together to produce an efficient program in the target language. Since there are many possible implementations for a given specification of a program, searching knowledge is applied to increase the efficiency of the process of finding a good implementation. For example, analysis knowledge is applied to determine upper and lower cost bounds on alternate implementations, and these bounds are used to measure the potential impact of different design decisions and to decide which alternatives should be pursued. In this paper we also describe a particular implementation of this program synthesis paradigm, called PSI/SYN, that has automatically implemented a number of programs in the domain of symbolic processing.

[1]  D. Barstow An Experiment in Knowledge-Based Automatic Programming , 1986, Artif. Intell..

[2]  Elaine Kant A Knowledge-Based Approach to Using Efficiency Estimation in Program Synthesis , 1979, IJCAI.

[3]  Elaine Kant,et al.  Efficiency considerations in program synthesis : a knowledge-based approach , 1979 .

[4]  Jacob T. Schwartz,et al.  On programming : an interim report on the SETL Project , 1973 .

[5]  Elaine Kant,et al.  Results in Knowledge-Based Program Synthesis , 1979, IJCAI.

[6]  Lawrence Arnold Rowe A formalization for modelling structures and the generation of efficient implementation structures. , 1976 .

[7]  Charles Rich Inspection methods in programming , 1980 .

[8]  James R. Low Automatic data structure selection: an example and overview , 1978, CACM.

[9]  Mary Shaw,et al.  A formal system for specifying and verifying program performance , 1979 .

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

[11]  Roderic Geoffrey Galton Cattell,et al.  Formalization and Automatic Derivation of Code Generators , 1982 .

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

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

[14]  Thomas E. Cheatham,et al.  A System for Program Refinement , 1979, ICSE.

[15]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[16]  David R. Barstow,et al.  Knowledge-based program construction , 1979 .

[17]  Frank Wm. Tompa,et al.  An Aid For The Selection Of Efficient Storage Structures , 1983 .

[18]  Christopher W. Fraser,et al.  Automatic generation of code generators. , 1977 .

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

[20]  David R. Barstow,et al.  Observations on the interaction between coding and efficiency knowledge in the PSI Program Synthesis System , 1976, ICSE '76.

[21]  Stanley J. Rosenschein,et al.  Selection of representations for data structures , 1977, Artificial Intelligence and Programming Languages.

[22]  Paul D. Rovner,et al.  Automatic representation selection for associative data structures , 1899, AFIPS National Computer Conference.

[23]  Mary Shaw,et al.  Abstraction and Verification in Alphard: Introduction to Language and Methodology , 1976 .

[24]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[25]  Ben Wegbreit Goal-Directed Program Transformation , 1976, IEEE Trans. Software Eng..

[26]  Howard E Shrobe,et al.  Dependency Directed Reasoning for Complex Program Understanding , 1979 .

[27]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.