If the vectors have integral coordinates, is an *integer lattice*. If the vectors are linearly independent,
they constitute a *basis* of the lattice. If the vectors
constitute a basis of , the
lattice is said to be *full dimensional*.

The affine object corresponding to a lattice is called an *affine
lattice*. It is constructed by adding the same constant vectors to
all the points of a lattice. For instance, the set
can be interpreted as an affine
lattice: it is the lattice defined by any integral linear
combinations of the vectors and , plus the vector

In Polylib, only *full-dimensionnal affine integral
lattices* are considered. It can easily be proven that an element
of this subset of affine lattices can always be represented by a
non singular integral matrix and an integral vector. For
instance, lattice above, will be mathematically represented
by:

The data structure used to represent an affine lattice in Polylib is an affine matrix. For example, lattice will be represented in Polylib by the following matrix:

Lattice manipulation naturally leads to an intensive use of the Hermite normal form (HNF).

In other words, two lattices are equal if and only if their respective matrices have the same Hermite normal form.

For instance, consider the following lattice :

its unique canonical form is

Polylib can also handle *unions* of (affine
integral full dimensionnal) lattices. This provides a set of
objects which is closed
under union, intersection, image by invertible integral functions
(see [NRi00]).

For instance, consider the following lattice :

its unique normal form is