skip to main content
research-article

A language and framework for invariant-driven transformations

Authors Info & Claims
Published:04 October 2009Publication History
Skip Abstract Section

Abstract

This paper describes a language and framework that allow coordinated transformations driven by invariants to be specified declaratively, as invariant rules, and applied automatically. The framework supports incremental maintenance of invariants for program design and optimization, as well as general transformations for instrumentation, refactoring, and other purposes. This paper also describes our implementations for transforming Python and C programs and experiments with successful applications of the systems in generating efficient implementations from clear and modular specifications, in instrumenting programs for runtime verification, profiling, and debugging, and in code refactoring.

References

  1. ANSI INCITS. Role-Based Access Control. ANSI INCITS 359-2004, American National Standards Institute, International Committee for Information Technology Standards, Feb. 2004.Google ScholarGoogle Scholar
  2. Friedrich Ludwig Bauer, Bernhard Moller, Helmut Partsch, and Peter Pepper. Formal program construction by transformations-Computer-aided, intuition-guided programming. IEEE Transactions on Software Engineering, 15(2):165--180, Feb. 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. Stratego/xt 0.17. a language and toolset for program transformation. Science of Computer Programming, 72(1-2):52--70, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Sean Callanan, Daniel J. Dean, and Erez Zadok. Extending GCC with modular GIMPLE optimizations. In Proceedings of the 2007 GCC Developers' Summit, July 2007.Google ScholarGoogle Scholar
  5. Jong-Deok Choi, Michael Burke, and Paul Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Conference Record of the 20th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 232--245, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Roger F. Crew. ASTLOG: A language for examining abstract syntax trees. In Proceedings of the Conference on Domain-Specific Languages, pages 229--242, Oct. 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Simon F. Goldsmith, Robert O'Callahan, and Alex Aiken. Relational queries over program traces. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 385--402, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Michael Gorbovitski, Tom Rothamel, Yanhong A. Liu, and Scott D. Stoller. Efficient runtime invariant checking: A framework and case study. In Proceedings of the 6th Sixth International Workshop on Dynamic Analysis, pages 43--49, July 2008a. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Michael Gorbovitski, K. Tuncay Tekle, Tom Rothamel, Scott D. Stoller, and Yanhong A. Liu. Analysis and transformations for efficient querybased debugging. In Proceedings of the 8th IEEE International Working Conference on Source Code Analysis and Manipulation, pages 174--183, Sept. 2008b.Google ScholarGoogle Scholar
  10. Michael Gorbovitski, Tuncay Tekle, and Yanhong A. Liu. Assessing alias analysis for object-oriented and dynamic languages. Technical Report DAR 09-44, Computer Science Department, SUNY Stony Brook, 2009.Google ScholarGoogle Scholar
  11. Deepak Goyal. Transformational derivation of an improved alias analysis algorithm. Higher-Order and Symbolic Computation, 18(1-2):15--49, June 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of aspectj. In Proceedings of the 15th European Conference on Object-Oriented Programming, pages 327--353, June 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Proceedings of the 11th Europeen Conference on Object-Oriented Programming, pages 220--242, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  14. Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski, Tom Rothamel, and Yanni E. Liu. Incrementalization across object abstraction. In Proceedings of the 20th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 473--486, Oct. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Yanhong A. Liu, Chen Wang, Michael Gorbovitski, Tom Rothamel, Yongxi Cheng, Yingchao Zhao, and Jing Zhang. Core role-based access control: Efficient implementations by transformations. In Proceedings of the ACM SIGPLAN 2006 Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 112--120, Jan. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Michael Martin, Benjamin Livshits, and Monica S. Lam. Finding application errors and security flaws using PQL: a program query language. In Proceedings of the 20th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 365--383, Oct. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Robert Paige. Viewing a program transformation system at work. In Proceedings of Joint 6th International Conference on Programming Languages: Implementations, Logics and Programs and 4th International Conference on Algebraic and Logic Programming, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Robert Paige and Shaye Koenig. Finite differencing of computable expressions. ACM Transactions on Programming Languages and Systems, 4 (3):402--454, July 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Helmut Partsch and Ralf Steinbruggen. Program transformation systems. ACM Computing Surveys, 15(3):199--236, Sept. 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. ProgramTransformationOrg. The Program Transformation Wiki. http://www.program-transformation.org.Google ScholarGoogle Scholar
  21. Tom Rothamel and Yanhong A. Liu. Generating incremental implementations of object-set queries. In Proceedings of the 7th International Conference on Generative Programming and Component Engineering, pages 55--66, Oct. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Douglas R. Smith. KIDS: A semiautomatic program development system. IEEE Transactions on Software Engineering, 16(9):1024--1043, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Douglas R. Smith. Requirement enforcement by transformation automata. In Proceedings of the 6th Workshop on Foundations of Aspect-Oriented Languages, pages 5--14, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Douglas R. Smith. Aspects as invariants. In O. Danvy, H. Mairson, F Henglein, and A. Pettorossi, editors, Automatic Program Development: A Tribute to Robert Paige, pages 270--286. Springer, 2008.Google ScholarGoogle Scholar
  25. Eelco Visser. A survey of strategies in rule-based program transformation systems. Journal of Symbolic Computation, 40(1):831--873, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A language and framework for invariant-driven transformations

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!