A Static Analysis Framework for Livelock Freedom 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 pro- cesses are said to diverge or livelock. In this paper we show how it is possible to con- servatively 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 ags 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]  Steve A. Schneider,et al.  A CSP Account of Event-B Refinement , 2011, Refine@FM.

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

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

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

[5]  J. de Vries The General Framework , 1993 .

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

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

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

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

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

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

[12]  Marta Z. Kwiatkowska,et al.  PRISM 4.0: Verification of Probabilistic Real-Time Systems , 2011, CAV.

[13]  Randy H. Katz,et al.  Contemporary logic design (2. ed.) , 2005 .

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

[15]  G. S. Tseitin On the Complexity of Derivation in Propositional Calculus , 1983 .

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

[17]  Sofia Cassel,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 2012 .

[18]  Joël Ouaknine,et al.  Recent Developments in FDR , 2012, CAV.

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

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

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

[22]  Joël Ouaknine,et al.  Static Livelock Analysis in CSP , 2011, CONCUR.

[23]  Christos H. Papadimitriou,et al.  Computational complexity , 1993 .

[24]  Andrew Hinton,et al.  PRISM: A Tool for Automatic Verification of Probabilistic Systems , 2006, TACAS.

[25]  David Anthony Parker,et al.  Implementation of symbolic model checking for probabilistic systems , 2003 .

[26]  Ronald L. Rivest,et al.  Introduction to Algorithms, Second Edition , 2001 .

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

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

[29]  Randy H. Katz,et al.  Contemporary Logic Design , 2004 .

[30]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

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