Fractional permissions without the fractions

Fractional permissions are a popular approach to reasoning about programs that use shared-memory concurrency. Abstractly, they provide a way of managing that either multiple readers or one writer thread can access a resource concurrently. Concretely, specification using fractional permissions typically requires the user to pick concrete mathematical values for partial permissions, making specifications overly verbose, tedious to write, and harder to adapt and re-use. This paper contributes a flexible and expressive specification methodology for supporting fractional permissions while allowing the user to work at the abstract level of read and write permissions. The methodology is flexible and modular, and has been implemented in the verification tool Chalice.

[1]  John Boyland,et al.  Concurrency analysis based on fractional permissions , 2007 .

[2]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[3]  K. Rustan M. Leino,et al.  A Basis for Verifying Multi-threaded Programs , 2009, ESOP.

[4]  Alexey Gotsman,et al.  Local Reasoning for Storable Locks and Threads , 2007, APLAS.

[5]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[6]  Jonathan Aldrich,et al.  Aliasing control with view-based typestate , 2010, FTfJP@ECOOP.

[7]  Peter Müller,et al.  Comparing Verification Condition Generation with Symbolic Execution: An Experience Report , 2012, VSTTE.

[8]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[9]  Jan Smans,et al.  Deadlock-Free Channels and Locks , 2010, ESOP.

[10]  K. Rustan M. Leino,et al.  Fractional permissions without the fractions , 2011, FTfJP@ECOOP.

[11]  Jonathan Aldrich,et al.  A type system for borrowing permissions , 2012, POPL '12.

[12]  Frank Piessens,et al.  Implicit Dynamic Frames: Combining Dynamic Frames and Separation Logic , 2009, ECOOP.

[13]  Andrew W. Appel,et al.  Oracle Semantics for Concurrent Separation Logic , 2008, ESOP.

[14]  Matthew J. Parkinson,et al.  The Relationship between Separation Logic and Implicit Dynamic Frames , 2011, ESOP.

[15]  Peter W. O'Hearn,et al.  Permission accounting in separation logic , 2005, POPL '05.

[16]  Kevin Bierhoff Automated program verification made SYMPLAR: symbolic permissions for lightweight automated reasoning , 2011, Onward! 2011.

[17]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[18]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[19]  Jan Smans,et al.  Verification of Concurrent Programs with Chalice , 2009, FOSAD.

[20]  Wolfram Schulte,et al.  Local Verification of Global Invariants in Concurrent Programs , 2010, CAV.

[21]  Frank Piessens,et al.  A Quick Tour of the VeriFast Program Verifier , 2010, APLAS.