2012
DOI: 10.1145/2480361.2371407
|View full text |Cite
|
Sign up to set email alerts
|

Synthesizing iterators from abstraction functions

Abstract: 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 wi… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2013
2013
2022
2022

Publication Types

Select...
3
2

Relationship

2
3

Authors

Journals

citations
Cited by 5 publications
(4 citation statements)
references
References 42 publications
0
4
0
Order By: Relevance
“…None of these techniques consider block data structures like C-trees, and they do not generate parallel code. In addition, Rayside et al [41] show how Java iterators can be synthesized for pointer-based data structures given specifications written in relational logic, though their technique does not generate map functions or any other code to actually compute with elements stored in these data structures.…”
Section: Related Workmentioning
confidence: 99%
“…None of these techniques consider block data structures like C-trees, and they do not generate parallel code. In addition, Rayside et al [41] show how Java iterators can be synthesized for pointer-based data structures given specifications written in relational logic, though their technique does not generate map functions or any other code to actually compute with elements stored in these data structures.…”
Section: Related Workmentioning
confidence: 99%
“…An OR Proc is solved by iteratively solving its disjuncts (lines [29][30][31]. An instance is returned as soon as one is found; otherwise, None is returned.…”
Section: Satisfiability Solvingmentioning
confidence: 99%
“…Rayside et al used the Alloy Analyzer to synthesize iterators from abstraction functions [29], as well as complex (non-pure) AVL tree operations from abstract specifications [20]. In both cases, they target a very specific categories of programs, and their approach is based on insights that hold only for those particular categories.…”
Section: Related Workmentioning
confidence: 99%
“…Alloy is declarative, and as such, it is not executable per se; it is instead used primarily for modeling and checking logical properties of various kinds of systems. Most of Alloy's expressive power comes from its relational base (including all the supported relational operators), which, however, can be efficiently executable in the context of object-oriented programs [57]. For example, the dot operator ('.')…”
Section: Domain-specific Programming Languagementioning
confidence: 99%