Abstract
Rely-guarantee is a well-established approach to reasoning about concurrent
programs that use parallel composition. However, parallel composition is not how concurrency is structured in real systems. Instead, threads are started by ‘fork’ and collected with ‘join’ commands. This style of concurrency cannot be
reasoned about using rely-guarantee, as the life-time of a thread can be scoped
dynamically. With parallel composition the scope is static.
In this paper, we introduce deny-guarantee reasoning, a reformulation of relyguarantee that enables reasoning about dynamically scoped concurrency.We build on ideas from separation logic to allow interference to be dynamically split and recombined, in a similar way that separation logic splits and joins heaps. To allow this splitting, we use deny and guarantee permissions: a deny permission specifies that the environment cannot do an action, and guarantee permission allow us to do an action. We illustrate the use of our proof system with examples, and show that it can encode all the original rely-guarantee proofs.We also present the semantics and soundness of the deny-guarantee method.
programs that use parallel composition. However, parallel composition is not how concurrency is structured in real systems. Instead, threads are started by ‘fork’ and collected with ‘join’ commands. This style of concurrency cannot be
reasoned about using rely-guarantee, as the life-time of a thread can be scoped
dynamically. With parallel composition the scope is static.
In this paper, we introduce deny-guarantee reasoning, a reformulation of relyguarantee that enables reasoning about dynamically scoped concurrency.We build on ideas from separation logic to allow interference to be dynamically split and recombined, in a similar way that separation logic splits and joins heaps. To allow this splitting, we use deny and guarantee permissions: a deny permission specifies that the environment cannot do an action, and guarantee permission allow us to do an action. We illustrate the use of our proof system with examples, and show that it can encode all the original rely-guarantee proofs.We also present the semantics and soundness of the deny-guarantee method.
Original language | English |
---|---|
Title of host publication | Programming Languages and Systems, 18th European Symposium on Programming |
Subtitle of host publication | ESOP 2009 |
Place of Publication | Springer New York |
Publisher | Springer |
Pages | 363-377 |
Number of pages | 15 |
Volume | 5502 |
ISBN (Electronic) | 978-3-642-00590-9 |
ISBN (Print) | 978-3-642-00589-3 |
DOIs | |
Publication status | Published - 2009 |
Event | Programming Languages and Systems : 18th European Symposium on Programming - York (UK), United Kingdom Duration: 22 Mar 2009 → 29 Mar 2009 |
Publication series
Name | Lecture Notes in Computer Science |
---|---|
Publisher | Springer |
Volume | 5502 |
Conference
Conference | Programming Languages and Systems : 18th European Symposium on Programming |
---|---|
Country/Territory | United Kingdom |
City | York (UK) |
Period | 22/03/09 → 29/03/09 |