Reductron - The Polyhedral Abstraction Prover

About

Reductron is a tool that permits to prove that some parametric polyhedral equivalence, say $(N_1, C_1) \approxeq_E (N_2, C_2)$, is correct. The tool relies on the tool FAST and the SMT solver z3.

Dependencies

  • TaPAS - The Talence Presburger Arithmetic Suite
  • FASTer - A tool for the analysis of large or even infinite systems
  • ndrio from the TINA Toolbox - Petri nets converter
  • z3 - SMT solver

Installation

The tool can be installed using pip:

$ python setup.py bdist_wheel
$ python -m pip install --user dist/reductron-1.0-py3-none-any.whl

Note that the wheel package is required, you can install it using:

$ pip3 install --user wheel

Usage

Examples of correct and incorrect polyhedral equivalences can be found in the rules/ directory.

To check an equivalence run:

$ python3 -m reductron -i <initial.net> -r <reduced.net>

You can list all the options by using the help option:

$ python3 -m reductron -h
usage: __main__.py [-h] [--version] [-v] [--debug] -i initial -r reduced [--show-time]

Reductron - Automated Polyhedral Abstraction Prover

options:
  -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
  -i initial, --initial-net initial
                        path to the initial Petri Net (.net format)
  -r reduced, --reduced-net reduced
                        path to the reduced Petri Net (.net format)
  --show-time           show the execution time

References

License

This software is distributed under the GPLv3 license. A copy of the license agreement is found in the LICENSE file.

Authors

Nicolas Amat
Nicolas Amat
Postdoctoral researcher

Postdoctal researcher at the IMDEA Software Institute on Presburger arithmetic.

Related