Currently there exist only LTL model checking algorithms and reachability analysis algorithms. Support for other logics is the future work.
LTL is natively supported in both DVE and Promela modeling languages by possibility to add the never claim automaton to the source code of a model. This way the product automaton of a model and an LTL formula is created and the verification task reduces to accepting cycle detection.
- Note:
- For Promela we do not provide the possibility to generate the never claim automaton from an LTL formula. For DVE it is made using
divine.combine
- Warning:
- Distributed tools need to be run using utility
mpirun
from MPI distribution. This utility requires absolute path to the executable - E. g.
mpirun -np 10 /usr/bin/divine.bledge peterson.dve
[mpirun -np N] divine.negative_cycle_detection [-hS] [-H size] input_file
LTL model checker based on the accepting cycle detection. Cycles are searched using a distributed algorithm for negative cycle detection. This approach was first published in
Distributed LTL Model Checking Based on Negative Cycle Detection (2001)
Options
- c, statelist ... produce a counterexample list of states
- h, help ... print a brief help
- t, trail ... produce a counterexample trail file (the list of transitions of the system)
- H
x
... set the size of hash table to 
- L, log ... perform logging
- S, printstats ... print statistics at the end of a computation
- X
name
, basename name
... sets a base name of produced files to name
- Y, Z ... reserved for GUI
Output
If LTL formula is true, no accepting cycle is found, the message "No accepting cycle found.
" is printed.
If LTL formula is false, "Accepting cycle found.
" is printed instead.
If -S/--printstats
parameter is set, the statistics is printed too:
- Runtime ... consumed time in seconds
- Consumed memory ... sum of consumed memory on all workstations
- Maximal memory on single computer ... maximum of consumed memory on single a workstation
- Reached states ... number of mutually different generated states of the system
- Size of the initial state ... number of bytes allocated for the initial state
- Size of appendix ... size of additional data stored for each state
- Used transitions ... number of performed transitions of the system
- Number of walks to root ... number of amortized steps (see paper about the algorithm for details)
- States returned to queue ... states sent to another workstation and returned back (see paper about the algorithm for details)
- Number of updates of distances ... number of changes of a distance valuation of states (see paper about the algorithm for details)
- Maximal height of amort. const. ... see paper about the algorithm for details
- Maximal size of state queue ... maximal size of queue of states waiting for exploration (algorithm is BFS-based)
Furthermore if LTL formula is false and -t/--trail
or -c/--statelist
are set, then also special statistics for a counterexample is printed out:
- Runtime ... time additionally consumed for counterexample generation
- Additionally consumed memory ... memory additionally consumed for a counterexample generation (sum of such memory on all workstations)
- Maximal size of state queue ... maximal size of the state queue reached during a counterexample generation
- Length of counterexample's cycle ... length of the cycle contained in a counterexample
- Length of entire counterexample ... number of all states contained in a counterexample
LTL model checker based on the accepting cycle detection.
Token based nested DFS algorithm performs a sequential computation in the distributed memory environment utilizing thus aggregate memory of participating workstations.
[mpirun -np N] divine.distr_map [-hS] [-H size] input_file
Distributed LTL model checker based on the accepting cycle detection. Cycles are detected by the recursively computed function <it>map</it>: maximal accepting predecessor function. This approach was first published in
Accepting Predecessors are Better than Back Edges in Distributed LTL Model-Checking (2004)
Options
- c, statelist ... produce a counterexample list of states
- h, help ... print a brief help
- q, quiet ... quiet mode (do not print anything - overrides all except -h and -v)
- r, report ... produce report (file.distr_map.report)
- t, trail ... produce a counterexample trail file (the list of transitions of the system)
- v, version ... shows program version
- H
x
... set the size of hash table to 
- L, log ... perform logging
- S, printstats ... print statistics at the end of a computation
- X
name
, basename name
... sets a base name of produced files to name
- Y, Z ... reserved for GUI
Output
The number of iterations of the algorithm and the sizes of the set shrinkA after each iteration are printed (see the paper about algorithm for details).
If LTL formula is true, no accepting cycle is found, the message "Accepting cycle: NO.
" is printed.
If LTL formula is false, "Accepting cycle: YES.
" is printed.
If -S/--printstats
parameter is set, the statistics is printed too:
- Computation init ... time spent by the initialization of the computation
- State size ... number of bytes allocated for a state
- Appendix size ... size of additional data stored for each state
- States generated ... number of mutually different generated states of the system
- Hashtable size ... size of the hash table
- Get_succs called ... total number of function
explicit_system_t::get_succs
callings - Trans. relaxed ... total number of relaxed (performed) transitions of the system
- All memory used ... sum of consumed memory on all workstations
- Computation done ... time spent by the whole computation