RCRS (the Refinement Calculus of Reactive Systems)
is a compositional reasoning framework:
RCRS can model open (input-output), non-deterministic, and non-input-receptive systems.
Non-deterministic means for a given input, many outputs may be possible. Non-input-receptive means some inputs may be declared as illegal.
Components can be specified as symbolic transition systems
or as temporal logic (LTL) formulas.
Components can be composed using three primitive operators:
serial, parallel, and feedback composition.
RCRS supports checking compatibility of components during composition.
RCRS supports refinement, which allows to reason about component substitutability.
RCRS supports both safety and liveness properties.
The Simulink2Isabelle compiler, which translates
(hierarchical block diagrams) into RCRS.
We support a large subset of Simulink's basic blocks, including
continuous-time blocks like Integrators.
The tool chain is illustrated below. The tools currently allow to perform
compatibility checks on a model, to simplify the entire hierarchical model into a
single, monolithic symbolic transition system, and to generate simulation code
in Python. See our SPIN 2016 paper for details.