**Normaliz**

Winfried Bruns (wbruns@uos.de),
Bogdan Ichim (bogdan_ichim@yahoo.com)
and Christof Söger (csoeger@uos.de)

The Normaliz project is supported by the DFG
SPP "Experimentelle Methoden in Algebra, Geometrie und Zahlentheorie"

Normaliz is
a tool for computations in affine monoids, vector configurations, lattice
polytopes, and rational cones.

Its input
data can be specified in terms of

- a system of generators or
vertices or
- a system of linear homogeneous
Diophantine equations, inequalities and congruences or
- a binomial ideal.

Normaliz
computes

- the dual cone of a rational
cone (in other words, given generators, Normaliz computes the defining
hyperplanes, and vice versa)
- a placing (or lexicographic)
triangulation of a vector configuration (resulting in a triangulation of
the cone generated by it)
- the Hilbert basis of a rational
cone
- the lattice points of a lattice
polytope
- the normalization of an affine
monoid
- the Hilbert (or Ehrhart) series and the Hilbert (or
Ehrhart) (quasi) polynomial under a Z-grading (for example, for rational
polytopes)
- NEW: generalized (or weighted)
Ehrhart series and Lebesgue integrals of polynomials over rational
polytopes via NmzIntegrate
- a description of the cone and
lattice under consideration by a system of inequalities, equations and
congruences

Normaliz
can be started from the command line or from the GUI interface jNormaliz (written by Vinicius
Almendra and Bogdan Ichim). jNormaliz is included in the distribution. See the
Normaliz documentation
for details.

The user
indicates the type of input data in the input file and controls the computation
and the output via the GUI interface or command line options.

Normaliz is
provided for 2 degrees of integer precision: 64 bits or infinite. For infinite
precision it uses the GMP (Linux, Mac) and MPIR (Windows) libraries. The user
can require arithmetic checks at critical steps of the algorithms.

NmzIntegrate
is based on CoCoALib.

Normaliz
comes with interfaces for Macaulay2 and Singular. The Macaulay2 interface
(written by Gesa Kämpf) needs Macaulay2 1.1.99 or later. The Singular interface
needs Singular 3-0-0 or later. Normaliz is accessible from polymake (thanks to
an interface written by Andreas Paffenholz) and is used by B. Burton's Regina.

Some interesting and challenging examples document
the power of Normaliz. Please send
examples that you would like to add to the collection to one of the authors!

References
to articles about Normaliz are included in the documentation and their pdf
files can be found in the distribution.

Normaliz is
distributed under GPL.

**Current version:** 2.10.1 (including
NmzIntegrate 1.1) (uploaded June 27, 2013) Previous versions: 2.8 2.7 2.5

**Note: **Version** **2.10.1
corrects a bug in versions 2.10 and 2.9 that produced the wrong multiplicity in
computation mode -v (volume) for some non-integral polytopes (and two minor
bugs of 2.8).

**History:** The first version of Normaliz was a C program
developed by Winfried Bruns and Robert Koch in 1997/98. In 2002 Bruns added a Singular
library. Witold Jarnicki improved the h-vector computation in 2003 and
augmented the output options.

Version 2.0
(of 2008) was completely rewritten in C++ by Bogdan Ichim. The algorithms and
their implementations were significantly
improved by the authors. Moreover, additional input modes and user-controlled
arithmetic checks were added.

Version 2.1
was augmented in regard to the user interface. Moreover, Pottier’s algorithm
was added for solving systems of inequalities and equations.

Another
addition was the Macaulay2 interface, implemented by Gesa Kämpf.

In version
2.2 the user interface was improved by Christof Söger.

Version 2.5
adds congruences, allowing the combination with equations and inequalities, and
binomial ideals as further input types.
Algorithms for large examples give access to hitherto unreachable cones.
Various aspects, in particular the computation of shellings, have been improved
considerably, and Normaliz can now exploits parallelization on shared memory
systems via OpenMP. The main output file
is re-organized.

Version 2.7
unites the former norm64 and normbig in a single executable normaliz. h-vector
computation considerably improved.

Version 2.8
adds arbitrary Z-gradings and improves the performance considerably.

Version 2.9
includes NmzIntegrate 1.0

Version
2.10: improvement of NmzIntegrate and corrections in the exchange of data
between Normaliz and NmzIntegrate