Abstract
We present Iris, a concurrent separation logic with a simple premise: monoids and invariants are all you need. Partial commutative monoids enable us to express---and invariants enable us to enforce---user-defined *protocols* on shared state, which are at the conceptual core of most recent program logics for concurrency. Furthermore, through a novel extension of the concept of a *view shift*, Iris supports the encoding of *logically atomic specifications*, i.e., Hoare-style specs that permit the client of an operation to treat the operation essentially as if it were atomic, even if it is not.
Supplemental Material
- Appendix and Coq development. http://plv.mpi-sws.org/iris.Google Scholar
- M. Abadi and L. Lamport. The existence of refinement mappings. Theor. Comput. Sci., 82(2):253--284, 1991. Google Scholar
Digital Library
- A. Ahmed, D. Dreyer, and A. Rossberg. State-dependent representation independence. In POPL, 2009. Google Scholar
Digital Library
- P. America and J. Rutten. Solving reflexive domain equations in a category of complete metric spaces. J. Comput. Syst. Sci., 39(3):343--375, 1989.Google Scholar
Cross Ref
- E. A. Ashcroft. Proving assertions about parallel programs. Journal of Computer and System Sciences, 10(1):110--135, 1975. Google Scholar
Digital Library
- L. Birkedal, B. Reus, J. Schwinghammer, K. Støvring, J. Thamsborg, and H. Yang. Step-indexed Kripke models over recursive worlds. In POPL, 2011. Google Scholar
Digital Library
- E. Cohen, et al. Invariants, modularity, and rights. In PSI, 2009. Google Scholar
Digital Library
- P. da Rocha Pinto, T. Dinsdale-Young, and P. Gardner. TaDA: A logic for time and data abstraction. In ECOOP, 2014.Google Scholar
Digital Library
- T. Dinsdale-Young, L. Birkedal, P. Gardner, M. J. Parkinson, and H. Yang. Views: Compositional reasoning for concurrent programs. In POPL, 2013. Google Scholar
Digital Library
- T. Dinsdale-Young, M. Dodds, P. Gardner, M. Parkinson, and V. Vafeiadis. Concurrent abstract predicates. In ECOOP, 2010. Google Scholar
Digital Library
- R. Dockins, A. Hobor, and A. W. Appel. A fresh look at separation algebras and share accounting. In APLAS, 2009. Google Scholar
Digital Library
- X. Feng. Local rely-guarantee reasoning. In POPL, 2009. Google Scholar
Digital Library
- X. Feng, R. Ferreira, and Z. Shao. On the relationship between concurrent separation logic and assume-guarantee reasoning. In ESOP, 2007. Google Scholar
Digital Library
- I. Filipović, P. O'Hearn, N. Torp-Smith, and H. Yang. Blaming the client: On data refinement in the presence of pointers. In FACS, 2009.Google Scholar
- M. Fu, Y. Li, X. Feng, Z. Shao, and Y. Zhang. Reasoning about optimistic concurrency using a program logic for history. In CONCUR, 2010. Google Scholar
Digital Library
- D. Hendler, N. Shavit, and L. Yerushalmi. A scalable lock-free stack algorithm. In SPAA, 2004. Google Scholar
Digital Library
- M. P. Herlihy and J. M. Wing. Linearizability: a correctness condition for concurrent objects. TOPLAS, 12(3):463--492, 1990. Google Scholar
Digital Library
- B. Jacobs. Personal communication, 2014.Google Scholar
- B. Jacobs and F. Piessens. Expressive modular fine-grained concurrency specification. In POPL, 2011. Google Scholar
Digital Library
- J. B. Jensen and L. Birkedal. Fictional separation logic. In ESOP, 2012. Google Scholar
Digital Library
- C. B. Jones. Tentative steps toward a development method for interfering programs. TOPLAS, 5(4):596--619, 1983. Google Scholar
Digital Library
- N. R. Krishnaswami, A. Turon, D. Dreyer, and D. Garg. Superficially substructural types. In ICFP, 2012. Google Scholar
Digital Library
- L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans.\ Comput., 28(9):690--691, 1979. Google Scholar
Digital Library
- R. Ley-Wild and A. Nanevski. Subjective auxiliary state for coarse-grained concurrency. In POPL, 2013. Google Scholar
Digital Library
- H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. In PLDI, 2013. Google Scholar
Digital Library
- R. Milner. Communicating and Mobile Systems: the π-Calculus. Cambridge University Press, 1999. Google Scholar
Digital Library
- A. Nanevski, R. Ley-Wild, I. Sergey, and G. A. Delbianco. Communicating state transition systems for fine-grained concurrent resources. In ESOP, 2014.Google Scholar
Digital Library
- P. O'Hearn. Resources, concurrency, and local reasoning. TCS, 375(1):271--307, 2007. Google Scholar
Digital Library
- S. Owicki and D. Gries. Verifying properties of parallel programs: An axiomatic approach. CACM, 19(5):279--285, 1976. Google Scholar
Digital Library
- A. Pilkiewicz and F. Pottier. The essence of monotonic state. In TLDI, 2011. Google Scholar
Digital Library
- J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS, 2002. Google Scholar
Digital Library
- F. Sieczkowski, A. Bizjak, Y. Zakowski, and L. Birkedal. Modular reasoning about concurrent higher-order imperative programs: a Coq tutorial. http://users-cs.au.dk/birke/modures/tutorial/index.html, 2014.Google Scholar
- K. Svendsen and L. Birkedal. Impredicative concurrent abstract predicates. In ESOP, 2014.Google Scholar
Digital Library
- A. Turon, D. Dreyer, and L. Birkedal. Unifying refinement and Hoare-style reasoning in a logic for higher-order concurrency. In ICFP, 2013. Google Scholar
Digital Library
- A. Turon, J. Thamsborg, A. Ahmed, L. Birkedal, and D. Dreyer. Logical relations for fine-grained concurrency. In POPL, 2013. Google Scholar
Digital Library
- V. Vafeiadis. Modular fine-grained concurrency verification. PhD thesis, University of Cambridge, 2007.Google Scholar
- V. Vafeiadis and M. Parkinson. A marriage of rely/guarantee and separation logic. In CONCUR, 2007. Google Scholar
Digital Library
- D. Walker. Objects in the pi-calculus. Inf. Comput., 116(2):253--271, 1995. Google Scholar
Digital Library
Index Terms
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning
Recommendations
RustBelt: securing the foundations of the Rust programming language
Rust is a new systems programming language that promises to overcome the seemingly fundamental tradeoff between high-level safety guarantees and low-level control over resource management. Unfortunately, none of Rust's safety claims have been formally ...
Separation logic
Separation logic is a key development in formal reasoning about programs, opening up new lines of attack on longstanding problems.
Concurrent separation logic
Concurrent Separation Logic (CSL) was originally advanced in papers of the authors published in Theoretical Computer Science for John Reynolds's 70th Birthday Festschrift (2007). Preliminary versions appeared as invited papers in the CONCUR'04 ...







Comments