Alphabet Extension "+{…}


Each primitive process has an alphabet consisting of the actions it may take part in. A process may only engage in the actions contained in its alphabet although the converse does not hold. A process may never engage in an action contained in its alphabet. In FSP, the alphabets of processes are defined implicitly. The alphabet of a primitive process consists of all the actions named in the definition of that process. For example, the alphabet of the DRINKS process is shown below together with the process definition.

DRINKS = (black -> coffee -> DRINKS | white -> tea -> DRINKS).

Process:
	DRINKS
States:
	3
Alphabet:
	black
	coffee
	white
	tea

The alphabet listing is as produced by LTSA. It can be seen that it contains all the actions used in the definition of the DRINKS process. It is sometimes useful to extend the alphabet of a process with actions that it does not engage in and consequently actions that are not used in its definition. This may be done to prevent another process executing the action. Alphabet extensions are specified as depicted below for the process NODRINKS.

NODRINKS = STOP + {coffee, tea}.

Process:
	NODRINKS
States:
	1
Alphabet:
	coffee
	tea

NODRINKS composed with DRINKS would result in a deadlocked system since the actions coffee and tea would be blocked..