Implementation of the SMT based Bounded Synthesis and its friends. The framework contains several tools related to the bounded synthesis:
elli.py
: Bounded Synthesis Toolquery_elli.py
: produce SMT queries generated by Ellirally_elli_int.py
andrally_elli_bool.py
: two Elli variations for SYNTCOMPstar.py
: Bounded Synthesis for CTL* based on our CAV'17 paperctl_to_ltl.py
: translator of CTL* specifications to LTL (works for synthesis only), based on our SYNT'17 paperkid.py
: non-SMT based Bounded Synthesis (also from Schewe/Finkbeiner paper)rally_kid_aiger.py
: version of kid for SYNTCOMP that won 2017 competition.ltl_to_aiger.py
: converter of the LTL specification into AIGER specification (the same as used by kid)- and a few other scripts.
This readme has general information. CAV'17 and SYNT'17 specific information is in CAV-readme and SYNT-readme.
I tested on the following machine, but it likely works with other configurations:
- Ubuntu 16.04
- python 3 (version 3.5)
- Z3 (version 4.5.1: link)
- SPOT (version 2.5.1: link)
- python packages:
sympy
,python-graph-core
,python-graph-dot
(install them for example usingpip3
) - There are many other dependencies, they will become clear later.
As for SPOT: I use it via python bindings and it is installed system-wide on my machine, but it can also be installed locally (would need some path tweaking).
Once you installed all dependencies, configure PARTY.
Call ./configure.py
and then modify the created file config.py
with necessary paths.
There are many dependencies.
This depends on what you want to run.
To run an LTL synthesizer:
./elli.py --help
The input format is Acacia+ and TLSF for most of the tools.
The test scripts start with test_
.
Also run nosetests3
.
All tests should pass.
- The encoder for LTL is in
synthesis/buchi_cobuchi_encoder.py
andsynthesis/cobuchi_encoder.py
.
As for other tools, choose the closest, in your opinion, match.
Ayrat Khalimov.\ Also thanks to: Roderick Bloem and Swen Jacobs.\
Please report bugs here or directly gmail me at ayrat.khalimov.