The sts-cli project is an executable (command line) tool for running CEGAR-based analyses on
Symbolic Transition Systems (STS).
For more information about the STS formalism and its supported language elements, take a look at
the sts project.
sts: Classes to represent STSs and a domain specific language (DSL) to parse STSs from a textual representation.sts-analysis: STS specific analysis modules enabling the algorithms to operate on them.
- First, get the tool.
- The easiest way is to download a pre-built release.
- You can also build the tool yourself. The runnable jar file will appear under build/libs/ with the name theta-sts-cli-<VERSION>-all.jar, you can simply rename it to theta-sts-cli.jar.
- Alternatively, you can use our docker image (see below).
- Running the tool requires Java (JRE) 21.
- The tool also requires the Z3 SMT solver libraries to be available
on
PATH. - The tool can be executed with
java -jar theta-sts-cli.jar [ARGUMENTS].- If no arguments are given, a help screen is displayed about the arguments and their possible values. More information can also be found below.
- For example
java -jar theta-sts-cli.jar --model counter.system --loglevel INFOruns the default analysis with logging on thecounter.systeminput file.
A Dockerfile is also available under the docker directory in the root of the repository. The image can be built using the following command (from the root of the repository):
docker build -t theta-sts-cli -f docker/theta-sts-cli.Dockerfile .
The script run-theta-sts-cli.sh can be used for running the containerized version on models
residing on the host:
./docker/run-theta-sts-cli.sh model.sts [OTHER ARGUMENTS]
Note that the model must be given as the first positional argument (without --model).
All arguments are optional, except --model.
--model: Path of the input STS model (mandatory).--cex: Output file where the counterexample is written (if the result is unsafe). If the argument is not given (default) the counterexample is not printed. UseCON(Windows) or/dev/stdout(Linux) as argument to print to the standard output.--loglevel: Detailedness of logging.- Possible values (from the least to the most detailed):
RESULT,MAINSTEP,SUBSTEP( default),INFO,DETAIL,VERBOSE
- Possible values (from the least to the most detailed):
--version: Print version info (in this case--modelis of course not required).
The arguments related to the algorithm are described in more detail (along with best practices) in CEGAR-algorithms.md.
| Flag | Description |
|---|---|
--stacktrace |
Print full stack trace for exceptions. |
--benchmark |
Benchmark mode, only print metrics in csv format. |
--header |
Print the header for the benchmark mode csv format. |