Verification of semantic commutativity conditions and inverse operations on linked data structures
Name
Rinard_Verification of semantic.pdf
Size
240.79 KB
Format
Adobe PDF
Checksum (MD5)
30d6ea5849564438615556861d689f7b
Author(s) •
Kim, Deokhwan
Rinard, Martin C.
Date Issued
June 2011
Journal
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation (PLDI '11)
Publisher
Association for Computing Machinery (ACM)
Citation
Kim, Deokhwan, and Martin C. Rinard. “Verification of Semantic Commutativity Conditions and Inverse Operations on Linked Data Structures.” ACM Press, 2011. 528.
Version
Author's final manuscript
Abstract
We present a new technique for verifying commutativity conditions, which are logical formulas that characterize when operations commute. Because our technique reasons with the abstract state of verified linked data structure implementations, it can verify commuting operations that produce semantically equivalent (but not necessarily identical) data structure states in different execution orders. We have used this technique to verify sound and complete commutativity conditions for all pairs of operations on a collection of linked data structure implementations, including data structures that export a set interface (ListSet and HashSet) as well as data structures that export a map interface (AssociationList, HashTable, and ArrayList). This effort involved the specification and verification of 765 commutativity conditions.
Many speculative parallel systems need to undo the effects of speculatively executed operations. Inverse operations, which undo these effects, are often more efficient than alternate approaches (such as saving and restoring data structure state). We present a new technique for verifying such inverse operations. We have specified and verified, for all of our linked data structure implementations, an inverse operation for every operation that changes the data structure state.
Together, the commutativity conditions and inverse operations provide a key resource that language designers, developers of program analysis systems, and implementors of software systems can draw on to build languages, program analyses, and systems with strong correctness guarantees.
MIT Department
Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Terms of Use
Creative Commons Attribution-Noncommercial-Share Alike 3.0
Persistent DSpace Link
DOI of Published Version
https://doi.org/10.1145/1993498.1993561