Cohomology Classes

Constructors

General constructors

cohomology_classMethod
cohomology_class(v::NormalToricVarietyType, 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 toric variety

julia> c = cohomology_class(P2, gens(cohomology_ring(P2))[1])
Cohomology class on a normal toric variety given by x1
source
cohomology_classMethod
cohomology_class(d::ToricDivisor)

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

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
Normal toric variety

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
source
cohomology_classMethod
cohomology_class(c::ToricDivisorClass)

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

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
Normal toric variety

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
source
cohomology_classMethod
cohomology_class(l::ToricLineBundle)

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

Examples

julia> P2 = projective_space(NormalToricVariety, 2)
Normal toric variety

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

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

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_varietyMethod
toric_variety(c::CohomologyClass)

Return the normal toric variety of the cohomology class c.

Examples

julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal toric variety

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, simplicial, complete toric variety
source
coefficientsMethod
coefficients(c::CohomologyClass)

Return the coefficients of the cohomology class c.

Examples

julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal toric variety

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
source
exponentsMethod
exponents(c::CohomologyClass)

Return the exponents of the cohomology class c.

Examples

julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal toric variety

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]
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_surface(NormalToricVariety, 2)
Normal toric variety

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
source
polynomialMethod
polynomial(c::CohomologyClass, ring::MPolyQuoRing)

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

Examples

julia> dP2 = del_pezzo_surface(NormalToricVariety, 2)
Normal toric variety

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 generated by
  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 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(R_quo, cc)
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_surface(NormalToricVariety, 3)
Normal toric variety

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 toric variety

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

The following example constructs the Fano variety 2-36 (cf. https://www.fanography.info/2-36) and verifies that the triple self-intersection number of its anticanonical bundle is 62.

Examples

julia> e1 = [1,0,0];

julia> e2 = [0,1,0];

julia> e3 = [0,0,1];

julia> m = 2;

julia> ray_generators = [e1, -e1, e2, e3, - e2 - e3 - m * e1];

julia> max_cones = IncidenceMatrix([[1,3,4], [1,3,5], [1,4,5], [2,3,4], [2,3,5], [2,4,5]]);

julia> X = normal_toric_variety(max_cones, ray_generators; non_redundant = true)
Normal toric variety

julia> cox_ring(X)
Multivariate polynomial ring in 5 variables over QQ graded by
  x1 -> [1 0]
  x2 -> [1 2]
  x3 -> [0 -1]
  x4 -> [0 -1]
  x5 -> [0 -1]

julia> cohomology_ring(X)
Quotient
  of multivariate polynomial ring in 5 variables over QQ graded by
    x1 -> [1]
    x2 -> [1]
    x3 -> [1]
    x4 -> [1]
    x5 -> [1]
  by ideal (x1 - x2 - 2*x5, x3 - x5, x4 - x5, x1*x2, x3*x4*x5)

julia> integrate(cohomology_class(anticanonical_divisor(X))^3)
62

julia> integrate(cohomology_class(anticanonical_divisor_class(X))^3)
62
source

Special attributes of toric varieties

cohomology_ringMethod
cohomology_ring(v::NormalToricVarietyType)

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_surface(NormalToricVariety, 3)))
-e3^2

julia> polynomial(volume_form(hirzebruch_surface(NormalToricVariety, 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(NormalToricVariety, 3)
Normal toric variety

julia> length(intersection_form(F3))
10
source