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_character — Methoddivisor_of_character(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> divisor_of_character(projective_space(NormalToricVariety, 2), [1, 2])
Torus-invariant, non-prime divisor on a normal toric varietytoric_divisor — Methodtoric_divisor(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> toric_divisor(projective_space(NormalToricVariety, 2), [1, 1, 2])
Torus-invariant, non-prime divisor on a normal toric varietyAddition, 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_divisor — Methodtrivial_divisor(v::AbstractNormalToricVariety)Construct the trivial divisor of a normal toric variety.
Examples
julia> v = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> trivial_divisor(v)
Torus-invariant, non-prime divisor on a normal toric varietyanticanonical_divisor — Methodanticanonical_divisor(v::AbstractNormalToricVariety)Construct the anticanonical divisor of a normal toric variety.
Examples
julia> v = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> anticanonical_divisor(v)
Torus-invariant, non-prime divisor on a normal toric varietycanonical_divisor — Methodcanonical_divisor(v::AbstractNormalToricVariety)Construct the canonical divisor of a normal toric variety.
Examples
julia> v = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> canonical_divisor(v)
Torus-invariant, non-prime divisor on a normal toric varietyProperties 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_principal — Methodis_principal(td::ToricDivisor)Determine whether the toric divisor td is principal.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_principal(td)
falseBeyond this, we support the following properties of toric divisors:
is_ample — Methodis_ample(td::ToricDivisor)Determine whether the toric divisor td is ample.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_ample(td)
falseis_basepoint_free — Methodis_basepoint_free(td::ToricDivisor)Determine whether the toric divisor td is basepoint free.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_basepoint_free(td)
trueis_cartier — Methodis_cartier(td::ToricDivisor)Checks if the divisor td is Cartier.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_cartier(td)
trueis_effective — Methodis_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, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
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)
trueis_integral — Methodis_integral(td::ToricDivisor)Determine whether the toric divisor td is integral.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_integral(td)
trueis_nef — Methodis_nef(td::ToricDivisor)Determine whether the toric divisor td is nef.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_nef(td)
trueis_prime — Methodis_prime(td::ToricDivisor)Determine whether the toric divisor td is a prime divisor.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_prime(td)
trueis_q_cartier — Methodis_q_cartier(td::ToricDivisor)Determine whether the toric divisor td is Q-Cartier.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_q_cartier(td)
trueis_very_ample — Methodis_very_ample(td::ToricDivisor)Determine whether the toric divisor td is very ample.
Examples
julia> F4 = hirzebruch_surface(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> td = toric_divisor(F4, [1,0,0,0])
Torus-invariant, prime divisor on a normal toric variety
julia> is_very_ample(td)
falseAttributes
coefficients — Methodcoefficients(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, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
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
4polyhedron — Methodpolyhedron(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(NormalToricVariety, 4)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
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))
falsetoric_variety — Methodtoric_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, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor