PyNormaliz - An interface to Normaliz
=====================

What is PyNormaliz
---------------------
PyNormaliz provides an interface to Normaliz (https://www.normaliz.uni-osnabrueck.de) via libNormaliz.
It offers the complete functionality of Normaliz, and can be used interactively from python.

Requirements
---------------------
 - python 2.7 or above or python 3.4 or above
 - Normaliz 3.1.4 (currently prerelease, https://github.com/Normaliz/Normaliz/releases)

Installation
---------------------
You need to have Normaliz properly installed and libNormaliz in your gcc's include path.
On most systems, installing Normaliz via
~~~
\> make install
~~~
is enough. If you prefer or are not able to install it, you need to set CPATH and
LD_LIBRARY_PATH accordingly.

After that, you can install PyNormaliz via
~~~
\> pip install PyNormaliz
~~~

Usage
---------------------
The main commands are NmzCone, NmzCompute, NmzIsComputed, and NmzResult.
For a complete list of input and output properties, please see the Normaliz
manual.

To create a cone, use
~~~
C := NmzCone( "cone", [[1,0],[0,1]] )
~~~
or, equivalently,
~~~
C := NmzCone( [ "cone", [[1,0],[0,1]] ] )
~~~
NmzCone can take an arbitrary number of arguments, either as separated arguments or in a list.
First is always a string, describing an input property for Normaliz, followed by a (possibly empty)
matrix.

NmzCompute takes a cone as first argument, followed by arbitrary many strings, or a list of strings,
describing Normaliz output properties. NmzCompute lets Normaliz compute the necessary values, and
returns true if everything was computed properly, false otherwise.
~~~
NmzCompute( C, "HilbertBasis" )
~~~
or
~~~
NmzCompute( C, [ "HilbertBasis" ] )
~~~

NmzIsComputed takes a cone and a string representing an output property, and returns true if the
property is already computed for the cone, false otherwise.
~~~
NmzIsComputed( C, "HilbertBasis" )
~~~

NmzResult takes a cone and a string representing an output property, and returns the computed
value of this property as a matrix, a list, or as a bool.
~~~
NmzResult( C, "HilbertBasis" )
