skip to main content
article

DITTO: automatic incrementalization of data structure invariant checks (in Java)

Published:10 June 2007Publication History
Skip Abstract Section

Abstract

We present DITTO, an automatic incrementalizer for dynamic, side-effect-free data structure invariant checks. Incrementalization speeds up the execution of a check by reusing its previous executions, checking the invariant anew only the changed parts of the data structure. DITTO exploits properties specific to the domain of invariant checks to automate and simplify the process without restricting what mutations the program can perform. Our incrementalizer works for modern imperative languages such as Java and C#. It can incrementalize,for example, verification of red-black tree properties and the consistency of the hash code in a hash table bucket. Our source-to-source implementation for Java is automatic, portable, and efficient. DITTO provides speedups on data structures with as few as 100 elements; on larger data structures, its speedups are characteristic of non-automatic incrementalizers: roughly 5-fold at 5,000 elements,and growing linearly with data structure size.

References

  1. Umut A. Acar, Guy E. Blelloch, Matthias Blume, and Kanat Tangwongsan. An experimental analysis of self-adjusting computation. In PLDI '06: Proceedings of the 2006 ACM SIGPLAN conference on Programming Language Design and Implementation, pages 96--107, New York, NY, USA, 2006. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Umut A. Acar, Guy E. Blelloch, and Robert Harper. Adaptive functional programming. In Symposium on Principles of Programming Languages, pages 247--259, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Thomas Ball, Rupak Majumdar, Todd D. Millstein, and Sriram K. Rajamani. Automatic predicate abstraction of c programs. In SIGPLAN Conference on Programming Language Design and Implementation, pages 203--213, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte. The spec-sharp programming system: An overview. http://research. microsoft.com/specsharp/papers/krml136.pdf.Google ScholarGoogle Scholar
  5. M. Bender, R. Cole, E. Demaine, M. Farach-Colton, and J. Zito. Two simplified algorithms for maintaining order in a list. In Proceedings of the 10th Annual European Symposium on Algorithms (ESA 2002), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Yoonsik Cheon and Gary T. Leavens. A runtime assertion checker for the Java Modeling Language (JML). In Hamid R. Arabnia and Youngsong Mun, editors, Proceedings of the International Conference on Software Engineering Research and Practice (SERP '02), Las Vegas, Nevada, USA, June 24-27, 2002, pages 322--328. CSREA Press, June 2002.Google ScholarGoogle Scholar
  7. S. Chiba and M. Nishizawa. An easy-to-use toolkit for efficient java bytecode translators. In Proceedings of the second International Conference on Generative Programming and Component Engineering (GPCE'03), Erfurt, Germany, volume 2830 of LNCS, pages 364--376, September 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Paul T. Darga and Chandrasekhar Boyapati. Efficient software model checking of data structure properties. SIGPLAN Not., 41(10):363--382, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Alan Demers, Thomas Reps, and Tim Teitelbaum. Incremental evaluation for attribute grammars with application to syntax-directed editors. In POPL '81: Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 105--116, New York, NY, USA, 1981. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Matthew B. Dwyer, John Hatcliff, Roby Joehanes, Shawn Laubach, Corina S. Pasareanu, Robby, Hongjun Zheng, and W. Visser. Tool supported program abstraction for finite-state verification. In International Conference on Software Engineering, pages 177--187, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Hotjava 1.0 signature bug, 1997. http://www.cs.princeton.edu/sip/news/april29.html.Google ScholarGoogle Scholar
  12. Allan Heydon, Roy Levin, and Yuan Yu. Caching function calls using precise dependencies. ACM SIGPLAN Notices, 35(5):311--320, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Jso. http://shaneng.awardspace.com/#jso description.Google ScholarGoogle Scholar
  14. Gary T. Leavens, Albert L. Baker, and Clyde Ruby. JML: A notation for detailed design. In Haim Kilov, Bernhard Rumpe, and Ian Simmonds, editors, Behavioral Specifications of Businesses and Systems, pages 175--188. Kluwer Academic Publishers, 1999.Google ScholarGoogle ScholarCross RefCross Ref
  15. Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski, Tom Rothamel, and Yanni Ellen Liu. Incrementalization across object abstraction. In OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 473--486, New York, NY, USA, 2005. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Yanhong A. Liu and Tim Teitelbaum. Systematic derivation of incremental programs. Science of Computer Programming, 24(1):1--39, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Bob Paige and J. T. Schwartz. Expression continuity and the formal differentiation of algorithms. In POPL '77: Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, pages 58--71, New York, NY, USA, 1977. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Robert Paige and Shaye Koenig. Finite differencing of computable expressions. ACM Trans. Program. Lang. Syst., 4(3):402--454, 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. W. Pugh and T. Teitelbaum. Incremental computation via function caching. In POPL '89: Proceedings of the 16th ACM SIGPLANSIGACT symposium on Principles of programming languages, pages 315--328, New York, NY, USA, 1989. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. G. Ramalingam. Bounded incremental computation. Technical Report 1172, Univ. of Wisconsin, Madison, Computer Sciences Dept., 1210 West Dayton St., Madison, WI 53706, USA, 1993.Google ScholarGoogle Scholar
  21. G. Ramalingam and Thomas Reps. A categorized bibliography on incremental computation. In POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 502--510, New York, NY, USA, 1993. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. S. Graf and H. Saidi. Construction of abstract state graphs with PVS. In O. Grumberg, editor, Proc. 9th International Conference on Computer Aided Verification (CAV'97), volume 1254, pages 72--83. Springer Verlag, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. DITTO: automatic incrementalization of data structure invariant checks (in Java)

    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

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 42, Issue 6
      Proceedings of the 2007 PLDI conference
      June 2007
      491 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1273442
      Issue’s Table of Contents
      • cover image ACM Conferences
        PLDI '07: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation
        June 2007
        508 pages
        ISBN:9781595936332
        DOI:10.1145/1250734

      Copyright © 2007 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 10 June 2007

      Check for updates

      Qualifiers

      • article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader