## Total Correctness by Local Improvement in Program Transformation (1995)

Venue: | In Proceedings of the 22nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL |

Citations: | 20 - 3 self |

### BibTeX

@INPROCEEDINGS{Sands95totalcorrectness,

author = {David Sands},

title = {Total Correctness by Local Improvement in Program Transformation},

booktitle = {In Proceedings of the 22nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL},

year = {1995},

pages = {221--232},

publisher = {ACM Press}

}

### Years of Citing Articles

### OpenURL

### Abstract

The goal of program transformation is to improve efficiency while preserving meaning. One of the best known transformation techniques is Burstall and Darlington's unfold-fold method. Unfortunately the unfold-fold method itself guarantees neither improvement in efficiency nor total-correctness. The correctness problem for unfold-fold is an instance of a strictly more general problem: transformation by locally equivalence-preserving steps does not necessarily preserve (global) equivalence. This paper presents a condition for the total correctness of transformations on recursive programs, which, for the first time, deals with higher-order functional languages (both strict and non-strict) including lazy data structures. The main technical result is an improvement theorem which says that if the local transformation steps are guided by certain optimisation concerns (a fairly natural condition for a transformation), then correctness of the transformation follows. The improvement theorem make...