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

divisor_of_characterMethod
divisor_of_character(v::NormalToricVarietyType, character::Vector{T}) where {T <: IntegerUnion}

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

Examples

julia> divisor_of_character(projective_space(NormalToricVariety, 2), [1, 2])
Torus-invariant, non-prime divisor on a normal toric variety
source
toric_divisorMethod
toric_divisor(v::NormalToricVarietyType, 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> toric_divisor(projective_space(NormalToricVariety, 2), [1, 1, 2])
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 ZZRingElem.

Special divisors

trivial_divisorMethod
trivial_divisor(v::NormalToricVarietyType)

Construct the trivial divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
Normal toric variety

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

Construct the anticanonical divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
Normal toric variety

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

Construct the canonical divisor of a normal toric variety.

Examples

julia> v = projective_space(NormalToricVariety, 2)
Normal toric variety

julia> canonical_divisor(v)
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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, i.e. if all of its coefficients are non-negative.

Examples

julia> P2 = projective_space(NormalToricVariety,2)
Normal toric variety

julia> td = toric_divisor(P2, [1,-1,0])
Torus-invariant, non-prime divisor on a normal toric variety

julia> is_effective(td)
false

julia> td2 = toric_divisor(P2, [1,2,3])
Torus-invariant, non-prime divisor on a normal toric variety

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

Determine whether the toric divisor td is integral.

Examples

julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

julia> td = toric_divisor(F4, [1,0,0,0])
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(NormalToricVariety, 4)
Normal toric variety

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

julia> coefficients(D)
4-element Vector{ZZRingElem}:
 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 [CLS11]. 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(NormalToricVariety, 4)
Normal toric variety

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

julia> is_feasible(polyhedron(td0))
true

julia> dim(polyhedron(td0))
0

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

julia> is_feasible(polyhedron(td1))
true

julia> td2 = toric_divisor(F4, [-1,0,0,0])
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(NormalToricVariety, 4);

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

julia> toric_variety(D)
Normal toric variety
source

The following attributes are supported by experimental code:

schemeMethod
scheme(td::ToricDivisor)

Every toric divisor has an underlying scheme-theoretic Weil divisor. This method returns the scheme, on which said scheme-theoretic divisor is defined. In the case at hand, this is by design the toric variety at hand, which knows its underlying scheme. The latter can be accessed with the function underlying_toric_structure.

Examples

julia> P3 = projective_space(NormalToricVariety, 3)
Normal toric variety

julia> td = toric_divisor(P3, [0, 1, 0, 0])
Torus-invariant, prime divisor on a normal toric variety

julia> scheme(td)
Normal toric variety

julia> forget_toric_structure(scheme(td))
(Scheme over QQ covered with 4 patches, Hom: scheme over QQ covered with 4 patches -> normal toric variety)
source
forget_toric_structureMethod
forget_toric_structure(td::ToricDivisor)

Every toric divisor has an underlying scheme-theoretic Weil divisor. This method returns said divisor.

Examples

julia> P3 = projective_space(NormalToricVariety, 3)
Normal toric variety

julia> td = toric_divisor(P3, [0, 1, 0, 0])
Torus-invariant, prime divisor on a normal toric variety

julia> forget_toric_structure(td)
Effective weil divisor
  on normal, 3-dimensional toric variety
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals
source