Synthesizing Iterators from Abstraction Functions

A technique for synthesizing iterators from declarative abstraction functions written in a relational logic specification language is described. The logic includes a transitive closure operator that makes it convenient for expressing reachability queries on linked data structures. Some optimizations...

Full description

Bibliographic Details
Main Authors: Rayside, Derek (Author), Motaghami, Vajihollah (Author), Leung, Francesca (Author), Yuen, Albert (Author), Xu, Kevin (Author), Jackson, Daniel (Contributor)
Other Authors: Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory (Contributor), Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science (Contributor)
Format: Article
Language:English
Published: Association for Computing Machinery (ACM), 2014-05-19T19:56:13Z.
Subjects:
Online Access:Get fulltext
LEADER 01958 am a22002413u 4500
001 87058
042 |a dc 
100 1 0 |a Rayside, Derek  |e author 
100 1 0 |a Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science  |e contributor 
100 1 0 |a Jackson, Daniel  |e contributor 
700 1 0 |a Motaghami, Vajihollah  |e author 
700 1 0 |a Leung, Francesca  |e author 
700 1 0 |a Yuen, Albert  |e author 
700 1 0 |a Xu, Kevin  |e author 
700 1 0 |a Jackson, Daniel  |e author 
245 0 0 |a Synthesizing Iterators from Abstraction Functions 
260 |b Association for Computing Machinery (ACM),   |c 2014-05-19T19:56:13Z. 
856 |z Get fulltext  |u http://hdl.handle.net/1721.1/87058 
520 |a A technique for synthesizing iterators from declarative abstraction functions written in a relational logic specification language is described. The logic includes a transitive closure operator that makes it convenient for expressing reachability queries on linked data structures. Some optimizations, including tuple elimination, iterator flattening, and traversal state reduction, are used to improve performance of the generated iterators. A case study demonstrates that most of the iterators in the widely used JDK Collections classes can be replaced with code synthesized from declarative abstraction functions. These synthesized iterators perform competitively with the hand-written originals. In a user study the synthesized iterators always passed more test cases than the hand-written ones, were almost always as efficient, usually took less programmer effort, and were the qualitative preference of all participants who provided free-form comments. 
546 |a en_US 
655 7 |a Article 
773 |t Proceedings of the 11th International Conference on Generative Programming and Component Engineering (GPCE '12)