History-Based Verification of Functional Behaviour of Concurrent Programs

Modular verification of the functional behaviour of a concurrent program remains a challenge. We propose a new way to achieve this, using histories, modelled as process algebra terms, to keep track of local changes. When threads terminate or synchronise in some other way, local histories are combined into global histories, and by resolving the global histories, the reachable state properties can be determined. Our logic is an extension of permission-based separation logic, which supports expressive and intuitive specifications. We discuss soundness of the approach, and illustrate it on several examples.

[1]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[2]  Jan Friso Groote,et al.  Algebraic Process Verification , 2001, Handbook of Process Algebra.

[3]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[4]  Jan Friso Groote,et al.  Linearization in parallel pCRL , 2000, J. Log. Algebraic Methods Program..

[5]  永田 守男,et al.  Verifying Properties of Parallel Programs : An Axiomatic Approach , 1976 .

[6]  Viktor Vafeiadis Automatically Proving Linearizability , 2010, CAV.

[7]  Serdar Tasiran,et al.  A calculus of atomic actions , 2009, POPL '09.

[8]  Susan Owicki,et al.  An axiomatic proof technique for parallel programs I , 1976, Acta Informatica.

[9]  Marieke Huisman,et al.  Verifying Class Invariants in Concurrent Programs , 2014, FASE.

[10]  James Noble,et al.  Aliasing in Object-Oriented Programming. Types, Analysis and Verification , 2013, Lecture Notes in Computer Science.

[11]  Noam Rinetzky,et al.  Brief announcement: concurrency-aware linearizability , 2014, PODC '14.

[12]  Marieke Huisman,et al.  Permission-Based Separation Logic for Multithreaded Java Programs , 2014, Log. Methods Comput. Sci..

[13]  Frank Piessens,et al.  Expressive modular fine-grained concurrency specification , 2011, POPL '11.

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

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

[16]  Marieke Huisman,et al.  The VerCors project: setting up basecamp , 2012, PLPV '12.

[17]  Frank Piessens,et al.  VeriFast for Java: A Tutorial , 2013, Aliasing in Object-Oriented Programming.

[18]  Lars Birkedal,et al.  Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning , 2015, POPL.

[19]  Peter Müller,et al.  Viper: A Verification Infrastructure for Permission-Based Reasoning , 2016, VMCAI.

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

[21]  Hongseok Yang,et al.  Views: compositional reasoning for concurrent programs , 2013, POPL.

[22]  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.

[23]  Frank Piessens,et al.  A programming model for concurrent object-oriented programs , 2008, TOPL.

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

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

[26]  Aleksandar Nanevski,et al.  Subjective auxiliary state for coarse-grained concurrency , 2013, POPL.

[27]  Jan Friso Groote,et al.  Analysis of distributed systems with mCRL2 , 2008 .

[28]  Peter W. O'Hearn,et al.  Resources, Concurrency and Local Reasoning , 2004, CONCUR.

[29]  Lars Birkedal,et al.  Impredicative Concurrent Abstract Predicates , 2014, ESOP.

[30]  Marieke Huisman,et al.  The VerCors Tool for Verification of Concurrent Programs , 2014, FM.