  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.
