Introduction
The CIF language is a powerful declarative automata-based modeling language for the specification of discrete event, timed (linear dynamics), hybrid (piecewise continuous dynamics) systems. It can be seen as a rich state machine language with the following main features:
-
Modular specification with synchronized events and communication between automata.
-
Many data types are available (booleans, integers, reals, tuples, lists, arrays, sets, and dictionaries), combined with a powerful expression language for compact variables updates.
-
Text-based specification of the automata, with many features to simplify modeling large non-trivial industrial systems.
-
Primitives for supervisory controller synthesis are integrated in the language.
The CIF tooling supports the entire development process of controllers, including among others specification, supervisory controller synthesis, simulation-based validation and visualization, verification, real-time testing, and code generation. Highlights of the CIF tooling include:
-
Text-based editor that allows to easily specify and edit models.
-
Feature-rich powerful data-based synthesis tool. A transformation to the supervisory controller synthesis tool Supremica is also available.
-
A simulator that supports both interactive and automated validation of specifications. Powerful visualization features allow for interactive visualization-based validation.
-
Conversion to formal verification tools such as mCRL2 and UPPAAL.
-
Implementation language code generation (PLC languages, Java, C, and Simulink) for real-time testing and implementation of the designed controller.