# Communication Graph Viewer¶

The communication graph of a process is a graph that indicates which processes communicate with which other processes. Thus, it is a graph in which the vertices are subprocesses of the top-level process, and in which there is an edge between any two processes if they can both perform some event. For example, if Dining Philosophers is loaded, then typing :communication_graph SYSTEM into the prompt would show the following window:

In the graph, there is a vertex for each PHIL process and a vertex for each FORK process. Further, there is a edge between each PHIL and its neighbouring FORK processes, since they can both perform pickup and putsdown events.

Clicking on a node in the graph will change the contents of the right-hand pane. For example, selecting PHIL(0) will change the contents of the right-hand pane to the following:

This indicates the name of the process that is selected, along with the processes’ alphabet (i.e. the set of events it can actually perform). Further, the pane also displays communication partners, which are the other processes with which the process communicates, along with the set of events upon which they synchronise.

The Show Global Events option on the bottom right can be used to toggle whether or not a global event is considered in the communication graph. A global event is defined as any event that more than 90% of the processes participate in, and common examples are events such as tock. If this box is left unchecked, then such events will be elided, which will often result in a reduction in the number of edges in the graph.