Cohomology Classes
Constructors
General constructors
cohomology_class
— Methodcohomology_class(v::AbstractNormalToricVariety, p::MPolyQuoRingElem)
Construct the toric cohomology class on the toric variety v
corresponding to the polynomial p
. Note that p
must reside in the cohomology ring of v
.
Examples
julia> P2 = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> c = cohomology_class(P2, gens(cohomology_ring(P2))[1])
Cohomology class on a normal toric variety given by x1
cohomology_class
— Methodcohomology_class(d::ToricDivisor)
Construct the toric cohomology class corresponding to the toric divisor d
.
Examples
julia> P2 = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(P2, [1, 2, 3])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3
cohomology_class
— Methodcohomology_class(c::ToricDivisorClass)
Construct the toric cohomology class corresponding to the toric divisor class c
.
Examples
julia> P2 = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> tdc = toric_divisor_class(P2, [2])
Divisor class on a normal toric variety
julia> cohomology_class(tdc)
Cohomology class on a normal toric variety given by 2*x3
cohomology_class
— Methodcohomology_class(l::ToricLineBundle)
Construct the toric cohomology class corresponding to the toric line bundle l
.
Examples
julia> P2 = projective_space(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> l = toric_line_bundle(P2, [2])
Toric line bundle on a normal toric variety
julia> polynomial(cohomology_class(l))
2*x3
Addition, subtraction and scalar multiplication
Cohomology classes 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
or QQFieldElem
.
Wedge product
The wedge product of cohomology classes is implemented via *
, using internally the multiplication of the corresponding polynomial (equivalence classes) in the Cox ring.
A cohomology class can be wedged n
-times with itself via ^n
, where n
can be an integer or of type ZZRingElem
.
Properties
One can check if a cohomology class is trivial via is_trivial
.
Equality of cohomology classes can be tested via ==
.
Attributes
toric_variety
— Methodtoric_variety(c::CohomologyClass)
Return the normal toric variety of the cohomology class c
.
Examples
julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(dP2, [1, 2, 3, 4, 5])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cc = cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2
julia> toric_variety(cc)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
coefficients
— Methodcoefficients(c::CohomologyClass)
Return the coefficients of the cohomology class c
.
Examples
julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(dP2, [1, 2, 3, 4, 5])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cc = cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2
julia> coefficients(cc)
3-element Vector{QQFieldElem}:
6
1
7
exponents
— Methodexponents(c::CohomologyClass)
Return the exponents of the cohomology class c
.
Examples
julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(dP2, [1, 2, 3, 4, 5])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cc = cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2
julia> exponents(cc)
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
polynomial
— Methodpolynomial(c::CohomologyClass)
Return the polynomial in the cohomology ring of the normal toric variety toric_variety(c)
which corresponds to c
.
Examples
julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(dP2, [1, 2, 3, 4, 5])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cc = cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2
julia> polynomial(cc)
6*x3 + e1 + 7*e2
polynomial
— Methodpolynomial(c::CohomologyClass, ring::MPolyQuoRing)
Return the polynomial in ring
corresponding to the cohomology class c
.
Examples
julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> d = toric_divisor(dP2, [1, 2, 3, 4, 5])
Torus-invariant, non-prime divisor on a normal toric variety
julia> cc = cohomology_class(d)
Cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2
julia> R, _ = polynomial_ring(QQ, 5)
(Multivariate polynomial ring in 5 variables over QQ, QQMPolyRingElem[x1, x2, x3, x4, x5])
julia> (x1, x2, x3, x4, x5) = gens(R)
5-element Vector{QQMPolyRingElem}:
x1
x2
x3
x4
x5
julia> sr_and_linear_relation_ideal = ideal([x1*x3, x1*x5, x2*x4, x2*x5, x3*x4, x1 + x2 - x5, x2 + x3 - x4 - x5])
ideal(x1*x3, x1*x5, x2*x4, x2*x5, x3*x4, x1 + x2 - x5, x2 + x3 - x4 - x5)
julia> R_quo = quo(R, sr_and_linear_relation_ideal)[1]
Quotient
of multivariate polynomial ring in 5 variables over QQ
by ideal(x1*x3, x1*x5, x2*x4, x2*x5, x3*x4, x1 + x2 - x5, x2 + x3 - x4 - x5)
julia> polynomial(R_quo, cc)
6*x3 + x4 + 7*x5
Methods
integrate
— Methodintegrate(c::CohomologyClass)
Integrate the cohomolgy class c
over the normal toric variety toric_variety(c)
.
Examples
julia> dP3 = del_pezzo_surface(NormalToricVariety, 3)
Normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
julia> (x1, x2, x3, e1, e2, e3) = gens(cohomology_ring(dP3))
6-element Vector{MPolyQuoRingElem{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}:
x1
x2
x3
e1
e2
e3
julia> c = cohomology_class(dP3, e3*e3 + e3)
Cohomology class on a normal toric variety given by e3^2 + e3
julia> integrate(c)
-1
julia> F3 = hirzebruch_surface(NormalToricVariety, 3)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> (x1, x2, x3, x4) = gens(cohomology_ring(F3))
4-element Vector{MPolyQuoRingElem{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}:
t1
x1
t2
x2
julia> c = cohomology_class(F3, x1*x2 + x3*x4)
Cohomology class on a normal toric variety given by 2//3*x2^2
julia> integrate(c)
2
Special attributes of toric varieties
cohomology_ring
— Methodcohomology_ring(v::AbstractNormalToricVariety)
Return the cohomology ring of the simplicial and complete toric variety v
.
Examples
julia> p2 = projective_space(NormalToricVariety, 2);
julia> ngens(cohomology_ring(p2))
3
volume_form
— Methodvolume_form(v::NormalToricVariety)
Construct the volume form of the normal toric toric variety v
.
Examples
julia> polynomial(volume_form(projective_space(NormalToricVariety, 2)))
x3^2
julia> polynomial(volume_form(del_pezzo_surface(NormalToricVariety, 3)))
-e3^2
julia> polynomial(volume_form(hirzebruch_surface(NormalToricVariety, 5)))
1//5*x2^2
intersection_form
— Methodintersection_form(v::NormalToricVariety)
Computes the intersection numbers among the cohomology classes associated to the torusinvariant prime divisors of the normal toric toric variety v
.
Examples
julia> F3 = hirzebruch_surface(NormalToricVariety, 3)
Normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor
julia> length(intersection_form(F3))
10