Incremental execution of transformation specifications

We aim to specify program transformations in a declarative style, and then to generate executable program transformers from such specifications. Many transformations require non-trivial program analysis to check their applicability, and it is prohibitively expensive to re-run such analyses after each transformation. It is desirable, therefore, that the analysis information is incrementally updated.We achieve this by drawing on two pieces of previous work: first, Bernhard Steffen's proposal to use model checking for certain analysis problems, and second, John Conway's theory of language factors. The first allows the neat specification of transformations, while the second opens the way for an incremental implementation. The two ideas are linked by using regular patterns instead of Steffen's modal logic: these patterns can be viewed as queries on the set of program paths.

[1]  Scott A. Smolka,et al.  Incremental Model Checking in the Modal Mu-Calculus , 1994, CAV.

[2]  Roland Carl Backhouse,et al.  Factor Graphs, Failure Functions and BI-Trees , 1977, ICALP.

[3]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[4]  Eric Van Wyk,et al.  Universal Regular Path Queries , 2003, High. Order Symb. Comput..

[5]  Ondrej Lhoták,et al.  Points-to analysis using BDDs , 2003, PLDI '03.

[6]  Eric Van Wyk,et al.  Proving correctness of compiler optimizations by temporal logic , 2002, POPL '02.

[7]  Sorin Lerner,et al.  ESP: path-sensitive program verification in polynomial time , 2002, PLDI '02.

[8]  Oege de Moor,et al.  Imperative Program Transformation by Rewriting , 2001, CC.

[9]  Sorin Lerner,et al.  Composing dataflow analyses and transformations , 2002, POPL '02.

[10]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[11]  Mary Lou Soffa,et al.  An approach for exploring code improving transformations , 1997, TOPL.

[12]  Thomas W. Reps,et al.  Demand Interprocedural Program Analysis Using Logic Databases , 1993, Workshop on Programming with Logic Databases , ILPS.

[13]  Roland Carl Backhouse,et al.  Fusion on Languages , 2001, ESOP.

[14]  J. Conway Regular algebra and finite machines , 1971 .

[15]  Rajiv Gupta,et al.  A practical framework for demand-driven interprocedural data flow analysis , 1997, TOPL.

[16]  Yanhong A. Liu,et al.  From datalog rules to efficient programs with time and space guarantees , 2003, PPDP '03.

[17]  Oege de Moor,et al.  Transforming the .NET intermediate language using path logic programming , 2002, PPDP '02.

[18]  Roland Carl Backhouse Closure algorithms and the star-height problem of regular languages , 1976 .

[19]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[20]  Mary Lou Soffa,et al.  An Incremental Version of Iterative Data Flow Analysis , 1989, IEEE Trans. Software Eng..

[21]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[22]  Barbara G. Ryder,et al.  Incremental data flow analysis via dominator and attribute update , 1988, POPL '88.

[23]  U. Assmann OPTIMIX—a tool for rewriting and optimizing programs , 1999 .

[24]  Robert Paige,et al.  Viewing A Program Transformation System At Work , 1994, Symposium on Programming Language Implementation and Logic Programming.

[25]  Barbara G. Ryder,et al.  Incremental data-flow analysis algorithms , 1988, TOPL.

[26]  G RyderBarbara,et al.  Incremental data-flow analysis algorithms , 1988 .

[27]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[28]  Eelco Visser,et al.  Meta-programming with Concrete Object Syntax , 2002, GPCE.

[29]  Dawson R. Engler,et al.  A system and language for building system-specific, static analyses , 2002, PLDI '02.

[30]  Eelco Visser,et al.  Strategies for Source-to-Source Constant Progagation , 2002, Electron. Notes Theor. Comput. Sci..

[31]  Sorin Lerner,et al.  Automatically proving the correctness of compiler optimizations , 2003, PLDI '03.

[32]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[33]  Bernhard Steffen,et al.  Data Flow Analysis as Model Checking , 1990, TACS.

[34]  Eric Van Wyk,et al.  Using Model Checking in a Parallelizing Compiler , 1998, Parallel Process. Lett..

[35]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[36]  Janusz A. Brzozowski,et al.  Derivatives of Regular Expressions , 1964, JACM.

[37]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.