This Python package provides a wrapper to the C++ package pplite.
The names of objects and methods are a spelled out version of the objects and methods in the library:
>>> import pplite
>>> x = pplite.Variable(0)
>>> y = pplite.Variable(1)
>>> z = pplite.Variable(2)
>>> cons = [x >= 0, y >= 0, z > 0, x + y + z == 1]
>>> poly = pplite.NNC_Polyhedron(spec_elem = "universe", dim_type = 3, topology = "nnc")
>>> poly.add_constraints(cons)
>>> poly
x0+x1+x2-1==0, x0>=0, x1>=0, -x0-x1+1>0
>>> poly.generators()
[p(x2), c(x0), c(x1)]
The available objects and functions from pplite Python module are:
- Variable, Linear_Expression, Affine_Expression (defined in pplite.linear_algebra)
- Constraint (defined in pplite.constraint)
- Interval (defined in pplie.intervals)
- Bounding_Box_t, Bounding_Box_f (defined in pplite.bounding_box)
- PPliteGenerator, Point, Closure_point, Line, Ray (defined in pplite.generators)
- NNC_Polyhedron (defined in pplite.polyhedron)
The project is available at Python Package Index and can be installed with pip. It is reccomened to create a virtual enviorment (suggested name venv-pplite) when installing the package.:
$ python3 -m venv venv-pplite $ . ./venv-pplite/bin/activate (venv-pplite) $ pip install pplitepy
The package should be accessed from the virtual enviroment:
(venv-pplite) $ python3 >>> import pplite
All Python classes from pplpy are extension types and can be used with Cython. Most extension type carries an attribute thisptr that holds a pointer to the corresponding C++ object from ppl.
You can find the latest version of the source code on github: https://github.com/ComboProblem/pplitepy
There is minimal documentation as in pplite.
pplitepy 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/.
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 flint