Skip to content

utwente-fmt/divine2

Repository files navigation

DiVinE 2.0 Build Status

Introduction

DiVinE 2.0 exploits full power of modern x86 hardware and reduces unnecessary delays in workflow. Employing state-of-the-art parallel liveness checking algorithm, DiVinE 2.0 offers unmatched scalability on both shared memory and distributed memory platforms in the range of 2- to 16-core machines and clusters thereof. Moreover, the tool supports 64-bit platforms out of the box, allowing it to leverage all the memory available in contemporary systems (and systems of the upcoming years).

In the current DiVinE release, input is provided in DVE format -- an industry-strength specification language, as used in original DiVinE Cluster 0.7 and DiVinE Multi-Core 1.x, with plenty of diverse example models, ranging from simple toys to complex real-world models. There is an extensive model resource available, [The Beem Database] 1, with large amount of downloadable models and properties.

Build Instructions

This package requires pthreads and a recent g++ (4.1 or later, tested under 4.3.4). You will also need cmake (www.cmake.org, tested with 2.6 -- however, the configure script could download and compile it for you, just run configure and answer the question(s)).

After unpacking the tarball, compile the source (the build system should give you fairly clear indication what's wrong in case of failure).

$ ./configure
$ make

Assuming, that build finishes successfully, you can try to run the binary:

$ ./_build/tools/divine help
$ ./_build/tools/divine reachability examples/shuffle.dve
$ ./_build/tools/divine owcty examples/peterson-liveness.dve
$ ./_build/tools/divine owcty examples/peterson-naive.dve

There is no need to install the binaries, as they are mostly self-contained. However, to make the tool more readily available, you can install using:

# make install

Further usage instructions

Reference of commandline options is available with divine help, as detailed above. The most useful invocations are these:

  • run reachability on 8 cores: ./_build/tools/divine reachability -w 8 input.dve
  • run LTL model checking on 4 cores: ./_build/tools/divine owcty -w 4 input-with-property.dve

There are several example inputs, mostly coming from [The BEEM Database] 1, distributed with the tool under the examples/ directory. These are the files prefixed beem-. Many more models are available for download in the BEEM repository.

To run DiVinE in a cluster, you can use the usual MPI tools, mpirun or mpiexec. For detailed info about these, please consult the documentation of your MPI implementation. You may also need to use a batch queue system like PBS to run DiVinE on your cluster -- please consult your cluster administrator about that.

When running DiVinE on a cluster manually (without any queue management system), using machines node1 through node3, each of the nodes using 4 CPU cores, you could use the following command:

mpiexec -H node1,node2,node3 ./_build/tools/divine owcty -w 4 model.dve

Please note that this assumes that both the divine binary and the model are available on all the mentioned cluster nodes, with the same paths (relative to your working directory). Your MPI implementation may support binary and input preloading, which would let you run DiVinE without a shared (NFS) filesystem as well.

Graphical User Interface

If Qt4 development files are available on your machine, a graphical user interface for the DiVinE Tool will be compiled as part of the build process. You can run the interface with:

$ PATH=./_build/tools:$PATH ./_build/gui/divine.ide

Please see online help for further information about using the interface. If you have chosen to install the tool, you should put it on your PATH, and then issue divine.ide.

Reporting Problems

The DiVinE project uses Trac for managing problem reports. If you encounter a behaviour you believe is a bug in DiVinE, please [file a new ticket] 1 in [DiVinE Trac] 2. However, before reporting issues, please consider checking if there is a more recent version available and if the issue has been reported already (in the latter case, please add a comment to the existing ticket, that you have encountered the issue, and if possible, any further details you may know about the problem). Thanks in advance.

Obtaining New Versions

The latest release is always available through the [project pages] 1, section Download. You could also obtain the latest development snapshot through darcs (you need darcs version 2.0 or later), which is used for version control:

$ darcs get http://divine.fi.muni.cz/darcs/mainline divine

When you already have a darcs repository of the project, you can get the latest changes by issuing:

$ darcs pull

in the repository directory. For further details on using darcs, please consult the file "HACKING" in the source tree and [darcs homepage] 2.

Licence

The source code comes with NO WARRANTY, as detailed in the licence texts, which may be found in the file "COPYING" in the distribution tarball. The tool is a product of The ParaDiSe Laboratory, Faculty of Informatics of Masaryk University.

This distribution includes freely redistributable third-party code. Please refer to AUTHORS and COPYING included in the distribution for copyright and licensing details.