Recent PhD Theses - 3

Author Ashok Sreenivas
Title A Framework for Imperative Program Transformations
Thesis Supervisor K.V. Nori, S. Biswas, A. Sanyal.
Date of Defence 25 November, 1998
Institute granting Degree Indian Institute of Technology, Bombay
Current Address Email: ashoks@pune.tcs.co.in
Tata Research, Design and Development Centre (TRDDC)
54B, Hadapsar Industrial Estate, Hadapsar, Pune 411 013

Abstract

Programs are transformed by a variety of programming tools such as editors, compilers, optimisers, re-engineering tools, reverse-engineering tools etc. In this work we study an important sub-class of program transformations, namely, semantically invariant program transformations of imperative language programs. As program transformations are usually motivated by certain well-defined goals, they are performed under some conditions defined by program analyses. Of the various techniques of program analyses such as data flow analyses, abstract interpretation and type inference, we concentrate on data flow analyses performed over programs represented as control flow graphs.

Most applications of program transformations perform a cascade of transformations, in which each transform is based on some analyses. Therefore, it is imperative that the data flow information associated with the program is updated at each step of the cascade, so that the program remains consistent with its data flow information.

In this work, we develop a framework using which

First, we develop an elegant model of data flow information based on a symbolic representation, and show that this model enables us to present a simple solution to the problem of incremental data flow analysis. Based on this symbolic representation of data flow information, we develop an efficient implementation mechanism for both exhaustive and incremental analyses, using which we maintain the consistency of a program under transformation. This forms the first part of the work.

In the second part, we concentrate on program transformations, and identify a set of control flow graph transform primitives, based on which programs can be transformed. In order to be able to formally reason about the run-time behaviour of the program under transformation, we study the effects of each of these primitives on the execution semantics of a control flow graph and develop a set of rules for semantic invariance of a program under transformation. Finally, based on the transform primitives, we develop a language to enable specification of program transformations, and exemplify our transformation framework by specifying a few transforms using this language and proving them correct.


Previous Thesis
Next Thesis