Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

CREST - A Continuous REactive SysTems DSL

Build Status PyPI Documentation Status codecov (I know, I know, I'm really busy though...)

Binder <-- Launch this repository and play with CREST directly in your browser!


CREST is a novel modelling language for the definition of Continuous-time, REactive SysTems. It is a domain-specific language (DSL) targets small cyber-physical systems (CPS) such as home automation systems. Specifically, it focusses on the flow and transfer of resources within a CPS. While CREST is a graphical language and its systems can be visualised as CREST diagrams, the main form of use is as internal DSL for the Python general purpose programming language.

Try me !

CREST uses Docker, Jupyter notebooks and Binder to create, edit and simulate interactive models online.

You can try CREST yourself by clicking on this link (or on the "launch binder" badge above).

You will find several notebooks that will introduce CREST's Syntax & Semantics and Simulation. You can also just launch the docker container on binder (click the badge) and create a new notebook. You can then create and simulate your own models.


Recommended: Download/clone this repository and use the sources. The easiest way is to use the latest version of CREST is to either launch it on Binder (see above), or create a local Docker image (scripts/ and then run it (scripts/ Alternatively you can use repo2docker.

Local install: You can also use CREST locally and install the dependencies manually. See the Dockerfile for information about the tools and libraries that are used. CREST also requires Microsoft's Z3Prover to be installed (including the Python API).

pip If you have an installation of Z3 ready, you can install with pip install crestdsl.


Please let me know if you want to contribute, then I'll create a proper description here. For now, its some information for myself so I don't forget.

Auto-Build There are several "magic" things going on here. First, travis builds every push and runs the (smoke-) tests to make sure we're not failing too hard. The tests also trigger a code coverage report.

Auto-Deploy Deployments happen automatically on every GitHub release. All you have to do is write a nice description and it will automatically try to deploy to pypi. REMEMBER TO BUMP THE VERSION IN!!!!

Auto-DockerBuild The docker image should be built automatically every night from the latest pip-deployed crestdsl version. This makes sure that the latest package-dependencies are taken into account. Its probably not the smartest idea, since these dependencies can break things, but for now it works. Once we have more users, we can maybe create nightly-versions and stable releases. But that's stuff for the future.


Stefan Klikovits, Auélien Coet and Didier Buchs: ML4CREST: Machine Learning for CPS Models . 2nd International Workshop on Model Driven Engineering for the Internet-of-Things (MDE4IOT), Copenhagen, 2018
    title = {{ML4CREST}: Machine Learning for CPS Models},
    author = {Stefan Klikovits and Aur\'{e}lien Coet and Didier Buchs},
    booktitle = {2nd International Workshop on Model Driven Engineering for the Internet-of-Things (MDE4IOT), Copenhagen, Denmark, October 15, 2018. Proceedings},
    year = {2018},
Stefan Klikovits, Alban Linard and Didier Buchs: CREST - A DSL for Reactive Cyber-Physical Systems. 10th System Analysis and Modeling Conference (SAM) 2018
    title = {{CREST} - A {DSL} for Reactive Cyber-Physical Systems},
    author = {Stefan Klikovits and Alban Linard and Didier Buchs},
    booktitle = {10th International System Analysis and Modeling Conference (SAM 2018), Copenhagen, Denmark, October 15-16, 2018. Proceedings},
    year = {2018},
    pages = {29-45},
    isbn = {978-3-030-01041-6}
Stefan Klikovits, Alban Linard, and Didier Buchs: CREST Formalization. Technical Report. Software Modeling and Verification Group, University of Geneva. 2018
    author = {Stefan Klikovits and Alban Linard and Didier Buchs},
    title = {{CREST} Formalization},
    institution = {Software Modeling and Verification Group, University of Geneva},
    doi = {10.5281/zenodo.1284561},
    year = {2018}
Stefan Klikovits, Alban Linard, Didier Buchs: CREST - A Continuous, REactive SysTems DSL. MODELS (Satellite Events) 2017: 286-291
  author    = {Stefan Klikovits and
               Alban Linard and
               Didier Buchs},
  title     = {{CREST} - {A} Continuous, REactive SysTems {DSL}},
  booktitle = {Proceedings of {MODELS} 2017 Satellite Event: Workshops (ModComp,
               ME, EXE, COMMitMDE, MRT, MULTI, GEMOC, MoDeVVa, MDETools, FlexMDE,
               MDEbug), Posters, Doctoral Symposium, Educator Symposium, {ACM} Student
               Research Competition, and Tools and Demonstrations co-located with
               {ACM/IEEE} 20th International Conference on Model Driven Engineering
               Languages and Systems {(MODELS} 2017), Austin, TX, USA, September,
               17, 2017.},
  pages     = {286--291},
  year      = {2017},
  url       = {\_2.pdf}


  • to Prof. Didier Buchs and the University of Geneva or enabling me to do this research project
  • to the Jupyterhub and Binder teams for providing their amazing service