Embed NuSMV as a python library
Project description
PyNuSMV is a Python binding for NuSMV. It is intended to provide a Python interface to NuSMV, allowing to use NuSMV as a library.
Latest release |
|
---|---|
Status |
Preliminary warning
PyNuSMV does NOT work with Python 2 !
Installation
If you are used to installing python packages, installing pynusmv should really be dead simple: indeed, on most platforms it should suffice to simply open up a terminal and type in the following command:
pip3 install pynusmv
This will download a pre-compiled binary version of the project from PyPI and install it on your machine. In the unlikely event that no binary version is available for your platform, it will download the sources from PyPI and try to compile and install them on your system. If you prefer to download the sources from this repository, tweak them and compile them (ie if you want to link pynusmv agains ZChaff), simply follow the instructions below.
Note
In case there is no suitable pre-compiled binary available for your platform and you still want to get started instantly to avoid the hassle of compiling pynusmv for yourself: just give a look at our docker images (https://github.com/LouvainVerificationLab/pynusmv-docker)
In particular, you might want to check the louvainverificationlab/pynusmv image which gives you an access to a running python shell having pynusmv installed. To use it, just
docker run -it louvainverificationlab/pynusmv
Build
Building PyNuSMV requires you to have a few standard tools available on your computer. Typically the build process should work nice and smooth on all platform although only OSX and Ubuntu-Linux have actually been tested.
Dependencies
The first thing the build process performs in before even stating to try building PyNuSMV is to check the availability of the following system requirements. Unfortunately, no guarantee regarding the exhaustivity of this list can be given although we have strong confidence that it is sufficient.
An ANSI C compiler (gcc will do, as will several versions of cc)
A C++ compiler (g++ advised)
GNU Flex version 2.5 or greater
GNU Bison version 1.22 or greater
GNU make utility version 3.74 or greater
GNU tar, gzip and unzip (to unpack the sources of the dependencies)
GNU patch (to fix some files in the original project distributions)
GNU ar and ranlib to create static libraries
GNU ln command
SWIG version 2.0.6 or higher – http://www.swig.org/
Python3 (version 3.4 or higher) – http://python.org/
Setuptools 2.1 or higher – https://pypi.python.org/pypi/setuptools
pyparsing version 2.0.2 or higher – http://pyparsing.wikispaces.com/
Sphinx if you intend to re-build the project documentation.
Platform specific tools
On OS X, you will also need the install_name_tool command. But don’t worry much about this one, it should already be installed on your system. Similarly, on Linux, you will need the patchelf command which is used for the same purpose. This should however not be a big problem since a package for patchelf exists for all major Linux distributions.
Build process
To build and install your distribution of pynusmv from the sources, you should proceed with the following command: python3 setup.py install
This will start by unpacking, patching and building the following dependencies:
MiniSat
CUDD
NuSMV
Once that is done, the actual core of setup.py will be executed. This involves building the dynamic libraries for the lower interface and package the python modules that build above that lower interface. As usual, depending on the command you pass to setuptools, the output will be produced under build or dist.
Note: Using ZChaff
Should you want to have your version of pynusmv be built and linked against the ZChaff SAT solver; then, all you need to do is to add the --with-zchaff flag to your build/installation command. Hence, the command becomes: python3 setup.py install --with-zchaff.
Verifying your build
To check if the compilation was successful and make sure you didn’t break anything in the expected behavior of the lib, you can run the unit tests as such: python3 setup.py test
Docker
If you don’t want to mess with the details of properly provisioning your environment to build pynusmv and simply want to tweak it and build it from the sources; the easiest way is to use one of our preconfigured docker container (https://github.com/LouvainVerificationLab/pynusmv-docker).
In particular, you will probably be interessed by one of the following two containers:
- louvainverificationlab/pynusmv-build
if you intend to make a build that works just for you.
- louvainverificationlab/pynusmv-manylinux
if you intend to make a build that can possibly run on many different linux flavors.
DOCUMENTATION
The full API of (the upper interface of) PyNuSMV can be generated thanks to Sphinx (http://www.sphinx-doc.org/) by running the following command: python3 setup.py doc or python3 setup.py doc --builder=<builder>
The resulting documentation will be produced in buid/doc/. Where builder is the name of the builder you chose to generate the documentation. By default, this builder is set to html which means the documentation will be generated in html format.
The same documentation is also available on http://pynusmv.readthedocs.org/.
Content
This package contains:
- README
This file
- dependencies
A directory containing the dependencies project necessary to pynusmv
- pynusmv
The package containig the whole upper interface of pynusmv
- pynusmv_lower_interface
The package containing the wole lower interface of pynusmv
- doc
A directory containing the files that permit the documentation generation.
- tests
The project unittests
- setup.py
PyNuSMV compilation file;
Note that pre-compiled versions have less content because only the minimal required files (i.e. PyNuSMV files and nusmv shared library) are included.
Legal
PyNuSMV is licensed under the GNU Lesser General Public License (LGPL in short). See https://www.gnu.org/licenses/lgpl-3.0.en.html for the full details of the license.
Note
Alongside with PyNuSMV, the following dependencies are brought to you under the following license terms:
NuSMV : LGPL (same license as PyNuSMV).
CUDD: MIT license
MiniSat: MIT license
ZChaff: Princeton License (Optional: Iff you decide to use it, –with-zchaff).
Credits
PyNuSMV is developed, maintained and distributed by the LVL Group at Université Catholique de Louvain. Please contact for any question regarding this software distribution.
NuSMV is a symbolic model checker developed as a joint project between several partners and distributed under the GNU LGPL license. Please contact for getting in touch with the NuSMV development staff.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file pynusmv-1.0rc8.tar.gz
.
File metadata
- Download URL: pynusmv-1.0rc8.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35af7cdd25dfc8dc357770f0764b2cb726aed219200bba2e58c25318b2425aa1 |
|
MD5 | d063a3093780ef7a7b45c099c84d2c39 |
|
BLAKE2b-256 | e0b54c0f4970fefe927280e65f3951b5075da3f9ded2570478734b0e9d3b0f6a |
File details
Details for the file pynusmv-1.0rc8-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 779ac2054ab9d86a3e6d062ff6cad841ba73ec499437481f3276978edb68fdb3 |
|
MD5 | 8965fff5be7b497cfa2635fd19220d3d |
|
BLAKE2b-256 | c1a13b4aae2cc01e1cde98a0361188ae0c84833b3a97a79eb4f6da28ca78747f |
File details
Details for the file pynusmv-1.0rc8-cp36-cp36m-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp36-cp36m-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.6m, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcc1a488bd82af763eff0916098aed323fe9760b34705a7332fdf2bc1ecff526 |
|
MD5 | 8e8a8d245a6f535b5a5130937af28bc1 |
|
BLAKE2b-256 | d1c2e1acf464b87ad3c428b46efa190c3777bcc6d5097c262b7b3ab3690eba9f |
File details
Details for the file pynusmv-1.0rc8-cp35-cp35m-manylinux1_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp35-cp35m-manylinux1_x86_64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d64ab48c70508dc4b502e417bd621af22a3557be3fbd8efe6979ddeea9dafa96 |
|
MD5 | 57c781cd2785346827a2052eb70261b2 |
|
BLAKE2b-256 | b39758421f5be04bd01c6417f01798529f78ea3f5e3c94419e723cd5d5a63c71 |
File details
Details for the file pynusmv-1.0rc8-cp35-cp35m-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp35-cp35m-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.5m, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00f325754bcfb117c6b7656868e083afc648ec4b954c39c08c774d2666667796 |
|
MD5 | 9e3f87034cc4f9300bb1f8f76acdced1 |
|
BLAKE2b-256 | 7296711e962893ac7b98f0e31675032542e9141436ba9b91e4efd77f270fb054 |
File details
Details for the file pynusmv-1.0rc8-cp34-cp34m-manylinux1_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp34-cp34m-manylinux1_x86_64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.4m
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88af857ba4bdb92767c299ec82d666cd5373e512930f4e8912dd1d2eb37bee4a |
|
MD5 | 4e100074d1f521bdac47d06a6e546544 |
|
BLAKE2b-256 | 108124d04a95f8298cd3c12535872b39e13e3875070b8f1a6d4b23ce70dd4514 |
File details
Details for the file pynusmv-1.0rc8-cp34-cp34m-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: pynusmv-1.0rc8-cp34-cp34m-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.4m, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f15825267461f91db6de8f55b055aaf9c17b20e6fd4f2bb64a0302dacbaa91b |
|
MD5 | 4e381e93f809b5941cb3be1835bad332 |
|
BLAKE2b-256 | a1a6781fc25482a6302ef0de352918f1bddad9e7ba5a1095ceedabbacf1b88d5 |