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
JToric.ToricDivisor
— TypeToricDivisor(coeffs::AbstractVector, v::AbstractNormalToricVariety )
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 thi linear combination are passed as list of integers as first argument.
Examples
julia> show( ToricDivisor( [1,1,2], projective_space( 2 ) ) )
A torus invariant divisor on a normal toric variety
Properties of toric divisors
JToric.isample
— Functionisample(td::ToricDivisor)
Determine whether the toric divisor td
is ample.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isample(td)
false
JToric.isbasepoint_free
— Functionisbasepoint_free(td::ToricDivisor)
Determine whether the toric divisor td
is basepoint free.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isbasepoint_free(td)
true
JToric.iscartier
— Functionis_cartier( d::ToricDivisor )
Checks if the divisor d
is Cartier.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> iscartier(td)
true
JToric.iseffective
— Methodiseffective(td::ToricDivisor)
Determine whether the toric divisor td
is effective.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> iseffective(td)
true
Hecke.isintegral
— Methodisintegral(td::ToricDivisor)
Determine whether the toric divisor td
is integral.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isintegral(td)
true
JToric.isnef
— Functionisnef(td::ToricDivisor)
Determine whether the toric divisor td
is nef.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isnef(td)
true
Hecke.isprincipal
— Functionisprincipal(A::NfOrdIdl) -> Bool, NfOrdElem
isprincipal(A::NfOrdFracIdl) -> Bool, NfOrdElem
Tests if $A$ is principal and returns $(\mathtt{true}, \alpha)$ if $A = \langle \alpha\rangle$ or $(\mathtt{false}, 1)$ otherwise.
isprincipal(D::ProjCurveDivisor{S}) where S <: FieldElem
Return true
if the divisor D
is principal, and false
otherwise
Example
julia> S, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])
julia> T, _ = grade(S)
(Multivariate Polynomial Ring in x, y, z over Rational Field graded by
x -> [1]
y -> [1]
z -> [1], MPolyElem_dec{fmpq, fmpq_mpoly}[x, y, z])
julia> C = Oscar.ProjPlaneCurve(T(y^2*z - x*(x-z)*(x+3*z)))
Projective plane curve defined by -x^3 - 2*x^2*z + 3*x*z^2 + y^2*z
julia> PP = projective_space(QQ, 2)
(Projective space of dim 2 over Rational Field
, MPolyElem_dec{fmpq, fmpq_mpoly}[x[0], x[1], x[2]])
julia> P = Oscar.Geometry.ProjSpcElem(PP[1], [QQ(0), QQ(1), QQ(0)])
(0 : 1 : 0)
julia> E = Oscar.ProjCurveDivisor(C, P)
(0 : 1 : 0)
julia> Oscar.isprincipal(E)
false
isprincipal(td::ToricDivisor)
Determine whether the toric divisor td
is principal.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isprincipal(td)
false
JToric.isq_cartier
— Functionisq_cartier(td::ToricDivisor)
Determine whether the toric divisor td
is Q-Cartier.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isq_cartier(td)
true
JToric.isvery_ample
— Functionisvery_ample(td::ToricDivisor)
Determine whether the toric divisor td
is very ample.
Examples
julia> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isvery_ample(td)
false
JToric.polyhedron_of_divisor
— Methodpolyhedron_of_divisor(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> H = hirzebruch_surface(4)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> td0 = ToricDivisor([0,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isfeasible(polyhedron_of_divisor(td0))
true
julia> dim(polyhedron_of_divisor(td0))
0
julia> td1 = ToricDivisor([1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isfeasible(polyhedron_of_divisor(td1))
true
julia> td2 = ToricDivisor([-1,0,0,0], H)
A torus invariant divisor on a normal toric variety
julia> isfeasible(polyhedron_of_divisor(td2))
false