Supervisor inspection phase

After one or more non-empty supervisors are synthesized during the supervisory synthesis phase, they can be inspected.

Looking at the synthesized supervisor(s) can have several benefits. One benefit is that it may give you a better understanding of the synthesis algorithm, as you can observe the synthesized output for various different plants and requirements.

Another benefit is that you may immediately spot problems, just by looking at the synthesized supervisor. That is, you can inspect your supervisor and check that it contains no undesired behavior, while still maintaining all the desired behavior. If you find out that the synthesized supervisor is not correct, you need to go back to your plants and requirements. If you think it is correct, you can continue with the next phase.

Inspecting the synthesized supervisor(s) is feasible only for small supervisors. For larger supervisors, the large number of locations and edges or the large predicates make it practically impossible to get a sense of what is going on. The inspection phase is therefore completely optional.

If you synthesized multiple supervisors, you can inspect each of them separately. Alternatively, you can inspect the merged supervisor file. Opening large supervisor files is not recommended, for performance reasons.

Inspecting conflicting supervisors is possible, as is inspecting their merged variant. This may give insight into the conflicts, especially in combination with the report file generated by the event-based nonconflicting check tool.

Inspecting event-based supervisors

To inspect an event-based supervisor, simply double click the file that contains the synthesized supervisor. This opens a text editor for that supervisor. Alternatively, you can generate a visual model diagram from the generated supervisor, using the CIF to yEd transformer.

Inspecting data-based supervisors

By default, the data-based supervisor synthesis tool generates data-based supervisors with more or less readable predicates. However, the scripts for the 4K420 course files use an option of the data-based synthesis tool to generate optimized output, making the output unreadable for inspection.

You can change the synthesis script (1a_synthesize1.tooldef2, 1a_synthesize2.tooldef2, etc) by removing the "-t nodes", line, or uncommenting it by putting // before that line. Remove the generated_files files directory and synthesize the supervisor again. Note however that for large supervisors this may make synthesis extremely slow. Then, to inspect it, simply double click the file that contains the synthesized supervisor. This opens a text editor for that supervisor.

Alternatively, leave the scripts as they were, and use the CIF explorer tool to generate a CIF model with the state space of the controlled system, and inspect that CIF model as you would inspect an event-based supervisor.