Local rely-guarantee reasoning
Author:
Open Access
- 21 January 2009
- conference paper
- Published by Association for Computing Machinery (ACM)
- Vol. 44 (1) , 315-327
Abstract
Rely-Guarantee reasoning is a well-known method for verification of shared-variable concurrent programs. However, it is difficult for users to define rely/guarantee conditions, which specify threads' behaviors over the whole program state. Recent efforts to combine Separation Logic with Rely-Guarantee reasoning have made it pos- sible to hide thread-local resources, but the shared resources still need to be globally known and specified. This greatly limits the reuse of verified program modules. In this paper, we propose LRG, a new Rely-Guarantee-based logic that brings local reasoning and information hiding to concur- rency verification. Our logic, for the first time, supports a frame rule over rely/guarantee conditions so that specifications of pro- gram modules only need to talk about the resources used locally, and the verified modules can be reused in different threads with- out redoing the proof. Moreover, we introduce a new hiding rule to hide the resources shared by a subset of threads from the rest in the system. The support of information hiding not only improves the modularity of Rely-Guarantee reasoning, but also enables the shar- ing of dynamically allocated resources, which requires adjustment of rely/guarantee conditions.Keywords
This publication has 17 references indexed in Scilit:
- Relational separation logicTheoretical Computer Science, 2007
- Resources, concurrency, and local reasoningTheoretical Computer Science, 2007
- A semantics for concurrent separation logicTheoretical Computer Science, 2007
- Modular verification of a non-blocking stack2007
- Dynamic Frames: Support for Framing, Dependencies and Sharing Without Restrictions2006
- Abstracting AllocationLecture Notes in Computer Science, 2006
- Modular verification of multithreaded programsTheoretical Computer Science, 2005
- Permission accounting in separation logic2005
- Verification of safety properties for concurrent assembly code2004
- Hazard pointers: safe memory reclamation for lock-free objectsIEEE Transactions on Parallel and Distributed Systems, 2004