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 varietytoric_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 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::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 varietyanticanonical_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 varietycanonical_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 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 toric variety
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 toric variety
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 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)
trueis_cartier — Methodis_cartier(td::ToricDivisor)Check 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)
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 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)
trueis_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)
trueis_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)
trueis_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)
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 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)
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 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)
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 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
4polyhedron — 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))
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 toric varietyThe 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 idealsThis function is part of the experimental code in Oscar. Please read here for more details.