Toric Divisors

Introduction

Toric divisors are those divisors that are invariant under the torus action. They are formal sums of the codimension one orbits, and these in turn correspond to the rays of the underlying fan.

Constructors

General constructors

DivisorOfCharacterMethod
DivisorOfCharacter(v::AbstractNormalToricVariety, character::Vector{T}) where {T <: IntegerUnion}

Construct the torus invariant divisor associated to a character of the normal toric variety v.

Examples

julia> DivisorOfCharacter(projective_space(NormalToricVariety, 2), [1,2])
A torus-invariant, non-prime divisor on a normal toric variety
source
ToricDivisorMethod
ToricDivisor(v::AbstractNormalToricVariety, coeffs::Vector{T}) where {T <: IntegerUnion}

Construct the torus invariant divisor on the normal toric variety v as linear combination of the torus invariant prime divisors of v. The coefficients of this linear combination are passed as list of integers as first argument.

Examples

julia> ToricDivisor(projective_space(NormalToricVariety, 2), [1,1,2])
A torus-invariant, non-prime divisor on a normal toric variety
source

Special constructors

Addition of toric divisors td1 and td2 (on the same toric variety) and scalar multiplication with c (it can be either valued in Int64 or fmpz) is supported via c * td1 + td2. One can subtract them via td1 - td2.

Equality

Equality of two toric divisors td1 and td2 (on the same toric variety) is achieved by checking if their coefficients are identical. This is implemented via td1 == td2.

Properties of toric divisors

To check if a toric divisor td is trivial, one can invoke is_trivial(td). Internally, this executes the following method:

is_principalMethod
is_principal(td::ToricDivisor)

Determine whether the toric divisor td is principal.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_principal(td)
false
source

Beyond this, we support the following properties of toric divisors:

is_ampleMethod
is_ample(td::ToricDivisor)

Determine whether the toric divisor td is ample.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_ample(td)
false
source
is_basepoint_freeMethod
is_basepoint_free(td::ToricDivisor)

Determine whether the toric divisor td is basepoint free.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_basepoint_free(td)
true
source
is_cartierMethod
is_cartier(td::ToricDivisor)

Checks if the divisor td is Cartier.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_cartier(td)
true
source
is_effectiveMethod
is_effective(td::ToricDivisor)

Determine whether the toric divisor td is effective.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_effective(td)
true
source
is_integralMethod
is_integral(td::ToricDivisor)

Determine whether the toric divisor td is integral.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_integral(td)
true
source
is_nefMethod
is_nef(td::ToricDivisor)

Determine whether the toric divisor td is nef.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_nef(td)
true
source
is_primeMethod
is_prime(td::ToricDivisor)

Determine whether the toric divisor td is a prime divisor.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_prime(td)
true
source
is_q_cartierMethod
is_q_cartier(td::ToricDivisor)

Determine whether the toric divisor td is Q-Cartier.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_q_cartier(td)
true
source
is_very_ampleMethod
is_very_ample(td::ToricDivisor)

Determine whether the toric divisor td is very ample.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_very_ample(td)
false
source

Operations for toric divisors

coefficientsMethod
coefficients(td::ToricDivisor)

Identify the coefficients of a toric divisor in the group of torus invariant Weil divisors.

Examples

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> D = ToricDivisor(F4, [1,2,3,4])
A torus-invariant, non-prime divisor on a normal toric variety

julia> coefficients(D)
4-element Vector{fmpz}:
 1
 2
 3
 4
source
polyhedronMethod
polyhedron(td::ToricDivisor)

Construct the polyhedron $P_D$ of a torus invariant divisor $D:=td$ as in 4.3.2 of David A. Cox, John B. Little, Henry K. Schenck (2011). The lattice points of this polyhedron correspond to the global sections of the divisor.

Examples

The polyhedron of the divisor with all coefficients equal to zero is a point, if the ambient variety is complete. Changing the coefficients corresponds to moving hyperplanes. One direction moves the hyperplane away from the origin, the other moves it across. In the latter case there are no global sections anymore and the polyhedron becomes empty.

julia> F4 = hirzebruch_surface(4)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> td0 = ToricDivisor(F4, [0,0,0,0])
A torus-invariant, non-prime divisor on a normal toric variety

julia> is_feasible(polyhedron(td0))
true

julia> dim(polyhedron(td0))
0

julia> td1 = ToricDivisor(F4, [1,0,0,0])
A torus-invariant, prime divisor on a normal toric variety

julia> is_feasible(polyhedron(td1))
true

julia> td2 = ToricDivisor(F4, [-1,0,0,0])
A torus-invariant, non-prime divisor on a normal toric variety

julia> is_feasible(polyhedron(td2))
false
source
toric_varietyMethod
toric_variety(td::ToricDivisor)

Return the toric variety of a torus-invariant Weil divisor.

Examples

julia> F4 = hirzebruch_surface(4);

julia> D = ToricDivisor(F4, [1,2,3,4]);

julia> toric_variety(D)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
source

Special divisors

trivial_divisorMethod
trivial_divisor(v::AbstractNormalToricVariety)

Construct the trivial divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> trivial_divisor(v)
A torus-invariant, non-prime divisor on a normal toric variety
source
anticanonical_divisorMethod
anticanonical_divisor(v::AbstractNormalToricVariety)

Construct the anticanonical divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> anticanonical_divisor(v)
A torus-invariant, non-prime divisor on a normal toric variety
source
canonical_divisorMethod
canonical_divisor(v::AbstractNormalToricVariety)

Construct the canonical divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> canonical_divisor(v)
A torus-invariant, non-prime divisor on a normal toric variety
source