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
DivisorOfCharacter — MethodDivisorOfCharacter(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 varietyToricDivisor — MethodToricDivisor(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 varietySpecial 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_principal — Methodis_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)
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(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)
falseis_basepoint_free — Methodis_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)
trueis_cartier — Methodis_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)
trueis_effective — Methodis_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)
trueis_integral — Methodis_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)
trueis_nef — Methodis_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)
trueis_prime — Methodis_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)
trueis_q_cartier — Methodis_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)
trueis_very_ample — Methodis_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)
falseOperations for toric divisors
coefficients — Methodcoefficients(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
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(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))
falsetoric_variety — Methodtoric_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 torusfactorSpecial divisors
trivial_divisor — Methodtrivial_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 varietyanticanonical_divisor — Methodanticanonical_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 varietycanonical_divisor — Methodcanonical_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