A Logic for Correlating Temporal Properties across Program Transformations

Program transformations are widely used in synthesis, optimization, and maintenance of software. Correctness of program transformations depends on preservation of some important properties of the input program. By regarding programs as Kripke structures, many interesting properties of programs can be expressed in temporal logics. In temporal logic, a formula is interpreted on a single program. However, to prove correctness of transformations, we encounter formulae which contain some subformulae interpreted on the input program and some on the transformed program. An example where such a situation arises is verification of optimizing program transformations applied by compilers. In this paper, we present a logic called Temporal Transformation Logic (TTL) to reason about such formulae. We consider different types of primitive transformations and present TTL inference rules for them. Our definitions of program transformations and temporal logic operators are novel in their use of the boolean matrix algebra. This results in specifications that are succinct and constructive. Further, we use the boolean matrix algebra in a uniform manner to prove soundness of the TTL inference rules.

[1]  Steven K. Thomason,et al.  Semantic analysis of tense logics , 1972, Journal of Symbolic Logic.

[2]  Rocco De Nicola,et al.  Three logics for branching bisimulation , 1995, JACM.

[3]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[4]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[5]  Aditya Kanade,et al.  Structuring Optimizing Transformations and Proving Them Sound , 2007, COCV@ETAPS.

[6]  David A. Schmidt Data flow analysis is model checking of abstract interpretations , 1998, POPL '98.

[7]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[8]  Amir Pnueli,et al.  Once and for all , 1995, J. Comput. Syst. Sci..

[9]  Robert de Simone,et al.  Symbolic Bisimulation Minimisation , 1992, CAV.

[10]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[11]  Kedar S. Namjoshi A Simple Characterization of Stuttering Bisimulation , 1997, FSTTCS.

[12]  Kathi Fisler,et al.  Bisimulation and Model Checking , 1999, CHARME.

[13]  Rajeev Alur,et al.  Analysis of recursive state machines , 2001, TOPL.

[14]  Melvin Fitting,et al.  Bisimulations and Boolean Vectors , 2002, Advances in Modal Logic.

[15]  Eelco Visser,et al.  A Survey of Strategies in Program Transformation Systems , 2001, WRS.

[16]  Carl Christian Frederiksen Correctness of Classical Compiler Optimizations using CTL , 2002, COCV@ETAPS.

[17]  Thomas A. Henzinger,et al.  Computing simulations on finite and infinite graphs , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[18]  Zohar Manna,et al.  Completing the Temporal Picture , 1991, Theor. Comput. Sci..

[19]  Dhananjay M. Dhamdhere,et al.  Complexity of bi-directional data flow analysis , 1993, POPL '93.

[20]  Aditya Kanade,et al.  Validation of GCC optimizers through trace generation , 2009, Softw. Pract. Exp..

[21]  Amir Pnueli,et al.  The temporal logic of programs , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

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

[23]  David Park,et al.  Concurrency and Automata on Infinite Sequences , 1981, Theoretical Computer Science.

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

[25]  Edmund M. Clarke,et al.  Characterizing Finite Kripke Structures in Propositional Temporal Logic , 1988, Theor. Comput. Sci..

[26]  Max A. Sobel,et al.  Introduction to mathematics , 1984 .

[27]  David A. Schmidt,et al.  Program Analysis as Model Checking of Abstract Interpretations , 1998, SAS.

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

[29]  Amir Pnueli,et al.  A Deductive Proof System for CTL , 2002, CONCUR.