Commit d97924ec authored by Jeroen Meijer's avatar Jeroen Meijer
Browse files


parent d8142a7e
DiVinE 2.0 [![Build Status](](
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 (, 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
$ ./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
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
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 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].
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
This distribution includes freely redistributable third-party
code. Please refer to AUTHORS and COPYING included in the distribution
for copyright and licensing details.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment