Supplementary data for SPIN2015

title: On Refinement of Buchi Automata for Explicit Model Checking

This document contains the data and commands we used to prepare our paper. You can also use the pdf version of this document.

Attached files description

We provide four kind of files:

All the described benchmark results as well as the list f verification tasks can be found in the directory csv

List of verification tasks

The file verification_tasks.csv contains 4 columns:

The pair (model,formula) defines the verification task as described in the paper. The column `refinement_information shows the information used in all refinements. This column should be interpreted as a space-separated list of comma-separated lists of incompatible APs. To be explicit, 'p1,p2' 'p3' means that atomic propositions p1 and p2 are mutually incompatible (there is no restriction imposed by a list of length 1). Note that it is often the case that the names of APs are enclosed in quotes ("). And finally in the column source you can find two possible values: beem and generated regarding how we obtain the formula of the verification task.

Statistics -- logall

The files of logall_refinfo.csv store stats that we derived from Spin runs of the tasks, and the automata generated by corresponding LTL translator. For each task there are 6 rows with different translators. Note that in simp and aut_ref we used only unique (non-isomorphic) automata so some rows (out of the 6) can be missing. Description of some columns follow:

Merged data

The data for different refinement setting were merged and filtered. The files X_vs_Y.csv are filtered from all timeouts, memoryouts and cases where max_depth reached the limit of 999999999. The columns are the same as at logall files, but with corresponding prefix.

Commands used

We used the following commads to manipulate formulae and automata. They run with timeout set to 20 minutes.

For each combination of model and neverclaim we run Spin using the following sequence of commands (30 minutes TO, 20GB MemoryOut).

  1. spin -a -N <neverclaim_path> <model> to generate the source code of the verifier.
  2. gcc -DMEMLIM=20480 -DNOSTUTTER -o pan pan.c to compile tasks with stutter invariant properties, and gcc -DMEMLIM=20480 -DNOSTUTTER -DNOREDUCE -o pan pan.c for properties that are not stutter invariant. The option -DNOSTUTTER was used to avoid the then-present bug in Spin described in the paper, -DNOREDUCE disables partial order reduction.
  3. ./pan -a -m100000000 to run the verification itself.

We also used autfilt and ltlcross to gather various statistics about the produced automata.

Example

Here we ilustrate how to use the commands on model anderson.4.pm and formula GF"P0@CS" -> GF"P0@NCS" with refinement information '"P0@CS","P0@NCS"'.

  1. Generating neverclaims:
  2. Run Spin for ltl refinement, the results are stored in the file res: