The working window (Figure 1) of the applet consist of three main tab-panels:

Switching between these panels is performed by clicking appropriate buttons in the top of the main window. The last button (“Information”) brings out pop-up window with theoretical information about the procedure of decomposition.

Note, that “Network” and “Decomposition” panels as well as the informational window are available only if source FSM was successfully decomposed into network.

Figure 1. Working window of the applet

The Status bar that is located in the bottom of the applet used to display information about current state of decomposition. If decomposition was performed correctly, status bar will display information about FSM/FSM Network complexity. Otherwise the type of error will be displayed.

The Hint bar (yellow stripe) is located below the status bar and displays informative help messages about the area currently pointed by mouse. Just hover mouse over some interface item to obtain explanations about it.

Additional information about the theoretical issues of this method of decomposition can be found here.


The working process is usually assumes the following sequence of actions:

1) Specify/edit source FSM
2) Define partition for decomposition
3) Observe obtained results of decomposition

User can also experiment with different partitions and immediately observe changes in the structure of FSM network and network components. If the “Show windows” checkbox is toggled on the “Network” and “Components” tab-panels will be displayed as separated windows. This option allows to instantly see the changes in results after altering the source data.


To begin work with the applet source FSM for decomposition should be specified. The applet provides several methods to do this.

Select FSM from the list of built-in examples

The applet has a number of built-in examples that contain pre-defined FSMs. To load sample select the appropriate FSM from the list in the “Examples” sub-panel. When the applet is started, first of the sample FSMs will be automatically loaded.

Import external specification

The “Import/Export” button brings out the dialog window with the description of current FSM and allows to replace it by supplying another FSM description. The following formats of specification are supported at this moment:

Consist of text rows of the following format:
<source state number> <target state number> <input vector> [output vector]
Widespread FSM description format, elaborated at Berkeley University and used in the well-known SIS system. Additional information about KISS2 format can be found in the Documentation on SIS

Edit FSM manually

There is also possibility to specify FSM directly in the applet. The number of states of FSM is controlled by “Add State”/“Remove State” buttons. In the similar manner, the number of input/output signal lines can be defined by “+X” / “-X” and “+Y” / “-Y” buttons correspondingly.

Transitions between the states should be defined using the FSM graph. To make a transition just drag the mouse from one graph node to another. When the transition is created appropriate row in the FSM’s transition table will appear. Dragging mouse between two graph nodes that are already connected by transition will clear it. Self-transitions can be made by simply clicking on the graph node.

Sometimes several rows in FSM’s transition table are needed to describe condition/output signals for one transition. In this case, holding the SHIFT key down while making a transition will add new rows to the table instead of removing the transition.

Input conditions and outputs signals of FSM are defined by its the transition table. To change values of input/output signals click left/right mouse button on the corresponded symbols in the transition table.


After describing source FSM, user should define partition on the outputs of this FSM that will be used as a basis for decomposition. As in the previous case, user can do this in several ways.

Sample partition

Just in the same way as sample FSMs, there is a number of pre-defined partitions available for each of the built-in FSMs (“Examples” panel). Selection of the item from the list will load corresponded sample partition.

Enter partition manually

To specify partition by hand, enter the string of the following format into the “Partition” text box:

{a1, a2, …, an; b1, b2, …, bm; …; z1, …, zk}

where an, bm, …, zk – are numbers corresponded to the output signals of the FSM. All the an outputs will belong to one block of partition, bm – to another, etc.

For example, if the FSM with 12 outputs is used, one of the correct partitions will be:

{0, 3, 4, 5, 10, 11; 1, 2, 6, 7, 8, 9}

Partition search

The applet is capable to perform search for partition for decomposition by the following criteria:

Note that if the applet cannot find desired type of partition it means that such partition does not exist for the currently specified FSM.


After the FSM and partition are correctly specified, applet automatically performs decomposition, constructs FSMs network and component automata. Structure of the FSM network can be observed on the “Network” (Figure 2) tab-panel, while component FSM are presented in the “Components” panel. The “Information” window (Figure 2) will contain additional data about performed decomposition.

Figure 2. Windows that display constructed network and supplementary information

If the “Compress components” options was checked applet will automatically compress transitions with orthogonal inputs and equal outputs in states of component FSMs (basic minimization).

The information panel displays the following data:

At this step, the information presented in the status bar shows the complexity of obtained FSM Network in comparison with complexity of source FSM. If the decomposition is corresponded to alternatively active datapath or multiple-exclusive communication it will be also indicated in status bar.


More information about the theoretical issues of this method of decomposition can be found here


Last update: 28 July, 2004