ToricAtiyahBott.jl

ToricAtiyahBottModule

ToricAtiyahBott is a module containing an implementation of the Kontsevich-Atiyah-Bott residue formula for toric varieties in the Julia language. The theory and the algorithm behind the package is described in the paper "Computations of Gromov-Witten invariants of toric varieties" by Giosuè Muratore.

source

In order to install the package, type:

julia> using Pkg
julia> Pkg.add("ToricAtiyahBott")

After the installation, simply type:

julia> using ToricAtiyahBott

every time you want to use the program. This package requires Oscar, so make sure that you can use Oscar before installing this package. See https://www.oscar-system.org/install/.

The function IntegrateAB

This is the main function of the package.

ToricAtiyahBott.IntegrateABFunction
IntegrateAB(v, beta, m, P; do_check, show_bar)

Apply the Atiyah-Bott residue formula to compute the integral of the equivariant class P in the moduli space of rational marked stable maps to the toric variety v of class beta with m marks.

Arguments

  • v::NormalToricVariety: the toric variety.
  • beta::CohomologyClass: the class of the stable maps, it must be the effective class of a curve.
  • m::Int64: the number of marks.
  • P: the equivariant class.
  • do_check::Bool: if true, checks if P is a well defined zero cycle, and stops the computation if this is not true. If false, the computation may have an unexpected behaviour. By default is true.
  • show_bar::Bool: hide the progress bar if and only if this condition is false. By default is true.

In order to use this function, one must define v, beta and P using Oscar:

julia> v = del_pezzo_surface(NormalToricVariety, 1); # this is the blow-up of the projective plane at a point

julia> beta = cohomology_class(toric_divisor(v, [0,0,1,0])); # class of pull back of a line of P2

julia> P = ev(1, a_point(v))*ev(2, a_point(v)); # pull back of a point through the first and second evaluations maps

julia> IntegrateAB(v, beta, 2, P, show_bar=false); # show_bar can be also true
Result: 1

The function returns an array of the same dimension of P (non-vectorized classes are assumed as 1-dimensional arrays). The Julia notation for accessing to array is name_of_array[i] where i is an index starting from 1.

More examples are available in the support of the equivariant classes. It is enough to type ? and then the name of the class. Currently, the supported classes are:

  • ev(j, cc) (Euler class of $\mathrm{ev}_j^*(cc)$ where $cc$ is either a cohomology class or a line bundle)
  • Psi(a) (cycle of $\psi$-classes)
  • push_ev(l)(push-forward under the forget map of $\mathrm{ev}_j^*(l)$)
  • R1_ev(l) (first derived functor of the pull-back of $\mathrm{ev}_j^*(l)$)
  • Jet(p, l) (Euler class of the jet bundle $J^p$ of the line bundle $l$)

To add more classes, please contact the authors.

source

Equivariant Classes

Here we list all equivariant classes currently supported by the package.

ToricAtiyahBott.evFunction
ev(j, cc)
ev(j, l)

Equivariant class of the pull-back of the cohomology class $cc$ (or the toric line bundle $l$) with respect to the j-th evaluation map.

Arguments

  • j::Int64: the evaluation map.
  • cc::CohomologyClass: the cohomology class.
  • l::ToricLineBundle: the line bundle.

Example

The following Gromov-Witten invariants

\[\begin{aligned} \int_{\overline{M}_{0,2}(\mathbb{P}^{1},1)}\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{1}}(1)\cdot\mathrm{ev}_{2}^{*}\mathcal{O}_{\mathbb{P}^{1}}(1) &= 1 \\ \int_{\overline{M}_{0,2}(\mathbb{P}^{2},1)}(\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1)\cdot\mathrm{ev}_{2}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1))^2 &= 1 \\ \end{aligned}\]

can be computed as

julia> v = projective_space(NormalToricVariety, 1);  # 1-dimensional projective space

julia> p = a_point(v); # the cohomology class of a point. Note that p^0 gives the class of the entire variety

julia> P = ev(1, p)*ev(2, p);

julia> IntegrateAB(v, p^0, 2, P, show_bar=false); # show_bar can be also true
Result: 1

julia> v = projective_space(NormalToricVariety, 2);  # 2-dimensional projective space

julia> l = toric_line_bundle(v, [1]);

julia> P = (ev(1, l)*ev(2, l))^2;

julia> line = cohomology_class(toric_divisor(v, [1,0,0]));

julia> IntegrateAB(v, line, 2, P, show_bar=false); # show_bar can be also true
Result: 1
Attention!

The program will stop if j is not between 1 and the number of marks.

Let us give some more examples. Let $v = \mathbb{P}(\mathcal{O}_{\mathbb{P}^3}\oplus\mathcal{O}_{\mathbb{P}^3}(5))$.

julia> P3 = projective_space(NormalToricVariety, 3);
julia> v = proj(toric_line_bundle(P3, [0]),toric_line_bundle(P3, [5]));

Using moment_graph we have a quick access to the moment graph of $v$.

julia> mg = moment_graph(v);

Consider the following curve class.

julia> beta = mg[1,2];

If $\mathrm{p}$ is the class of a point of $v$, in order to compute the following invariant

\[\begin{aligned} \int_{\overline{M}_{0,1}(v, \beta)} \mathrm{ev}_{1}^{*}(\mathrm{p}) &= 1 \\ \end{aligned}\]

we use the code:

julia> P = ev(1, a_point(v));
julia> IntegrateAB(v, beta, 1, P);

In order to speed up the computation, many equivariant classes of the same moduli space can be vectorized. For example the following two invariants are in the same moduli space.

\[\begin{aligned} \int_{\overline{M}_{0,2}(\mathbb{P}^2, 1)} \mathrm{ev}_{1}^{*}(\mathrm{p})\cdot\mathrm{ev}_{2}^{*}(\mathrm{p}) &= 1 \\ \int_{\overline{M}_{0,2}(\mathbb{P}^2, 1)} \mathrm{ev}_{1}^{*}(\mathrm{p})\cdot\psi_{1}^{1}\cdot\psi_{2}^{1} &= -1. \ \end{aligned}\]

The best way to compute them is by defining an array P=[P1,P2] and compute them together.

julia> v = projective_space(NormalToricVariety, 2);

julia> p = a_point(v);

julia> P1 = ev(1, p)*ev(2, p);

julia> P2 = ev(1, p)*Psi([1,1]);

julia> P = [P1,P2];

julia> line = cohomology_class(toric_divisor(v, [1,0,0]));

julia> IntegrateAB(v, line, 2, P, show_bar=false);
Result number 1: 1
Result number 2: -1
source
ToricAtiyahBott.PsiFunction
Psi(a)

Equivariant class of the cycle of $\psi$-classes.

Arguments

  • a: the list of exponents of the $\psi$ classes. It is ordered, meaning that the first element is the exponent of $\psi_1$, the second is the exponent of $\psi_2$, and so on. Alternatively, a can be a number. In this case it is equivalent to [1,0,0,...,0].
Note

The size of a must be at most m. If it is smaller, missing exponents will be considered as zeros. If a is a number, it will be considered as the exponent of $\psi_1$.

Attention!

The program will stop if we have one of the following conditions:

  • the size of a is bigger than m,
  • a contains a negative number.

Example

The following Gromov-Witten invariants

\[\begin{aligned} \int_{\overline{M}_{0,1}(\mathbb{P}^{2},2)}\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1)^{2}\cdot\psi_{1}^{4} &= \frac{1}{8} \\ \int_{\overline{M}_{0,2}(\mathbb{P}^{2},1)}\psi_{1}^{2}\psi_{2}^{2} &= 6 \\ \int_{\overline{M}_{0,1}(\mathbb{P}^{3},2)}\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1)\cdot(\psi_{1}^{7}\cdot\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1)+\psi_{1}^{6}\cdot\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(1)^{2}) &= -\frac{5}{16} \\ \end{aligned}\]

can be computed as

julia> v = projective_space(NormalToricVariety, 2);  # 2-dimensional projective space

julia> line = cohomology_class(toric_divisor(v, [1,0,0])); # the cohomology class of a line

julia> P = ev(1, line)^2*Psi(4);

julia> IntegrateAB(v, 2*line, 1, P, show_bar=false);
Result: 1//8

julia> Q = Psi(2,2);

julia> IntegrateAB(v, line, 2, Q, show_bar=false);
Result: 6

julia> v = projective_space(NormalToricVariety, 3);  # 3-dimensional projective space

julia> plane = cohomology_class(toric_line_bundle(v, [1])); # cohomology class of a plane

julia> P = ev(1, plane)*(Psi(7)*ev(1, plane)+Psi(6)*ev(1, plane)^2);

julia> IntegrateAB(v, 2*plane^2, 1, P, show_bar=false);
Result: -5//16
Psi is singleton!

Psi cannot be multiplied by itself.

julia> v = projective_space(NormalToricVariety, 2);  # 2-dimensional projective space
julia> line = cohomology_class(toric_divisor(v, [1,0,0])); # the cohomology class of a line
julia> P = ev(1, line)^2*Psi(1)^4;                  #this is **wrong**
julia> IntegrateAB(v, 2*line, 1, P);
Warning: more instances of Psi has been found. Type:
julia> ?Psi
for support.
julia> P = ev(1, line)^2*Psi(3)*Psi(1);            #this is **wrong**
julia> IntegrateAB(v, 2*line, 1, P);
Warning: more instances of Psi has been found. Type:
julia> ?Psi
for support.
julia> P = ev(1, line)^2*Psi(4);
julia> IntegrateAB(v, 2*line, 1, P);
Result: 1//8
source
ToricAtiyahBott.push_evFunction
push_ev(l)

Equivariant class of the push-forward under the forget map of the pull-back of the toric line bundle $l$.

Arguments

  • l::ToricLineBundle: the line bundle.

Example

The following Gromov-Witten invariants

\[\begin{aligned} \int_{\overline{M}_{0,0}(\mathbb{P}^{4},1)}\mathrm{c_{top}}(\delta_{*}(\mathrm{ev}^{*}\mathcal{O}_{\mathbb{P}^{4}}(5))) &= 2875 \\ \int_{\overline{M}_{0,1}(\mathbb{P}^{4},1)}\mathrm{c_{top}}(\delta_{*}(\mathrm{ev}^{*}\mathcal{O}_{\mathbb{P}^{4}}(5)))\cdot\psi_{1}^{1} &= -5750 \end{aligned}\]

can be computed as

julia> v = projective_space(NormalToricVariety, 4);

julia> line = cohomology_class(toric_line_bundle(v, [1]))^3;

julia> P = push_ev(toric_line_bundle(v, [5]));

julia> IntegrateAB(v, line, 0, P, show_bar=false);
Result: 2875

julia> P = push_ev(toric_line_bundle(v, [5]))*Psi(1);

julia> IntegrateAB(v, line, 1, P, show_bar=false);
Result: -5750
source
ToricAtiyahBott.R1_evFunction
R1_ev(l)

The equivariant class of the first derived functor of the pull-back of the toric line bundle $l$.

Arguments

  • l::ToricLineBundle: the line bundle.

Example

\[\begin{aligned} \int_{\overline{M}_{0,0}(\mathbb{P}^{1},d)}\mathrm{c_{top}}(R^{1}\delta_{*}(\mathrm{ev}^{*}\mathcal{O}_{\mathbb{P}^{3}}(-1)))^2 &= \frac{1}{d^3} \ \end{aligned}\]

can be computed as

julia> P1 = projective_space(NormalToricVariety, 1);

julia> beta = moment_graph(P1)[1,2];
(1,2) -> 1

julia> P = R1_ev(toric_line_bundle(P1, [-1]))^2;

julia> IntegrateAB(P1, beta, 0, P, show_bar=false);
Result: 1
source
ToricAtiyahBott.JetFunction
Jet(p, l)

Equivariant class of the jet bundle $J^p$ of the pull back of the toric line bundle $l$ with respect to the first $\psi$-class.

Arguments

  • p::Int64: the exponent of the Jet bundle. In particular, it is a bundle of rank $p+1$.
  • l::Int64: the toric line bundle that is pulled back.
Note

In order to define this bundle, the number of marks must be at least 1. You cannot multiply this bundle by the class Psi(a).

Example

\[\begin{aligned} \int_{\overline{M}_{0,1}(\mathbb{P}^{3},d)}\frac{\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{3}}(1)^{2}}{k}\cdot\mathrm{c_{top}}(J^{4d-2}(\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{3}}(k))) &= \frac{(4d-2)!}{(d!)^{4}} \\ \int_{\overline{M}_{0,1}(\mathbb{P}^{2},1)}\mathrm{c_{top}}(J^{2}(\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{2}}(3))) &= 9 \\ \end{aligned}\]

can be computed as

julia> d=1;k=1; #for other values of d, change this line

julia> v = projective_space(NormalToricVariety, 3);

julia> line = cohomology_class(toric_divisor(v, [1,0,0,0]))^2;

julia> beta = d*line;

julia> l = toric_line_bundle(v, [k]);

julia> P = ev(1,line)//k*Jet(4*d-2,l);

julia> IntegrateAB(v, beta, 1, P, show_bar=false);   #The value of this integral does not depend on k, only on d
Result: 2

julia> v = projective_space(NormalToricVariety, 2);

julia> l = toric_line_bundle(v, [1]);

julia> line = cohomology_class(l);

julia> IntegrateAB(v, line, 1, Jet(2, l^3), show_bar=false); # flexes of a cubic curve
Result: 9
source
ToricAtiyahBott.class_oneFunction
class_one()

Equivariant class equals to the number one. Useful to compute the degree of a moduli space of dimension 0.

Example

Let $v$ be a toric variety and $\beta$ be a class such that $\overline{M}_{0,0}(v,\beta)$ is zero dimensional. The following Gromov-Witten invariants

\[\int_{\overline{M}_{0,0}(v,\beta)}1 \]

can be computed, for example, as

julia> P3 = projective_space(NormalToricVariety, 3);

julia> x = domain(blow_up(P3, [1,1,1]; coordinate_name="Ex1"));

julia> v = domain(blow_up(x, [-1,0,0]; coordinate_name="Ex2"));

julia> mg = moment_graph(v, show_graph=false);

julia> (H, E1, E2) = (mg[7,8], mg[4,5], mg[1,2]);

julia> (d, e1, e2) = (2, -2, -2);

julia> beta = d*H + e1*E1 + e2*E2;

julia> P = class_one();

julia> IntegrateAB(v, beta, 0, P, show_bar=false);
Result: 1//8
source
ToricAtiyahBott.push_omegaFunction
push_omega(l)

Equivariant class of the push-forward under the forgetful map of $ev^*l$ tensored the cotangent bundle of the forgetful map.

Arguments

  • l::ToricLineBundle: the line bundle.

Example

The following Gromov-Witten invariants

\[\begin{aligned} \int_{\overline{M}_{0,2}(\mathbb{P}^{3},1)}\mathrm{ev}_{1}^{*}\mathcal{O}_{\mathbb{P}^{3}}(1)^{2}\cdot\mathrm{ev}_{2}^{*}\mathcal{O}_{\mathbb{P}^{3}}(1)^{3}\cdot\mathrm{c_{top}}(\delta_{*}(\omega_{\delta}\otimes\mathrm{ev}^{*}\mathcal{O}_{\mathbb{P}^{3}}(2))) &= 1 \\ \end{aligned}\]

can be computed as

julia> v = projective_space(NormalToricVariety, 3);

julia> line = cohomology_class(toric_line_bundle(v, [1]))^2;

julia> P = push_omega(toric_line_bundle(v, [2]))*ev(1, line)*ev(2, a_point(v));

julia> IntegrateAB(v, line, 2, P, show_bar=false);
Result: 1
source

Other Functions

ToricAtiyahBott.vir_dim_MFunction
vir_dim_M(v, beta, m)

The virtual dimension of the moduli space of stable rational map to the toric variety v, of class beta with m marks.

Arguments

  • v::NormalToricVariety: the toric variety.
  • beta::CohomologyClass: the class of the stable maps.
  • m::Int64: the number of marks.

Example

julia> v = projective_space(NormalToricVariety, 2);

julia> beta = cohomology_class(toric_divisor(v, [1,0,0]));

julia> vir_dim_M(v,beta,0)
2
source
ToricAtiyahBott.codimensionFunction
codimension(v, beta, m, P)

The codimension of the equivariant class P.

Arguments

  • v::NormalToricVariety: the toric variety.
  • beta::CohomologyClass: the class of the stable maps.
  • m::Int64: the number of marks. If omitted, it is assumed as m=0.
  • P: the equivariant class.
source
ToricAtiyahBott.is_zero_cycleFunction
is_zero_cycle(v, beta, m, P)

Return true if the equivariant class P is a 0-cycle in the moduli space, false otherwise.

Arguments

  • v::NormalToricVariety: the toric variety.
  • beta::CohomologyClass: the class of the stable maps.
  • m::Int64: the number of marks.
  • P: the equivariant class.
source
ToricAtiyahBott.moment_graphFunction
moment_graph(v; show_graph)

The moment graph of the toric variety $v$. It prints all pairs $(i,j)$, together with the cohomology class of the invariant curve passing through the points corresponding to the maximal cones $i$ and $j$. The cohomology class is expressed in the coordinates of the Chow ring.

Arguments

  • v::NormalToricVariety: the toric variety.

Example

julia> P2 = projective_space(NormalToricVariety, 2);

julia> mg = moment_graph(P2);
(1,2) -> x3
(1,3) -> x3
(2,3) -> x3

julia> C = mg[1,2];

If show_graph is omitted or false, the output is omitted.

julia> P1 = projective_space(NormalToricVariety, 1);

julia> mg = moment_graph(P1, show_graph=false);
source

Index