scispace - formally typeset
Search or ask a question

Showing papers on "Program transformation published in 1980"


Journal ArticleDOI
TL;DR: In this article, a deductive approach to program synthesis is presented for the construction of recursive programs, which regards program synthesis as a theoremproving task and relies on a theorem-proving method that combines the features of transformation rules, unification and mathematical induction within a single framework.
Abstract: Program synthesis is the systematic derivation of a program from a given specification. A deductive approach to program synthesis is presented for the construction of recursive programs. This approach regards program synthesis as a theorem-proving task and relies on a theorem-proving method that combines the features of transformation rules, unification, and mathematical induction within a single framework.

646 citations


Book ChapterDOI
22 Apr 1980
TL;DR: Call-by-need (which is an equivalent but more efficient implementation of call-By-name for applicative languages) is quite expensive with current hardware and also does not permit full use of the tricks associated with the cheaper call- by-value.
Abstract: Call-by-need (which is an equivalent but more efficient implementation of call-by-name for applicative languages) is quite expensive with current hardware and also does not permit full use of the tricks (such as memo functions and recursion removal) associated with the cheaper call-by-value However the latter mechanism may fail to terminate for perfectly well-defined equations and also invalidates some program transformation schemata

196 citations


Journal ArticleDOI
Mitchell Wand1
TL;DR: It is shown that m many eases such an addit ional variable arises as a representation of the continuation or global context m which the function is evaluated.
Abstract: Program transformations often revolve the generahzation of a function to take additional arguments It is shown that m many eases such an addit ional variable arises as a representation of the continuation or global context m which the function is evaluated. By considering continuations, local transformation strategies can take advantage of global knowledge The general results are followed by two examples' the a-fl tree pruning algorithm and an algorithm for the conversion of a propositional formula to conjunctive normal form

137 citations


Book
01 Jan 1980
TL;DR: The intention is not to develop a theory of programs, concerned with the analysis of existing programs, but instead to developA theory of programming, dealing with the process of constructing new programs, which would have practical benefits both for programming methodology and for automatic synthesis.
Abstract: We explore techniques for systematically deriving programs from specifications. The goal of this exploration is a better understanding of the development of algorithms. Thus, the intention is not to develop a theory of programs, concerned with the analysis of existing programs, but instead to develop a theory of programming, dealing with the process of constructing new programs. Such a theory would have practical benefits both for programming methodology and for automatic synthesis. We investigate the derivation of programs by program transformation techniques. By expanding an ordinary language of recursion equations to include a generalized procedure construct (the expression procedure), our ability to manipulate programs in that language is greatly facilitated. The expression procedure provides a means of expressing information not just about the properties of individual program elements, but also about the way they relate to each other. A set of three operations--abstraction, application, and composition--for transforming programs in this extended language is presented. We prove using operational semantics that these operations preserve the strong equivalence of programs. The well-known systems of Burstall and Darlington and of Manna and Waldinger are both based on an underlying rule system that does not have this property. Our transformation system is illustrated with several small examples, which are examined in detail to give insight to the heuristic problems of program development. A tactic of program specialization is shown to underlie many of these derivations. While we present no implemented system, some consideration is given to issues related to the development of programming tools. The practical value of our approach is demonstrated in the systematic development of a partial family tree of parsing algorithms, similar in spirit to the treatment of sorting by Darlington and by Green and Barstow. Several intricate parsing algorithms (Earley's, Cocke-Younger-Kasami, and Top-Down) are derived in detail.

41 citations


Book ChapterDOI
Michel Sintzoff1
22 Apr 1980
TL;DR: It is proposed to express program designs by hierarchical specifications of design decisions by giving composition rules based on logic for these hierarchical specifications.
Abstract: It is proposed to express program designs by hierarchical specifications of design decisions A case study of program construction is presented to substantiate the proposal Composition rules based on logic are given for these hierarchical specifications Advantages and disadvantages of the suggestions are assessed

19 citations


Proceedings Article
18 Aug 1980

12 citations



Book ChapterDOI
Laurent Kott1
08 Jul 1980
TL;DR: A system for proving equivalences of recursive programs based on program transformations, namely the fold/unfold method and a generalisation of this method are presented.
Abstract: We present a system for proving equivalences of recursive programs based on program transformations, namely the fold/unfold method and a generalisation of this method.

8 citations


01 Jul 1980
TL;DR: This paper shows how RAINBOW operates on sets of recursive functions building combinatorial objects, and uses an extendable set of reduction rules, which constitute the symbolic interpreter.
Abstract: While building or understanding large LISP systems, many small auxiliary functions are often subject to errors or misunderstanding, In the case of very Involved recursions. RAINBOW is a specialized program understanding system able to reduce automatically such sets of recursive functions to a form where the goal of these sets are clearly displayed. RAINBOW can display Interactively the goal-forms Into two sets of new external 2-dlmenslonal notations: recursive and linear. Program understanding is obtained by the translation of the original set of LISP functions Into the open recursive notation, then by elementary symbolic evaluation yielding closed linear forms of the original functions. Those linear forms are exactly the goals wanted. RAINBOW operates efficiently on a definite class of LISP functions, and uses an extendable set of reduction rules, which constitute the symbolic interpreter. RAINBOW can be used interactively if a user want to verify that a set of functions perform its intended goal, or can be incorporated easily as a specialized component of a larger program understanding system. This paper shows how RAINBOW operates on sets of recursive functions building combinatorial objects.

5 citations


Journal ArticleDOI
TL;DR: A list of symbols representing the content of the pushdown list of P except the top symbol, which is empty because initially it is empty.

4 citations


Book ChapterDOI
23 Aug 1980
TL;DR: A new methodology for writing efficient programs is proposed through various examples, which improves program efficiency by the evaluation of functions applications using concurrent computing agents.
Abstract: A new methodology for writing efficient programs is proposed through various examples. The basic ideas are:i) the use of the appli cative stile of programming, so that correctness of programs can easily be proved, and ii) the improvement of program efficiency by the evaluation of functions applications using concurrent computing agents.