Version: v0.5-M1

About CIF

CIF language

The CIF language is a powerful declarative automata-based modeling language for the specification of discrete event, timed (linear dynamics), and 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 variable 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.

For more information, see the language tutorial and language reference documentation.

CIF tools

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 supervisory controller 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.

For more information, see the tool documentation.

Supervisory controller synthesis

Supervisory controller synthesis (or just, supervisor synthesis) is a key feature of CIF. It involves the automatic generation of supervisory controllers from a specification of the uncontrolled system and the (safety) requirements that the controller needs to enforce.

This shifts controller design from 'how should the implementation work' to 'what should the controller do'. Implementation of the controller is achieved through (implementation language) code generation, reducing the number of errors introduced at this stage.

For more information, see the CIF documentation.

CIF application

CIF has been applied in industry, for various domains, including the medical, semiconductor and public works (infrastructure) domains.

The main application area of CIF is the development of supervisory controllers. The language and tools are however generic, and can be used to work with state machines in general for various other purposes.

Part of Eclipse ESCET

The CIF language and tools are being developed as part of the Eclipse ESCET open-source project. The CIF tools are part of the Eclipse ESCET toolkit.

For more information, see the Eclipse ESCET project website.