Weak Updates and Separation Logic

Authors

Gang Tan    Zhong Shao    Xinyu Feng    Hongxu Cai

Abstract

Separation logic provides a simple but powerful technique for reasoning about low-level imperative programs that use shared data structures. Unfortunately, separation logic supports only "strong updates", in which mutation to a heap location is safe only if a unique reference is owned. This limits the applicability of separation logic when reasoning about the interaction between many high-level languages (e.g., ML, Java, C#) and low-level ones since the high-level languages do not support strong updates. Instead, they adopt the discipline of "weak updates", in which there is a global "heap type" to enforce the invariant of type-preserving heap updates. We present SL^w, a logic that extends separation logic with reference types and elegantly reasons about the interaction between strong and weak updates. We describe a semantic framework for reference types, which is used to prove the soundness of SL^w. Finally, we show how to extend SL^w with concurrency.

Published

  • In New Generation Comput. 29(1): 3-29, 2011 © 2011 Springer-Verlag. [Preprint PDF version]

  • In Proc. 7th Asian Symposium on Programming Languages and Systems (APLAS'09), Seoul, Korea, December 2009. Lecture Notes in Computer Science Vol. 5904, pages 178-193. © 2009 Springer-Verlag. [PDF]. This conference version is superceded by the journal version.


  • Copyright © 2011 Xinyu Feng