Abstract-The size and complexity of hardware and software systems continues t o grow, making the introduction of subtle errors a more likely possibility. A major goal of software engineering is t o enable developers t o construct systems that operate reliably despite increased size and complexity. One approach t o achieving this goal is through formal methods: mathematically based languages, techniques and tools for specifying and verifying complex software systems. In this paper, we apply a theoretical tool that is supported by many formal methods, the correctness preserving transformation (CPT), t o a real software engineering problem: the need for optimization during the maintenance of code. We present four program transformations and a model t h a t forms a framework for proof of correctness. We prove the transformations correct and then apply them t o a cryptography application implemented in CS+. Our experience shows that CPTs can facilitate generation of more efficient code while guaranteeing the preservation of original behavior.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.