//pplpybytobiasdiez

pplpy

Python wrapper to the PPL library. Source repository for https://pypi.org/project/pplpy/

0
0
0
1

PPL Python wrapper

This Python package provides a wrapper to the C++ Parma Polyhedra Library (PPL) <http://bugseng.com/products/ppl/>_.

The whole package started as a fork of a tiny part of the Sage <http://sagemath.org>_ software.

How it works

The names of objects and methods are the same as in the library:

… code:: python

>>> import ppl
>>> x = ppl.Variable(0)
>>> y = ppl.Variable(1)
>>> z = ppl.Variable(2)
>>> cs = ppl.Constraint_System()
>>> cs.insert(x >= 0)
>>> cs.insert(y >= 0)
>>> cs.insert(z >= 0)
>>> cs.insert(x + y + z == 1)
>>> poly = ppl.C_Polyhedron(cs)
>>> poly.minimized_generators()
Generator_System {point(1/1, 0/1, 0/1), point(0/1, 1/1, 0/1), point(0/1, 0/1, 1/1)}

The available objects and functions from the ppl Python module are:

  • Variable, Variables_Set, Linear_Expression (defined in ppl.linear_algebra)

  • MIP_Problem (defined in ppl.mip_problem)

  • C_Polyhedron, NNC_Polyhedron (defined in ppl.polyhedron)

  • Generator, Generator_System, Poly_Gen_Relation, point,
    closure_point, ray, line (defined in ppl.generator)

  • Constraint, Constraint_System, Poly_Con_Relation,
    inequality, equation, strict_inequality (defined in ppl.constraint)

Installation

The project is available at Python Package Index <https://pypi.org/project/pplpy/>_ and
can be installed with pip::

$ pip install pplpy

Note that if you have gmp and ppl installed in a non standard directory (e.g. you use brew
on MacOSX) then you need to set appropriately the variables CFLAGS before calling pip. For
example::

$ export CFLAGS="-I/path/to/gmp/include/ -L/path/to/gmp/lib/ -I/path/to/ppl/include/ -L/path/to/ppl/lib $CFLAGS"
$ pip install pplpy

Using from Cython

All Python classes from pplpy are extension types and can be used with Cython. Each
extension type carries an attribute thisptr that holds a pointer to
the corresponding C++ object from ppl.

A complete example is provided with the files tests/testpplpy.pyx and tests/setup.py.

Source

You can find the latest version of the source code on github:
https://github.com/sagemath/pplpy

Documentation

An online version of the documentation is available at https://www.sagemath.org/pplpy/

Compiling the html documentation requires make and sphinx <https://www.sphinx-doc.org/en/master/>_.
Before building the documentation, you need to install the pplpy package (sphinx uses Python introspection).
The documentation source code is contained in the repository docs where there is a standard
Makefile with a target html. Running make html in the docs repository builds the documentation
inside docs/build/html. For more configuration options, run make help.

License

pplpy is distributed under the terms of the GNU General Public License (GPL)
published by the Free Software Foundation; either version 3 of
the License, or (at your option) any later version. See http://www.gnu.org/licenses/.

Requirements

  • PPL <http://bugseng.com/products/ppl/>_

  • Cython <http://cython.org>_ (tested with both 0.29 and 3.0)

  • cysignals <https://pypi.org/project/cysignals/>_

  • gmpy2 <https://pypi.org/project/gmpy2/>_

On Debian/Ubuntu systems the dependencies can be installed with::

$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libppl-dev cython3 python3-gmpy2 python3-cysignals-pari
[beta]v0.14.0