user_guide:lattice_polytopes_doc

This is an old revision of the document!


This page summarizes properties and methods defined for lattice polytopes in polymake. For an introductory example see here.

Up to release 2.14, a lattice polytope in polymake used to be a subclass of a rational polytope, and all basic properties were derived from that. Starting with release 2.15 (or 3.0, not decided yet), there is no distinct type LatticePolytope anymore. A lattice polytope is an instance of rational polytope having the property LATTICE=1. All properties and methods described below have not changed.

As facet inequalities are standardized automatically, they usually do not appear as integer vectors. polymake provides the primitive(Vector) to transform a rational or integral vector into an integral vector such that the gcd of all entries is 1 (as a return vector, the input remains unchanged). primitive(Matrix) applies this function to all rows of the matrix.

Name Description
LATTICE The polytope has integer vertices
LATTICE_POINTS List of lattice points in the polytope
N_LATTICE_POINTS Number of lattice points in the polytope
INTERIOR_LATTICE_POINTS List of lattice points in the interior of the polytope
N_INTERIOR_LATTICE_POINTS Number of lattice points in the interior of the polytope
BOUNDARY_LATTICE_POINTS List of lattice points on the boundary of the polytope
N_BOUNDARY_LATTICE_POINTS Number of lattice points on the boundary of the polytope
HILBERT_BASIS The Hilbert Basis of the cone spanned by P x {1}
N_HILBERT_BASIS Number of elements of the Hilbert Basis
MINKOWSKI_SUMMAND_CONE the cone of all Minkowski summands of P. This has connected user_methods MINKOWSKI_SUMMAND_COEFF and MINKOWSKI_SUMMAND_POINT. The first returns the polytope correspondong to a point in the cone given by coefficients in the rays, the second for a point given in the coordiantes of the ambient space.
Name Description
REFLEXIVE The polytope and it's dual have integral vertices
GORENSTEIN A dilation of the polytope is reflexive up to translation
GORENSTEIN_INDEX If P is Gorenstein, then this is the integer k such that the dilation k*P is reflexive
GORENSTEIN_VECTOR If P is Gorenstein, then this is the unique interior lattice point in k*P
CANONICAL There is exactly one interior lattice point
TERMINAL There is exactly one interior lattice point and all other lattice points are vertices
LATTICE_EMPTY The polytope contains no lattice points other than the vertices
LATTICE_VOLUME The normalized volume of the polytope VOLUME * dim!
LATTICE_DEGREE The degree of the h*-polynomial or Ehrhart polynomial
LATTICE_CODEGREE dim+1-degree or the smallest integer k such that k*P has an interior lattice point
EHRHART_POLYNOMIAL_COEFF The coefficients of the Ehrhart polynomial starting at the constant coefficient
H_STAR_VECTOR The coefficients of the h*-polynomial starting at the constant coefficient
NORMAL The cone spanned by P x {1} is generated in height 1
FACET_WIDTHS The integral width of the polytope with respect to each facet normal
FACET_WIDTH The maximal integral width of the polytope with respect to the facet normals
FACET_VERTEX_LATTICE_DISTANCES The matrix of lattice distances between facets and vertices, rows: facets, columns: vertices
COMPRESSED FACET_WIDTH is 1
SMOOTH The associated projective variety is smooth; the determinant of the edge directions is +/-1 at every vertex
VERY_AMPLE The Hilbert Basis of the cone spanned by the edge-directions of any vertex lies inside the polytope
GRAPH.LATTICE_EDGE_LENGTHS the lattice lengths of the edges of the graph

polymake can compute Groebner bases for the toric ideals associated to the lattice points in the polytope using any term order. Currently, polymake uses 4ti2 for the computation.

The ideal is defined in a polynomial ring that has one variable for each lattice point in the polytope. These variables are labeled in the same order as the lattice points listed in the LATTICE_POINTS section. The result of the computation will be a list of vectors each representing a Groebner basis element. The Groebner basis element corresponding to a vector v in the list is a binomial g=g+-g- obtained as follows. First, one has to split the vector into its positive part v+ and negative part v-, i.e. v+-v-=v and v+, v- both non-negative. Then v+ is the exponent vector of the leading term g+ and v- the exponent vector of the trailing term g-.

GROEBNER_BASIS is a multiple object that can hold a term order and the corresponding Groebner basis. This reflects the fact that the basis depends on the choice of a term order. There are two different ways to enter a term order in polymake. You can either give a sequence of weight vectors as rows of a matrix, or you can enter one of the predefined term orders. Currently, there are three term orders defined.

Name Term Order
lex lexicographic order
deglex degree lexicographic order
degrevlex degree reverse lexicographic order

Note however, that these names are internally converted into square matrices, so it may be more efficient to define the term order by a weight vector.

We explain the use with an example:

polytope > $p=new Polytope<Rational>(POINTS=>[[1,0,0],[1,1,0],[1,0,1],[1,1,1]]);
polytope > print $p->LATTICE_POINTS;
1 1 0
1 0 1
1 0 0
1 1 1
polytope > $g=new GroebnerBasis("gb1", TERM_ORDER_MATRIX=>[[1,2,1,2]]);
polytope > $p->add("GROEBNER_BASIS",$g);
polytope > print $p->GROEBNER_BASIS("gb1")->BASIS;
polymake: used package 4ti2
 4ti2 -- A software package for algebraic, geometric and combinatorial problems on linear spaces.
 Copyright by 4ti2 team.
 http://www.4ti2.de/

-1 1 1 -1
polytope >$h=new GroebnerBasis("gb2", TERM_ORDER_NAME=>"deglex");
polytope > $p->add("GROEBNER_BASIS",$h);
polytope > print $p->GROEBNER_BASIS("gb2")->BASIS;
1 1 -1 -1

Note again, that the result of the Groebner basis computation has to be interpreted using the LATTICE_POINTS section of the polytope. So the binomial for the deglex order in the last computation is x1x2-x3x4, where the variables x1 and x2 correspond to the standard basis vectors, x3 to the origin and x4 to the point (1,1).

Name Description
N_LATTICE_POINTS_IN_DILATION(n) The number of lattice points in the n-th dilation of the polytope
FACET_POINT_LATTICE_DISTANCES(Vector<int>) The lattice distance of an integral vector from the facets of the polytope
Name Description
ambient_lattice_normalization(Polytope) transforms a LatticePolytope into a full dimensional polytope in the lattice given by the intersection of Zn and the affine hull
vertex_lattice_normalization(Polytope) transforms a LatticePolytope into a full dimensional polytope in the lattice spanned by the vertices of the polytope
induced_lattice(Polytope) returns a basis of the lattice spanned by the vertices of the polytope
lattice_pyramid(Polytope) returns a pyramid over the polytope where the apex sits at a lattice point at height one above the base
lattice_bypyramid(Polytope) returns a lattice bipyramid over the polytope with apices at height one above the base (this does not work for a simplex without interior lattice points)
transportation_polytope(row_margin,column_margin) returns the transportation polytope defined by the given row and column margins
lattice_isomorphic_smooth_polytopes(Polytope,Polytope) checks for two smooth polytopes whether they are lattice equivalent in the ambient lattice
Name Description
HILBERT_BASIS The Hilbert Basis of the cone C
N_HILBERT_BASIS Number of elements of the Hilbert Basis
SMOOTH_CONE true, if the primitive generators of the cone are a basis of Z^n
Q_GORENSTEIN_CONE true, if all primitive generators of the cone lie in an affine hyperplane spanned by a lattice functional in the dual cone (but not in the lineality space of the dual cone
Q_GORENSTEIN_INDEX the height of the primitive generators, if the cone is Q_GORENSTEIN
GORENSTEIN true, if Q_GORENSTEIN with index 1
HOMOGENEOUS true if the primitive generators of the rays lie on a hyperplane
Name Description
SMOOTH_FAN true, if all cones are smooth
Q_GORENSTEIN_CONE true, if all maximal cones are Q_GORENSTEIN
Q_GORENSTEIN_INDEX the lcm of the indices of all maixmal cones
GORENSTEIN true, if Q_GORENSTEIN with index 1
  • user_guide/lattice_polytopes_doc.1548408448.txt.gz
  • Last modified: 2019/01/25 09:27
  • by oroehrig