Static Livelock Analysis in CSP

In a process algebra with hiding and recursion it is possible to create processes which compute internally without ever communicating with their environment. Such processes are said to diverge or livelock. In this paper we show how it is possible to conservatively classify processes as livelock-free through a static analysis of their syntax. In particular, we present a collection of rules, based on the inductive structure of terms, which guarantee livelock-freedom of the denoted process. This gives rise to an algorithm which conservatively flags processes that can potentially livelock. We illustrate our approach by applying both BDD-based and SAT-based implementations of our algorithm to a range of benchmarks, and show that our technique in general substantially outperforms the model checker FDR whilst exhibiting a low rate of inconclusive results.

[1]  Wilson A. Sutherland,et al.  Introduction to Metric and Topological Spaces , 1975 .

[2]  A. W. Roscoe Understanding Concurrent Systems , 2010, Texts in Computer Science.

[3]  Wei Wei,et al.  A Livelock Freedom Analysis for Infinite State Asynchronous Reactive Systems , 2006, CONCUR.

[4]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.

[5]  J. Roger Hindley,et al.  To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism , 1980 .

[6]  Steve A. Schneider,et al.  A CSP Approach to Control in Event-B , 2010, IFM.

[7]  Andrew William Roscoe,et al.  The Theory and Practice of Concurrency , 1997 .

[8]  Christel Baier,et al.  CONCUR 2006 - Concurrency Theory, 17th International Conference, CONCUR 2006, Bonn, Germany, August 27-30, 2006, Proceedings , 2006, CONCUR.

[9]  J. W. de Bakker,et al.  Processes and the Denotational Semantics of Concurrency , 1982, Inf. Control..

[10]  Mario Bravetti,et al.  Deciding and axiomatizing weak ST bisimulation for a process algebra with recursion and action refinement , 2002, TOCL.

[11]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[12]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[13]  Davide Sangiorgi,et al.  Types, or: Where's the Difference Between CCS and pi? , 2002, CONCUR.

[14]  Joël Ouaknine,et al.  A Static Analysis Framework for Livelock Freedom in CSP , 2013, Log. Methods Comput. Sci..

[15]  Joël Ouaknine,et al.  Static Livelock Analysis in CSP : Full Version , 2011 .

[16]  Nobuko Yoshida,et al.  Strong normalisation in the /spl pi/-calculus , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[17]  J. Girard,et al.  Proofs and types , 1989 .

[18]  Bill Roscoe,et al.  Maintaining consistency in distributed databases , 1990 .

[19]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[20]  Steve A. Schneider,et al.  A CSP Account of Event-B Refinement , 2011, Refine@FM.

[21]  Andrew William Roscoe A mathematical theory of communicating processes , 1982 .

[22]  Chris R. Jesshope,et al.  Adaptive, low latency, deadlock-free packet routing for networks of processors , 1989 .

[23]  Wei Wei,et al.  Dependency Analysis for Control Flow Cycles in Reactive Communicating Processes , 2008, SPIN.

[24]  Aleksandar Dimovski A Compositional Method for Deciding Program Termination , 2010, ICT Innovations.

[25]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.