Program Derivation Through Transformations: The Evolution of List-Copying Algorithms

The introduction of Hoare Logic made it feasible to supply correctness proofs of small sequential programs. While correctness proofs of larger programs could be given in principle, the increased size of such a proof warranted additional organization. The present paper puts emphasis on the technique of program transformation to show the derivability and to prove the correctness of some fast list-copying algorithms developed by Robson, Fisher and Clark. This subject was motivated by an earlier paper on the same topic by Lee, De Roever and Gerhart. Some transformation rules necessary for the correctness proofs are given. Other proof techniques used include data refinement and the use of auxiliary variables and structures.

[1]  Gary Lindstrom,et al.  Copying list structures using bounded workspace , 1974, Commun. ACM.

[2]  Norihisa Suzuki Analysis of pointer “rotation” , 1982, CACM.

[3]  Andrzej Blikle Specified programming , 1978, Mathematical Studies of Information Processing.

[4]  Peter G. Neumann,et al.  Computer system - Security evaluation , 1899, AFIPS National Computer Conference.

[5]  John Michael Robson A bounded storage algorithm for copying cyclic structures , 1977, CACM.

[6]  Susan L. Gerhart,et al.  Correctness-preserving program transformations , 1975, POPL '75.

[7]  William L. Scherlis,et al.  Program improvement by internal specialization , 1981, POPL '81.

[8]  Douglas W. Clark A fast algorithm for copying list structures , 1978, CACM.

[9]  Richard S. Bird The promotion and accumulation strategies in transformational programming , 1984, TOPL.

[10]  Willem P. de Roever,et al.  The evolution of list-copying algorithms and the need for structured program verification , 1979, POPL.

[11]  William M. Waite,et al.  An efficient machine-independent procedure for garbage collection in various list structures , 1967, CACM.

[12]  Susan L. Gerhart,et al.  Proof Theory of Partial Correctness Verification Systems , 1976, SIAM J. Comput..

[13]  David A. Fisher Copying cyclic list structures in linear time using bounded workspace , 1975, CACM.

[14]  Helmuth Partsch Structuring Transformational Developments: A Case Study Based on Earley's Recognizer , 1984, Sci. Comput. Program..

[15]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[16]  Zohar Manna,et al.  Deductive Synthesis of the Unification Algorithm , 1981, Sci. Comput. Program..

[17]  Ralph-Johan Back,et al.  Correctness preserving program refinements: Proof theory and applications , 1980 .