Skip to content

Synthesis of discrete dynamical systems from multi-paradigm specifications

License

Notifications You must be signed in to change notification settings

johnyf/openpromela

Repository files navigation

Build Status Coverage Status

About

A synthesizer from open Promela specifications. It:

  • translates open Promela to linear temporal logic
  • encodes bounded linear arithmetic in bitvector logic
  • calls the slugs synthesizer to check if the resulting formula is realizable and construct a transducer realizing a winning strategy
  • return the winning strategy as a Mealy machine

The language and implementation are documented in:

Filippidis I., Murray R.M., Holzmann G.J.; A multi-paradigm language for reactive synthesis, 4th Workshop on Synthesis (SYNT'15), Electronic Proceedings in Theoretical Computer Science (EPTCS), San Francisco, CA, USA, July 2015

Filippidis I., Murray R.M., Holzmann G.J.; Synthesis from multi-paradigm specifications, California Institute of Technology, Pasadena, CA, 2015 (CDSTR:2015.003)

Usage

The package can be used both as a library and from the command line. A script named ospin is created as entry point. It is placed where setuptools installs new executables, e.g., whre python itself resides. To learn how to use the script, invoke it with:

ospin --help

Installation

The Python dependencies can be installed using pip >= 6.1.1:

pip install -r requirements.txt

When these dependencies stabilize, they will be made available on PyPI. After the dependencies are installed, then the openpromela package can be installed with:

python setup.py install

The only non-Python dependency is the synthesizer slugs. It can be installed by either running install_slugs.sh, or following its installation instructions.

License

BSD-3, see LICENSE file.

About

Synthesis of discrete dynamical systems from multi-paradigm specifications

Topics

Resources

License

Stars

Watchers

Forks

Languages