FastForward is a tool for efficiently (semi-)deciding the reachability and coverability problems in Petri nets. It relies on computationally lightweight over-approximations of Petri nets as distance oracles in infinite graph exploration algorithms such as A* and greedy best-first search. In particular, FastForward can prove unreachability with minimal witnesses.
First, switch to the source folder:
cd artifact/src
To compile FastForward without Gurobi enabled, run the following commands:
./republish.sh
If you want to enable Gurobi bindings, compile like this instead:
./republish_with_gurobi.sh
Either way, the output should contain a line like this, which tells you where the binary is located:
fastforward -> /home/local/username/fastfowardfolder/artifact/src/bin/Debug/netcoreapp3.1/fastforward.dll
Simply run
dotnet /home/local/username/fastfowardfolder/artifact/src/bin/Debug/netcoreapp3.1/fastforward.dll
to invoke the compiled binary.
Make sure you have the following installed on your machine:
dotnet core with version at least 3.1.403
Optional dependencies:
The newest version of Gurobi (an academic license is available for employees at degree-granting institutions) An installation of Gurobi will provide you with the file gurobi90.netstandard20.dll. Copy this file to the folders 'artifact/src/gurobi' and 'artifact/tests/gurobi' to enable compiling with Gurobi.
The newest version of Z3
If you see an error message complaining about the lack of libgurobi90.so
,
it can mean Gurobi is not installed properly, but you compiled with Gurobi.
Check whether you can run the gurobi_cl
command, or compile without Gurobi by using the script republish.sh
to compile FastForward.
The first step when encountering this error is to restart the machine. If the error persists, it can mean that dotnet does not have enough memory available.
Running with Z3 as a heuristic outputs "Unhandled exception. Microsoft.Z3.Z3Exception: Overflow encountered when expanding old_vector"
Some instances are too large for Z3 to solve. You can try running with a different heuristic not using Z3.
Blondin M., Haase C., Offtermatt P. (2021) Directed Reachability for Infinite-State Systems. In: Groote J.F., Larsen K.G. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2021. Lecture Notes in Computer Science, vol 12652. Springer, Cham. https://doi.org/10.1007/978-3-030-72013-1_1
Blondin, Michael; Haase, Christoph; Offtermatt, Philip (2021): FastForward: A tool for reachability in Petri nets with infinite state spaces. Artifact for the TACAS21 Contribution "Directed Reachability for Infinite-State Systems". figshare. Software. https://doi.org/10.6084/m9.figshare.13573592.v1