# latticePoints(ToricDivisor) -- compute the lattice points in the associated polytope

## Synopsis

• Function: latticePoints
• Usage:
latticePoints D
• Inputs:
• D, ,
• Outputs:
• , whose columns are the lattice points in the associated polytope

## Description

On a complete normal toric variety, the polyhedron associated to a Cartier divisor is a lattice polytope. Given a torus-invariant Cartier divisor on a normal toric variety, this method returns an integer matrix whose columns correspond to the lattices points contained in the associated polytope. For a non-effective Cartier divisor, this method returns null.

On the projective plane, the associate polytope is either empty, a point, or a triangle.

 i1 : PP2 = toricProjectiveSpace 2; i2 : assert (null === vertices (-PP2_0)) i3 : latticePoints (0*PP2_0) o3 = 0 2 1 o3 : Matrix ZZ <--- ZZ i4 : assert isAmple PP2_0 i5 : V1 = latticePoints (PP2_0) o5 = | 0 1 0 | | 0 0 1 | 2 3 o5 : Matrix ZZ <--- ZZ i6 : X1 = normalToricVariety V1; i7 : assert (set rays X1 === set rays PP2 and max X1 === max PP2) i8 : assert isAmple (2*PP2_0) i9 : V2 = latticePoints (2*PP2_0) o9 = | 0 1 2 0 1 0 | | 0 0 0 1 1 2 | 2 6 o9 : Matrix ZZ <--- ZZ i10 : X2 = normalToricVariety(V2, MinimalGenerators => true); i11 : assert (rays X2 === rays X1 and max X2 === max X1)

In this singular example, we see that all the lattice points in the polytope arising from a divisor $2D$ do not come from the lattice points in the polytope arising from $D$.

 i12 : Y = normalToricVariety matrix {{0,1,0,0,1},{0,0,1,0,1},{0,0,0,1,1},{0,0,0,0,3}}; i13 : D = 3*Y_0; o13 : ToricDivisor on Y i14 : latticePoints D o14 = | 0 1 0 0 1 | | 0 0 1 0 1 | | 0 0 0 1 1 | | 0 0 0 0 3 | 4 5 o14 : Matrix ZZ <--- ZZ i15 : latticePoints (2*D) o15 = | 0 1 2 0 1 0 0 1 0 0 1 1 2 1 1 2 | | 0 0 0 1 1 2 0 0 1 0 1 1 1 2 1 2 | | 0 0 0 0 0 0 1 1 1 2 1 1 1 1 2 2 | | 0 0 0 0 0 0 0 0 0 0 2 3 3 3 3 6 | 4 16 o15 : Matrix ZZ <--- ZZ