p-offtermatt / FastForward

A tool for reachability and coverability in Petri nets.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FastForward 

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.

Installation

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.

Dependencies

Make sure you have the following installed on your machine:

dotnet core with version at least 3.1.403

Optional dependencies:

  • If you want to run with heuristics using the Gurobi solver:
    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.
  • If you want to run with heuristics using Z3:
    The newest version of Z3
  • Troubleshooting

    Running FastForward outputs libgurobi90.so is not installed

    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.

    Running FastForward outputs "Failed to create CoreCLR"

    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.

    Links

    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

    About

    A tool for reachability and coverability in Petri nets.

    License:MIT License


    Languages

    Language:Python 72.5%Language:Prolog 24.0%Language:Perl 3.3%Language:C# 0.1%Language:TeX 0.0%Language:Shell 0.0%Language:C 0.0%