Automatic Verification of Message-Passing Concurrency
We study the reachability problem of concurrent pushdown systems that communicate via unbounded and unordered message buffers, a model of computation for (message-passing) concurrency-oriented programming languages such as Erlang. Our goal is to relax the common restriction that messages can only be retrieved by a pushdown process when its call stack is empty. We introduce a new class of concurrent pushdown systems–Asynchronously Partially Commutative Pushdown Systems–with a shape constraint on the stacks for which the coverability problem is decidable. Stacks that satisfy the shape constraint may reach arbitrary heights; furthermore a process may execute any communication action (be it process creation, message send or retrieval) whether or not its stack is empty. This class extends previous computational models for asynchronous procedural calls, and enables the safety verification of a large class of recursively-defined message-passing programs.
This talk will begin with a survey of a recent project , Soter, to verify safety properties of Erlang programs by abstract interpretation and infinite-state model checking, and a discussion of the lessons learn. The rest of the talk describes an approach to address a source of imprecision of the Soter method, building on and extending . This is joint work with Jonathan Kochems and Emanuele D’Osualdo.
 Jonathan Kochems, C.-H. Luke Ong: Safety Verification of Asynchronous
Pushdown Systems with Shaped Stacks. CONCUR 2013: 288-302