Reference. Data representation synthesis
Cite
Cites 32 works (1 here)
With notes (1)
Separation logic: A logic for shared mutable data structures reynolds_separation_2002
In joint work with Peter O’Hearn and others, based on early ideas of Burstall, we have developed an extension of Hoare logic that permits reasoning about low-level imperative programs that use shared mutable data structure. The simple imperative programming language is extended with commands (not expressions) for accessing and modifying shared structures, and for explicit allocation and deallocation of storage. Assertions are extended by introducing a “separating conjunction” that asserts that its subformulas hold for disjoint parts of the heap, and a closely related “separating implication”. Coupled with the inductive definition of predicates on abstract data structures, this extension permits the concise and flexible description of structures with controlled sharing. In this paper, we survey the current development of this program logic, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, and recursive procedures. We also discuss promising future directions.
External (31)
- Program analysis for overlaid data structures (2011)
- Shape Analysis of Low-Level C with Overlapping Structures (2010)
- Boost C++ libraries (2010)
- Data structure fusion (2010)
- Statically inferring complex heap, array, and numeric invariants (2010)
- Effective interactive proofs for higher-order imperative programs (2009)
- Modular verification with shared abstractions (2009)
- Chameleon: adaptive selection of collections (2009)
- An integrated proof language for imperative programs (2009)
- jStar: towards practical verification for java (2008)
- Pig latin: a not-so-foreign language for data processing (2008)
- Full functional verification of linked data structures (2008)
- Efficient implementation of tuple pattern based retrieval (2007)
- Shape analysis for composite data structures (2007)
- Declarative object identity using relation types (2007)
- Modular pluggable analyses for data structure consistency (2006)
- LINQ: reconciling object, relations and XML in the .NET framework (2006)
- First-Class Relationships in an Object-Oriented Language (2005)
- Generalized Typestate Checking for Data Structure Consistency (2005)
- Heap monotonic typestates (2003)
- Role analysis (2002)
- A framework for sparse matrix code synthesis from high-level specifications (2000)
- A relational approach to the compilation of sparse matrix programs (1997)
- DiSTiL: a transformation library for data structures (1997)
- An efficient cost-driven index selection tool for Microsoft SQL Server (1997)
- Automating relational operations on data structures (1993)
- Graph types (1993)
- Look ma, no hashing, and no arrays neither (1991)
- Mechanical Translation of Set Theoretic Problem Specifications into Efficient RAM Code-A Case Study (1987)
- Programming by Refinement, as Exemplified by the SETL Representation Sublanguage (1979)
- Automatic data structure selection in SETL (1979)