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::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
toric_divisor
— Methodtoric_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
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_divisor
— Methodtrivial_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
anticanonical_divisor
— Methodanticanonical_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
canonical_divisor
— Methodcanonical_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
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_principal
— Methodis_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
Beyond 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 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
is_basepoint_free
— Methodis_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
is_cartier
— Methodis_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
is_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 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
is_integral
— Methodis_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
is_nef
— Methodis_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
is_prime
— Methodis_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
is_q_cartier
— Methodis_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
is_very_ample
— Methodis_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
Attributes
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 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
polyhedron
— Methodpolyhedron(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
toric_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 toric variety
The following attributes are supported by experimental code:
scheme
— Methodscheme(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)
This function is part of the experimental code in Oscar. Please read here for more details.
forget_toric_structure
— Methodforget_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
This function is part of the experimental code in Oscar. Please read here for more details.