The program Normaliz 2.8 (referred to as Normaliz in the following) is mainly a tool for computing the Hilbert bases and enumerative invariants of rational cones. Several additional data can be computed. It is included in the Macaulay 2 distribution. For more details on the program, see http://www.math.uos.de/normaliz/. For the theory of affine semigroups and the notions of commutative algebra we refer to W. Bruns and J. Gubeladze, Polytopes, rings and K-theory. Springer 2009.
For algorithms see:
Using Normaliz one may for example compute the following:
If the associated semigroup or corresponding semigroup algebra is graded, then one may also compute the Hilbert series and Hilbert (quasi)polynomial of the semigroup.
The package gives direct access to Normaliz. The exchange of data between Normaliz and Macaulay 2 is via files. These files are automatically created and erased behind the scenes. As long as one wants to use only the ring-theoretic functions there is no need for file management. The key function for the direct use of Normaliz is normaliz, which calls the program Normaliz. To handle the in- and output one can use the functions writeNmzData and readNmzData, to set the options for the program setNmzOption. The output files are explained in output files written by Normaliz.
If you want to keep the results of the computations by Normaliz (i.e. the files written by the program), the package offers several methods for this purpose, see Keeping results of the computation by Normaliz for an example how to do this.
The package introduces two new classes MonomialSubalgebra and RationalCone.
The package provides four top level functions that aim directly at algebraic objects:
The package offers the following additional functions:
Version 2.0 of this package was accepted for publication in volume 2 of The Journal of Software for Algebra and Geometry: Macaulay2 on 2010-08-08, in the article A Macaulay2 interface for Normaliz. That version can be obtained from the journal or from the Macaulay2 source code repository.
This documentation describes version 2.6 of Normaliz.
The source code from which this documentation is derived is in the file Normaliz.m2.