A Guide to Rely/Guarantee Thinking

Designing concurrent shared-variable programs is difficult. The Rely-Guarantee concept provides a compositional approach to the challenge. This paper reviews some recent developments in the approach, offers worked examples and relates the approach to other research.

[1]  Cliff B. Jones,et al.  A Structural Proof of the Soundness of Rely/guarantee Rules , 2007, J. Log. Comput..

[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]  Cliff B. Jones,et al.  Developing methods for computer programs including a notion of interference , 1981 .

[4]  Ori Lahav,et al.  Explaining Relaxed Memory Models with Program Transformations , 2016, FM.

[5]  Cliff B. Jones,et al.  Reasoning about Separation Using Abstraction and Reification , 2015, SEFM.

[6]  Viktor Vafeiadis,et al.  Concurrent Abstract Predicates , 2010, ECOOP.

[7]  Xinyu Feng,et al.  On the Relationship Between Concurrent Separation Logic and Assume-Guarantee Reasoning , 2007, ESOP.

[8]  Cliff B. Jones,et al.  Enhancing the tractability of rely/guarantee specifications in the development of interfering operations , 2000, Proof, Language, and Interaction.

[9]  Ian J. Hayes,et al.  Generalised rely-guarantee concurrency: an algebraic foundation , 2016, Formal Aspects of Computing.

[10]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[11]  Xinyu Feng,et al.  Deny-Guarantee Reasoning , 2009, ESOP.

[12]  Juergen Dingel Systematic Parallel Programming , 2000 .

[13]  Susan S. Owicki,et al.  Axiomatic Proof Techniques for Parallel Programs , 1975, Outstanding Dissertations in the Computer Sciences.

[14]  Gidon Ernst,et al.  Interleaved Programs and Rely-Guarantee Reasoning with ITL , 2011, 2011 Eighteenth International Symposium on Temporal Representation and Reasoning.

[15]  Cliff B. Jones,et al.  General Lessons from a Rely/Guarantee Development , 2017, SETTA.

[16]  Richard Bornat,et al.  Explanation of two non-blocking shared-variable communication algorithms , 2011, Formal Aspects of Computing.

[17]  Neil Henderson Formal modelling and analysis of an asynchronous communication mechanism , 2005 .

[18]  Robert Colvin,et al.  Designing a semantic model for a wide-spectrum language with concurrency , 2016, Formal Aspects of Computing.

[19]  Joey W. Coleman,et al.  Constructing a tractable reasoning framework upon a fine-grained structural operational semantics , 2008 .

[20]  Richard Bornat,et al.  Inter-process buffers in separation logic with rely-guarantee , 2010, Formal Aspects of Computing.

[21]  Leonor Prensa Nieto Verification of parallel programs with the Owicki-Gries and Rely-Guarantee methods in Isabelle, HOL , 2002 .

[22]  Alasdair Armstrong,et al.  Formal analysis of concurrent programs , 2015 .

[23]  Cliff B. Jones,et al.  Specification and Design of (Parallel) Programs , 1983, IFIP Congress.

[24]  Xinyu Feng,et al.  Refinement Verification of Concurrent Programs and Its Applications , 2014 .

[25]  Viktor Vafeiadis,et al.  Modular fine-grained concurrency verification , 2008 .

[26]  John Wickerson,et al.  Concurrent verification for sequential programs , 2013 .

[27]  Cliff B. Jones,et al.  Possible values: Exploring a concept for concurrency , 2016, J. Log. Algebraic Methods Program..

[28]  Yang Liu,et al.  CSimpl: A Rely-Guarantee-Based Framework for Verifying Concurrent Programs , 2017, TACAS.

[29]  Xu Qiwen,et al.  A Theory of State-based Parallel Programming: Part 1 , 1991 .

[30]  Jozef Hooman,et al.  Concurrency Verification: Introduction to Compositional and Noncompositional Methods , 2001, Cambridge Tracts in Theoretical Computer Science.

[31]  Ralph-Johan Back,et al.  Refinement Calculus: A Systematic Introduction , 1998 .

[32]  Cliff B. Jones,et al.  Elucidating concurrent algorithms via layers of abstraction and reification , 2011, Formal Aspects of Computing.

[33]  Cliff B. Jones,et al.  Tentative steps toward a development method for interfering programs , 1983, TOPL.

[34]  Robert Colvin,et al.  An Algebra of Synchronous Atomic Steps , 2016, FM.

[35]  Cliff B. Jones,et al.  Deriving Specifications for Systems That Are Connected to the Physical World , 2007, Formal Methods and Hybrid Real-Time Systems.

[36]  Gidon Ernst,et al.  RGITL: A temporal logic framework for compositional reasoning about interleaved programs , 2014, Annals of Mathematics and Artificial Intelligence.

[37]  Georg Struth,et al.  Developments in concurrent Kleene algebra , 2014, J. Log. Algebraic Methods Program..

[38]  Diego Machado Dias,et al.  Mechanising an algebraic rely-guarantee refinement calculus , 2017 .

[39]  Dexter Kozen,et al.  Kleene algebra with tests , 1997, TOPL.

[40]  Cliff B. Jones,et al.  Balancing expressiveness in formal approaches to concurrency , 2015, Formal Aspects of Computing.

[41]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[42]  Alan Burns,et al.  Comparing Degrees of Non-Determinism in Expression Evaluation , 2013, Comput. J..

[43]  Robert Colvin,et al.  A synchronous program algebra: a basis for reasoning about shared-memory and event-based concurrency , 2017, Formal Aspects of Computing.

[44]  Ben C. Moszkowski,et al.  Executing temporal logic programs , 1986, Seminar on Concurrency.

[45]  Cornelis A. Middelburg Logic and Specification: Extending Vdm-Sl for Advanced Formal Specification , 1993 .

[46]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[47]  Peter W. O'Hearn,et al.  Resources, concurrency, and local reasoning , 2007 .