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.contains_origin_in_interior — Functioncontains_origin_in_interior(P :: RationalPolygon)Check whether P contains the origin in its interior.
RationalPolygons.is_primitive — Methodis_primitive(P :: RationalPolygon)Check whether all vertices of the scaled lattice polygon rationality(P) * P are primitive.
RationalPolygons.is_ldp — Functionis_ldp(P :: RationalPolygon)Check whether P is a ldp polygon, i.e. is primitive and contains the origin in its interior.
RationalPolygons.multiplicity — Methodmultiplicity(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.
RationalPolygons.multiplicity — Methodmultiplicity(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.
RationalPolygons.is_smooth — Functionis_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.
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.
RationalPolygons.picard_index — Functionpicard_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].
RationalPolygons.gorenstein_index — Functiongorenstein_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].
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.
RationalPolygons.log_canonicity — Functionlog_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.
RationalPolygons.toric_prime_divisor_self_intersection — Functiontoric_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].
RationalPolygons.toric_prime_divisor_adjacent_intersection — Functiontoric_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.
RationalPolygons.degree — Methoddegree(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