Reproducing Results
If you encounter any problems with the instructions below, please contact Thomas Lemberger for support.
Replication Package & Virtual Machine
We provide a replication package for reproducing our experimental results.
The easiest way to use it is with our virtual machine.
Prerequisites
We assume that your machine meets the following or similar requirements:
- Operating system based on Linux 4.x
- OpenJDK 1.8 (or compatible)
- 16 GiB of RAM
- At least 2 CPU cores
We also assume that you use bash as your command-line shell.
In the following, we will refer to the directory test-study of the extracted replication package as $BASE.
We use BenchExec for our experiments, which allows isolated, reproducible execution of benchmarks. It is already installed on the virtual machine provided. If you don't have BenchExec installed, our replication package contains a debian package for easy installation. From $BASE, run the following on the command line:
./setup.sh
After installation, you will have to add your user to group benchexec manually:
sudo gpasswd -a $USER benchexec
For more information and support, see the benchexec documentation.
Getting SV-Benchmarks
The benchmark set is not included with the artifact. To get it, you require git. Run on the command line:git clone https://github.com/sosy-lab/sv-benchmarks.git
cd sv-benchmarks
git checkout 423cf8cbIn the following, we will assume that sv-benchmarks is located in the root directory of our artifact, i.e., test-study/sv-benchmarks .
Benchmark Execution
-
To execute our experiments with TBF, download the benchmark definition tbf_ex.xml and put it in directory test-study/tbf. It contains one run definition per test tool (+ klee-replay). To execute all run definitions, run from the directory of the extracted replication package:
cd $BASE/tbf
PYTHONPATH=./lib/ benchexec tbf_ex.xml
All results will be in $BASE/tbf/results.
-
To execute our experiments with the model checkers,
run:
- For CBMC:
cd $BASE/cbmc
benchexec --container cbmc.xml
The results for cbmc will be in $BASE/cbmc/results
- For CPA-Seq:
cd $BASE/cpa-seq
benchexec --container cpa-seq.xml
The results for CPA-Seq will be in $BASE/cpa-seq/results
- For the two configurations of ESBMC:
cd $BASE/esbmc
benchexec --container esbmc-incr.xml
benchexec --container esbmc-kind.xml
The results for ESBMC-incr and ESBMC-kInd will be in $BASE/esbmc/results
- For CBMC:
-
To visualize the created results, you can use the tool table-generator, which is part of BenchExec.
We provide a table definition to create one big table with all results:
cd $BASE
table-generator -x teststudy_all.xml
table-generator will produce one HTML and one CSV-file. To open the HTML, run
firefox teststudy_all.table.html
-
To validate the witnesses produced by the model checkers, run:
-
To validate witnesses with CPAchecker:
cd $BASE/cpa-seq
benchexec --container cpa-seq-validate-cbmc.xml
benchexec --container cpa-seq-validate-cpa-seq.xml
benchexec --container cpa-seq-validate-esbmc-incr.xml
benchexec --container cpa-seq-validate-esbmc-kind.xml
-
To validate witnesses with CPA-witness2test:
cd $BASE/cpa-seq
benchexec --container cpa-w2t-validate-cbmc.xml
benchexec --container cpa-w2t-validate-cpa-seq.xml
benchexec --container cpa-w2t-validate-esbmc-incr.xml
benchexec --container cpa-w2t-validate-esbmc-kind.xml
-
To validate witnesses with FShell-witness2test:
cd $BASE/cprover-sv-comp/witness2test
benchexec --container fshell-w2t-validate-cbmc.xml
benchexec --container fshell-w2t-validate-cpa-seq.xml
benchexec --container fshell-w2t-validate-esbmc-incr.xml
benchexec --container fshell-w2t-validate-esbmc-kind.xml
-
To validate witnesses with Ultimate Automizer:
cd $BASE/uautomizer
benchexec --container uautomizer-validate-cbmc.xml
benchexec --container uautomizer-validate-cpa-seq.xml
benchexec --container uautomizer-validate-esbmc-incr.xml
benchexec --container uautomizer-validate-esbmc-kind.xml
You will find the results of the validation runs in the corresponding results directories.
-
Finished!
After executing all these steps, you should have produced the data provided above yourself. Feel free to play around with the tools some more. If you have any questions regarding our work, the virtual machine or the results, you can write us at thomas.lemberger@sosy.ifi.lmu.de. And if you are curious about our other publications, visit sosy-lab.org.