| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
SMPT is a SMT-based model checker for Petri nets focused on reachability problems that takes advantage of net reductions (polyhedral reductions).
The tool can be installed using pip:
$ python setup.py bdist_wheel $ python -m pip install --user dist/smpt-5.0-py3-none-any.whl
Note that the wheel package is required, you can install it using:
$ pip3 install --user wheel
To automatically install dependencies (except Python packages and MiniZinc) you can run the dependencies/install.sh script.
The typing of the code can be checked using mypy by running:
$ mypy smpt --no-strict-optional
The html documentation can be generated using the sphinx generator by running:
$ cd docs $ make html
The tool takes as input descriptions in .pnml (Petri Net Markup Language) and .net format (textual format for Petri nets described in the Tina man pages).
The path to the input Petri net must be specified using the -n <path> option.
SMPT supports the verification of several kind of reachability properties on Petri nets.
For instance, the following call can be used to check for the existence of
deadlocked states on model Kanban-00002.net.
$ python3 -m smpt -n nets/Kanban/Kanban-00002.net --deadlock --methods BMC
The tools also supports colored Petri nets. In this case, use the option --colored and install the mcc tool.
The tool supports three main kinds of properties:
The tool also supports properties from the MCC properties format by using the option --xml and indicating the path to the .xml properties file. At this time, the support is restricted to:
For methods that relies on polyhedral reductions, it is possible to automatically compute the reduction (--auto-reduce) or to provide a pre-computed version with option --reduce <path>. It is also possible to save a copy of the reduced net with the option --save-reduced-net <path>.
Some examples of nets with their corresponding reductions are available in nets/E-Abstraction/.
Results are printed in the text format required by the Model Checking Contest (MCC) which is of the form:
FORMULA <id> (TRUE/FALSE)
Some options permits to obtain more information:
The tool is composed of different methods:
Depending on the input net, SMPT runs a subset of these methods in parallel.
You can restrict the choice of the verification methods with --methods <method_1> ... <methods_n>.
The --auto-enumerative and --enumerative <path> (where the path leads to the list of markings into the .aut format) perform an exhaustive exploration of the state space.
We provide a set of options to control the behavior of our verification jobs scheduler such as:
You can list all the options by using the help option:
$ python3 -m smpt --help
usage: __main__.py [-h] [--version] [-v] [--debug] -n ptnet [--colored]
[--xml PATH_PROPERTIES | --ltl-file PATH_LTL_FORMULA | --ltl LTL_FORMULA | --deadlock | --quasi-liveness QUASI_LIVE_TRANSITIONS | --reachability REACHABLE_PLACES]
[--select-queries QUERIES]
[--auto-reduce | --reduced PATH_PTNET_REDUCED]
[--save-reduced-net]
(--methods [{WALK,STATE-EQUATION,INDUCTION,BMC,K-INDUCTION,PDR-COV,PDR-REACH,PDR-REACH-SATURATED,SMT,CP,DUMMY} [{WALK,STATE-EQUATION,INDUCTION,BMC,K-INDUCTION,PDR-COV,PDR-REACH,PDR-REACH-SATURATED,SMT,CP,DUMMY} ...]] | --auto-enumerative | --enumerative PATH_MARKINGS)
[--project] [--show-projection]
[--save-projection PATH_PROJECTION_DIRECTORY]
[--timeout TIMEOUT | --global-timeout GLOBAL_TIMEOUT]
[--skip-non-monotonic] [--show-techniques] [--show-time]
[--show-reduction-ratio] [--show-shadow-completeness]
[--show-model] [--check-proof] [--export-proof PATH_PROOF]
[--mcc] [--fireability]
SMPT: Satisfiability Modulo Petri Net
optional arguments:
-h, --help show this help message and exit
--version show the version number and exit
-v, --verbose increase output verbosity
--debug print the SMT-LIB input/output
-n ptnet, --net ptnet
path to Petri Net (.net or .pnml format)
--colored colored input Petri net
--xml PATH_PROPERTIES
path to reachability formulas (.xml format)
--ltl-file PATH_LTL_FORMULA
path to reachability formula (.ltl format)
--ltl LTL_FORMULA reachability formula (.ltl format)
--deadlock deadlock analysis
--quasi-liveness QUASI_LIVE_TRANSITIONS
liveness analysis (comma separated list of transition
names)
--reachability REACHABLE_PLACES
reachability analysis (comma separated list of place
names)
--select-queries QUERIES
verify queries of a given comma-separated list
--auto-reduce reduce automatically the Petri Net (using `reduce`)
--reduced PATH_PTNET_REDUCED
path to reduced Petri Net (.net format)
--save-reduced-net save the reduced net
--methods [{WALK,STATE-EQUATION,INDUCTION,BMC,K-INDUCTION,PDR-COV,PDR-REACH,PDR-REACH-SATURATED,SMT,CP,DUMMY} [{WALK,STATE-EQUATION,INDUCTION,BMC,K-INDUCTION,PDR-COV,PDR-REACH,PDR-REACH-SATURATED,SMT,CP,DUMMY} ...]]
enable methods among WALK STATE-EQUATION INDUCTION BMC
K-INDUCTION PDR-COV PDR-REACH PDR-REACH-SATURATED SMT
CP DUMMY
--auto-enumerative enumerate automatically the states (using `tina`)
--enumerative PATH_MARKINGS
path to the state-space (.aut format)
--project Use TFG projection for WALK, BMC, K-INDUCTION, PDR,
STATE-EQUATION
--show-projection Show projected formulas
--save-projection PATH_PROJECTION_DIRECTORY
Save projected formulas
--timeout TIMEOUT a limit per property on execution time
--global-timeout GLOBAL_TIMEOUT
a limit on execution time
--skip-non-monotonic skip non-monotonic properties
--show-techniques show the method returning the result
--show-time show the execution time
--show-reduction-ratio
show the reduction ratio
--show-shadow-completeness
show the shadow completeness
--show-model show a counterexample if there is one
--check-proof check and show the certificate of invariance if there
is one
--export-proof PATH_PROOF
export the proof of invariance if there is one
--mcc Model Checking Contest mode
--fireability Reachability Fireability mode (Cardinality by default) Model Checking Contest mode
Complete installations of SMPT can be found in the MCC disk images (see the Tool Submission Kit for more information):
You can also download the artifact of our [TACAS2022] paper that contains all the material to install the tool and reproduce the experiments:
SMPT, won a bronze medal in the “reachability” category of the Model Checking Contest 2023, an international competition of model checking tools for the verification of concurrent systems.
SMPT, won a bronze medal in the “reachability” category of the Model Checking Contest 2022. It also obtained the 100% confidence award.
The code repository includes copies of models taken from the MCC Petri Nets Repository located inside folder nets/.
This software is distributed under the GPLv3 license. A copy of the license agreement is found in the LICENSE file.
We are grateful to Yann THIERRY-MIEG for making MCC'2021 oracles available, and to the members of the Model Checking Contest committees.
| Back | FazBrowse Home | New Git URL |