# 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

### Addition, subtraction and scalar multiplication

Toric divisors can be added and subtracted via the usual + and - operators. Moreover, multiplication by scalars from the left is supported for scalars which are integers or of type fmpz.

### 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

## Properties of toric divisors

Equality of toric divisors can be tested via ==.

To check if a toric divisor is trivial, one can invoke is_trivial. This checks if all coefficients of the toric divisor in question are zero. This must not be confused with a toric divisor being principal, for which we support the following:

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

## Attributes

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