There are four folders:
SMT_GR(1)_DataSet
Data1
-Data10
are example specifications described based on constraint solving methods.Example
is an example of execution.Date_Core_1
toDate_Core_59
is the data set for RQ2.
SpectraData
This folder contains the specifications based on Boolean encoding method for Data1
-Data10
in SMT_GR(1)_DataSet
.
Experiment
The data set for RQ1.
SMGR1
This is a Java project for syntax parsing. The main function is located in parserMain
. It takes InputSpec.txt
from Data1-Data10
in the SMT_GR(1)_DataSet
folder as input, generating the intermediate file AbstractSpec.txt
and a file that records various information from the initial specifications.
PythonProject
This is a Python project that includes three parts:
- Calculate unsatisfiable cores: The main function is located in
Constraints.py
, which takes the intermediate fileAbstractSpec.txt
generated by the SMGR1 project and the file recording various information from the initial specifications as input. It computes the initial conditions and all the unreachable cores, appending them to the new specifications, with the final specifications located inFinalSpec.txt
. - Example of execution: The main function is located in
AutoParse.py
, which parses the synthesized automaton usingExample
as a running example. The input automaton file isautomaton.txt
, produced from the final specifications generated byConstraints.py
. It also reads the file recording various information from the initial specifications, converting to boolean variables based on the environment input set in the functiongetEnvValue()
and the current state set ingetCurrentValue()
, according to the results parsed fromautomaton.txt
. - Run RQ2: The main function is located in
CoreTimeTest.py
, with the input beingDate_Core_1
toDate_Core_59
fromSMD_GR (1) _SataSet
.
We synthesize the final specifications obtained by our method with the specifications described by Spectra for comparison experiments using the Spectra tool. The configuration scheme for the Spectra environment can be referenced on the website SYNTECH - Spectra (tau.ac.il), and we also list it below:
- Download and install Eclipse for Java and DSL Developers (Windows 64Bit).
- Use "Eclipse/Help/Install new software..." to install Spectra Tools from the site:
http://smlab.cs.tau.ac.il/syntech/spectra/tools/update/
.
After creating a Spectra project in Eclipse, copy the specifications into the .spectra
file, then right-click and run Spectra/Synthesize xx Controller
to obtain the strategy automaton.
docker build -t smt:latest .
docker run -it --rm smt:latest
bash run.sh