Cohomology Classes

Constructors

Generic constructors

CohomologyClassMethod
CohomologyClass(d::ToricDivisor)

Construct the toric cohomology class corresponding to the toric divisor d.

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(P2, [1,2,3])
A torus-invariant, non-prime divisor on a normal toric variety

julia> CohomologyClass(d)
A cohomology class on a normal toric variety given by 6*x3
source
CohomologyClassMethod
CohomologyClass(c::ToricDivisorClass)

Construct the toric cohomology class corresponding to the toric divisor class c.

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> tdc = ToricDivisorClass(P2, [2])
A divisor class on a normal toric variety

julia> CohomologyClass(tdc)
A cohomology class on a normal toric variety given by 2*x3
source
CohomologyClassMethod
CohomologyClass(l::ToricLineBundle)

Construct the toric cohomology class corresponding to the toric line bundle l.

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> l = ToricLineBundle(P2, [2])
A toric line bundle on a normal toric variety

julia> polynomial(CohomologyClass(l))
2*x3
source

Addition, subtraction and scalar multiplication

Addition of cohomology classes cc1 and cc2 is implemented by cc1+cc2. Similarly, we can subtract the classes by cc1-cc2. Scalar multiplication with c (this could be an integer, fmpz or even fmpq number) is supported by c*cc1.

Wedge product

The wedge product of cohomology classes cc1 and cc2 is computed by cc1*cc2. This makes sense, since cohomology classes on toric varieties are elements of the cohomology ring, which in turn is (a certain) quotient of the Cox ring. Hence, internally, a cohomology class is just a polynomial in this ring and the wedge product corresponds to the product of two (equivalence classes of) polynomials. We also support cc1^n, which corresponds to computing the wedge product of cc1 with itself n-times.

Equality

Equality of cohomology classes cc1 and cc2 is implemented by cc1 == cc2.

Properties

To check if a cohomology class c is trivial, one can invoke is_trivial(c).

Attributes

toric_varietyMethod
toric_variety(c::CohomologyClass)

Return the normal toric variety of the cohomology class c.

Examples

julia> dP2 = del_pezzo(2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(dP2, [1,2,3,4,5])
A torus-invariant, non-prime divisor on a normal toric variety

julia> cc = CohomologyClass(d)
A cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2

julia> toric_variety(cc)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor
source
coefficientsMethod
coefficients(c::CohomologyClass)

Return the coefficients of the cohomology class c.

Examples

julia> dP2 = del_pezzo(2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(dP2, [1,2,3,4,5])
A torus-invariant, non-prime divisor on a normal toric variety

julia> cc = CohomologyClass(d)
A cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2

julia> coefficients(cc)
3-element Vector{fmpq}:
 6
 1
 7
source
exponentsMethod
exponents(c::CohomologyClass)

Return the exponents of the cohomology class c.

Examples

julia> dP2 = del_pezzo(2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(dP2, [1,2,3,4,5])
A torus-invariant, non-prime divisor on a normal toric variety

julia> cc = CohomologyClass(d)
A 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]
source
polynomialMethod
polynomial(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(2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(dP2, [1,2,3,4,5])
A torus-invariant, non-prime divisor on a normal toric variety

julia> cc = CohomologyClass(d)
A cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2

julia> polynomial(cc)
6*x3 + e1 + 7*e2
source
polynomialMethod
polynomial(c::CohomologyClass, ring::MPolyQuo)

Returns the polynomial in ring corresponding to the cohomology class c.

Examples

julia> dP2 = del_pezzo(2)
A normal, non-affine, smooth, projective, gorenstein, fano, 2-dimensional toric variety without torusfactor

julia> d = ToricDivisor(dP2, [1,2,3,4,5])
A torus-invariant, non-prime divisor on a normal toric variety

julia> cc = CohomologyClass(d)
A cohomology class on a normal toric variety given by 6*x3 + e1 + 7*e2

julia> R, _ = PolynomialRing(QQ, 5)
(Multivariate Polynomial Ring in x1, x2, x3, x4, x5 over Rational Field, fmpq_mpoly[x1, x2, x3, x4, x5])

julia> (x1,x2,x3,x4,x5) = gens(R)
5-element Vector{fmpq_mpoly}:
 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 x1, x2, x3, x4, x5 over Rational Field by ideal(x1*x3, x1*x5, x2*x4, x2*x5, x3*x4, x1 + x2 - x5, x2 + x3 - x4 - x5)

julia> polynomial(cc, R_quo)
6*x3 + x4 + 7*x5
source

Methods

integrateMethod
integrate(c::CohomologyClass)

Integrate the cohomolgy class c over the normal toric variety toric_variety(c).

Examples

julia> dP3 = del_pezzo(3)
A 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{MPolyQuoElem{MPolyElem_dec{fmpq, fmpq_mpoly}}}:
 x1
 x2
 x3
 e1
 e2
 e3

julia> c = CohomologyClass(dP3, e3*e3 + e3)
A cohomology class on a normal toric variety given by e3^2 + e3

julia> integrate(c)
-1

julia> F3 = hirzebruch_surface(3)
A 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{MPolyQuoElem{MPolyElem_dec{fmpq, fmpq_mpoly}}}:
 t1
 x1
 t2
 x2

julia> c = CohomologyClass(F3, x1*x2 + x3*x4)
A cohomology class on a normal toric variety given by 2//3*x2^2

julia> integrate(c)
2
source

Special attributes of toric varieties

cohomology_ringMethod
cohomology_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
source
volume_formMethod
volume_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(3)))
-e3^2

julia> polynomial(volume_form(hirzebruch_surface(5)))
1//5*x2^2
source
intersection_formMethod
intersection_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(3)
A normal, non-affine, smooth, projective, gorenstein, non-fano, 2-dimensional toric variety without torusfactor

julia> length(intersection_form(F3))
10
source