4 research outputs found
On the generation and analysis of program transformations
This thesis discusses the idea of using domain specific languages for program transformation, and the application, implementation and analysis of one such domain specific
language that combines rewrite rules for transformation and uses temporal logic to express its side conditions. We have conducted three investigations.
- An efficient implementation is described that is able to generate compiler optimizations from temporal logic specifications. Its description is accompanied by an
empirical study of its performance.
- We extend the fundamental ideas of this language to source code in order to write
bug fixing transformations. Example transformations are given that fix common
bugs within Java programs. The adaptations to the transformation language are
described and a sample implementation which can apply these transformations is
provided.
- We describe an approach to the formal analysis of compiler optimizations that
proves that the optimizations do not change the semantics of the program that
they are optimizing. Some example proofs are included.
The result of these combined investigations is greater than the sum of their parts.
By demonstrating that a declarative language may be efficiently applied and formally reasoned about satisfies both theoretical and practical concerns, whilst our extension
towards bug fixing shows more varied uses are possible
A Framework for Formal Verification of Compiler Optimizations
Abstract. In this article, we describe a framework for formally verify-ing the correctness of compiler optimizations. We begin by giving formal semantics to a variation of the TRANS language [6], which is designed to express optimizations as transformations on control-flow graphs using temporal logic side conditions. We then formalize the idea of correctness of a TRANS optimization, and prove general lemmas about correctness that can form the basis of a proof of correctness for a particular optimiza-tion. We present an implementation of the framework in Isabelle, and as a proof of concept, demonstrate a proof of correctness of an algorithm for converting programs into static single assignment form. Key words: optimizing compilers, theorem proving, program transfor-mations, temporal logic