LDP Polygons

An LDP polygon is a lattice polygon with primitive vertices containing the origin in its interior. LDP polygons correspond to toric log del Pezzo surfaces. In this package, we call more generally a $k$-rational polygon LDP, if it contains the origin in its interior and its $k$-fold multiple has primitive vertices. With this definition, the $k$-rational LDP polygons with exactly one interior lattice point correspond to the toric del Pezzo surfaces with at most $\frak{1}{k}$-log canonical singularities. Here, we list some properties of LDP polygons that correspond to meaningful invariants of the associated toric del Pezzo surface.

RationalPolygons.is_ldpFunction
is_ldp(P :: RationalPolygon)

Check whether P is a ldp polygon, i.e. is primitive and contains the origin in its interior.

source
RationalPolygons.multiplicityMethod
multiplicity(P :: RationalPolygon{T}, i :: Int) where {T <: Integer}

The index of the sublattice spanned by the i-th and i+1-th scaled vertex of P (i.e. the determinant of those two vertices). For ldp polygons, this equals the order of the local class group associated with the toric fixed point associated to the i-th and i+1-th ray.

source
RationalPolygons.multiplicityMethod
multiplicity(P :: RationalPolygon{T,N}) where {N,T <: Integer}

The order of the sublattice spanned by the scaled vertices of P. For ldp polygons, this equals the order of the torsion part of the divisors class group of the associated toric surface.

source
RationalPolygons.is_smoothFunction
is_smooth(P :: RationalPolygon, i :: Int)

Check whether the cone spanned by the i-th and i+1-th vertex of P is regular, i.e. generates the entire lattice. For ldp polygons, this means that the toric fixed point associated to the i-th and i+1-th ray is smooth.

source
is_smooth(P :: RationalPolygon)

Check whether all cones of the face fan of P are regular. For ldp polygons, this means that the associated toric surface is smooth.

source
RationalPolygons.picard_indexFunction
picard_index(P :: RationalPolygon{T,N}) where {N,T <: Integer}

The product of all local multiplicities of P divided by the global multiplicity. For ldp polygons, this equals the index of the Picard group inside the divisor class group of the associated toric surface, see [4].

source
RationalPolygons.gorenstein_indexFunction
gorenstein_index(P :: RationalPolygon{T}, i :: Int)

The multiplicity of P divided by gcd(w[2] - v[2], v[1] - w[1]), where v and w are the i-th and i+1-th scaled vertices of P respectively. For ldp polygons, this equals the local gorenstein at the toric fixed point associated to the i-th and i+1-th ray of P, see e.g. Lemma 3.9 of [5].

source
gorenstein_index(P :: RationalPolygon{T}) where {T <: Integer}

The least common multiple of the local gorenstein indices of P. For ldp polygons, this equals the gorenstein index of the associated toric surface.

source
RationalPolygons.log_canonicityFunction
log_canonicity(P :: RationalPolygon)

Given a k-rational polygon P, return the maximal rational number 0 < ϵ ≤ 1 such that ε*P contains only one k-rational point in its interior (the origin). For an ldp polygon, this equals the maximal rational number 0 < ε ≤ 1 such that the associated toric surface is ε-log canonical.

source
RationalPolygons.toric_prime_divisor_self_intersectionFunction
toric_prime_divisor_self_intersection(P :: RationalPolygon, i :: Int)

Writing u, v and w for the i-1-th, i-th and i+1-th scaled vertex of P respectively, return det(w,u) // (det(u,v) * det(v,w)). For ldp polygons, this equals the self intersection number of the i-th toric prime divisor, see e.g. Summary 3.2 of [6].

source
RationalPolygons.toric_prime_divisor_adjacent_intersectionFunction
toric_prime_divisor_adjacent_intersection(P :: RationalPolygon, i :: Int)

Writing v and w for the i-th and i+1-th scaled vertex of P, return 1 // det(v,w). For ldp polygons, this equals the intersection number between the i-th and i+1-th toric prime divisors.

source
RationalPolygons.degreeMethod
degree(P :: RationalPolygon)

For ldp polygons, return the self intersection number of an anticanonocal divisor of the associated toric surface.

Example:

The projective plane has degree 9.

julia> P = convex_hull(LatticePoint{Int}[(1,0),(0,1),(-1,-1)])
Rational polygon of rationality 1 with 3 vertices.

julia> degree(P)
9//1
source