Version:
v9.0-RC1
[release notes]

# Module 5.8: Course conclusion

In Module 5, you learned that:

- Adding timing behavior to discrete event models turns them into hybrid models.
- Hybrid models can be used to more accurately model a system, provide more realistic simulation behavior, and validate a controlled system with greater fidelity.
- Hybrid models are supported for simulation, but not for synthesis.
- The CIF language does not define the unit of time, but CIF tools by default interpret time in seconds.
- Compared to the state space of a discrete event model, the state space of a hybrid model has states that additionally contain the current time, and has two types of transitions: event transitions and time transitions.
- Variable `time` represents the absolute time that has passed, since the start of a simulation or execution of a model.
- Variable `time` starts at zero and increases linearly as time passes.
- Variable `time` is read-only, so it cannot be assigned a new value.
- Continuous variables offer more flexibility than the `time` variable, as they measure relative time, can be initialized to any real-typed value, can change at different rates by specifying their derivative, and can be reset by means of assignments.
- A timer is a continuous variable that has a derivative of one, either positive or negative.
- The derivative of a continuous variable can be specified with the declaration of the continuous variable, using a single equation in the same component, or using equations per location of the automaton in which it is declared.
- Comparing time-related values requires taking numeric imprecision into account, for instance by using `>=` or `<=` instead of `=`.
- The CIF simulator features a plot visualizer that can show a graph with the values of the variables of the model over time.
- In CIF, events are urgent, meaning that if any event is enabled, time may not progress.
- CIF features urgent locations. If any automaton is currently in an urgent location, time may not progress.
- In a hybrid model, there is a deadlock if no events are enabled and time may not progress.
- In a hybrid model, a timed livelock occurs if event transitions are always possible and thus time may never progress.
- A timed livelock often occurs in open models, that can be closed by adding the environment.
- A model can for instance be closed by simulating it or by using an SVG image and SVG input mappings.
- The `tau` event can be used on edges when it is not relevant what event is on the edge.
- The `tau` event is neither controllable nor uncontrollable, and doesn't synchronize.
- The `tau` event is not supported by synthesis.
- Edges without an explicitly specified event are implicitly labeled with the `tau` event.
- The CIF merger can be used to merge multiple partial CIF models together into a single CIF model.
- The `fmt` function can be used to perform text formatting, which can be useful for instance to construct values for SVG output mappings.

And with that, you've completed the SBE course! You learned to model plants using discrete event models, add requirements to them, and synthesize a supervisory controller. You then also learned how to make hybrid plant models for simulation, to validate the synthesized controller and check that the specified requirements are indeed the desired requirements. You applied what you learned in the course to the water lock case, getting practical experience with a real-life application.

If you want to learn more about SBE and CIF, check out the following additional information in the CIF documentation:

- Synthesis-Based Engineering manual
- CIF language tutorial
- CIF language reference manual
- CIF tool manual
- CIF tools scripting using ToolDef
- CIF examples