genem-exp

Application 2: Probabilistic Model Checking

This directory contains artifacts for the benchmark of application 2 (probabilistic model checking) in our ATVA’19 submission titled Generic Emptiness Check for Fun and Profit.

This benchmark was run with an extension of PRISM version 4.4. A tarball of this version is given below. The benchmarks were run with the explicit engine of PRISM on a computer with two Intel E5-2680 8-core CPUs at 2.70GHz with 384GB of RAM running Linux and a time-out of 30 min and 10GB memory limit.

The following files are supplied:

Compiling and running PRISM

If you would like to run our benchmark, please install at the following:

At first step, please download our PRISM implementation and unzip it via

$ tar xzf prism-el.tar.gz

To compile PRISM, go to the prism-el/prism/ subdirectory and execute make:

$ cd prism-el/prism
$ make

This will work on Mac OS X and Linux.

If you have trouble compiling PRISM, please try downloading a source distribution from http://www.prismmodelchecker.org/download.php and try whether that works. We also refer to http://www.prismmodelchecker.org/manual/InstallingPRISM/CommonProblemsAndQuestions.

It might be necessary to set the JAVA_DIR variable so that the Makefile can find the JDK installation (see the Makefile):

$ make JAVA_DIR=xxx

Additionally, don’t run make multi-threaded, i.e., with -j x for x>1.

As a result, you should have a working command-line version in

prism-el/prism/bin/prism

and a GUI version in

prism-el/prism/bin/xprism

PRISM can execute external tools to transform an LTL formula into a deterministic automaton. The according scripts can be found prism-el/prism/etc/scripts/hoa/. We used the scripts hoa-rabinizer4-dgra-for-prism and hoa-ltl2tgba-dela-for-prism. You might need to set the according path to Rabinizer (variable RABINIZER), to the JDK which should be used (variable JAVA_HOME), to autfilt of Spot (variable AUTFILT) and to ltl2tgba of Spot (variable LTL2TGBA).

PRISM accepts the following flags relevant to our paper:

The model is taken as positional argument. As an example, to execute PRISM with Rabinizer and our Emerson-Lei emptiness check for the property Pmax=? [((G F p1=0) | (F G p2!=0)) & ((G F p2=0) | (F G p3!=0))], execute:

$prism-el/prism/bin/pris -pf 'Pmax=? [((G F p1=0) | (F G p2!=0)) & ((G F p2=0) | (F G p3!=0))]' mutual4.nm -explicit -ltl2datool prism-el/prism/etc/scripts/hoa/hoa-rabinizer4-dgra-for-prism  -ltl2dasyntax rabinizer -force-elcheck