REACH.EXE is a reachability checker, used for detecting deadlock, livelock,
and other problems. SYNCDEAD.EST is an AB protocol specification which
has a bug which causes livelock. To check this, use:

EC SYNCDEAD			(compile the spec)
EI SYNCDEAD -C 6 200		(build the behaviour graph)
REACH				(do the check)

You will notice that there are a large number of transients, but
only one small strongly-connected subgraph (nodes 14 through 18).
The latter represent the part of the graph in which there is
livelock; once in this subgraph we can never get out, and some
critical transitions in the specification never occur in this
region.

Note that the file TREE contains the readable text description of
the behaviour graph. This has lines of the form:

Sequences:

1 } 
2 } 12  6  2 
3 } 10 13 


And:

  1>L P0   [  2,  3] { S2  } ( 12 6  2  )
  2>D P1   [  4] { S3  } ( 10 13 )
  4>L P2   [  6,  7] { S4  } ( 4  5  1  )

The second set specify the graph structure, while the first set specifies
the contents of the various nodes. For example, the lines shown are for
nodes 1, 2, and 4. Nodes 1 and 4 are loss nodes (L) while 2 is a delay
node (D). Then comes the parent number (labelled with a P). Then come
the children; node 1 has node 2 as a left (no loss) child, and 3 as a
right (loss) child. Node 2 has a single child, namely node 4.

Within the curly braces, the node sequence number is specified. This
corresponds to the upper lists. The actual sequences are in any case
duplicated with parentheses. Thus, node 1 contains transition sequence
S2, which consists of the sequence t12, t6, t2.

