AtiyahBott.jl

An implementation of the Atiyah-Bott formula for the moduli space of genus 0 stable maps.
Author mgemath
Popularity
4 Stars
Updated Last
8 Months Ago
Started In
July 2021

AtiyahBott.jl

Doc Site Site

This package contains an implementation of the Atiyah-Bott residue formula for the moduli space of genus 0 stable maps in the Julia language. The theory behind the package and the algorithm are described in the paper "Effective computations of the Atiyah-Bott formula" by Giosuè Muratore and Csaba Schneider (https://doi.org/10.1016/j.jsc.2022.01.005).
Full documentation is available here: https://mgemath.github.io/AtiyahBott.jl/.

Installation

In order to install this package, type:

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

After the installation, simply type:

julia> using AtiyahBott

every time you want to use the program.

To use our code, you should first define the equivariant classes to be calculated as

julia> P = ...

After the "=", one has to write an expression in the equivariant classes. After P is defined, one has to call the Atiyah-Bott formula by the command

julia> AtiyahBottFormula(n,d,m,P);

The full list of the currently supported equivariant classes is the following:

O1_i(j)       (pull back of the line bundle O(1) with respect to the ev_j)
O1()           (product of all O1_i(j))
Incidency(r)    (class of curves meeting a linear subspace)
Hypersurface(b) (class of curves contained in a hypersurface of degree b)
Contact()        (class of contact curves)
R1(k)           (first derived functor of direct image of the pull back of O(-k))
Psi(a)        (cycle of psi-classes)
Jet(p,q)      (Euler class of the jet bundle J^p)

Brief descriptions on these functions can be obtained through the standard help functionality of Julia by typing "?" and then the name of the function.

help?> Psi

Note that computations can be faster using multi-threading. Visit https://docs.julialang.org/en/v1/manual/multi-threading/#man-multithreading to learn how to start Julia with multi-threading.

Examples

In the following we list some geometrically meaning computations.

Curves in projective spaces

To compute the number of rational plane curves of degree d through 3d−1 general points, one may write:

julia> d = 1; #for other values of d, change this line
julia> P = O1()^2;
julia> AtiyahBottFormula(2,d,3*d-1,P);

Alternatively, one can perform such computation with zero marked points by typing:

julia> P = Incidency(2)^(3*d-1);
julia> AtiyahBottFormula(2,d,0,P);

Curves in Hypersurfaces

The virtual number of rational degree d curves on a general complete intersection of type (2,3) in the projective space of dimension 5:

julia> d = 1; #for other values of d, change this line
julia> P = Hypersurface([2,3]);
julia> AtiyahBottFormula(5,d,0,P);

The number of rational degree d curves on a cubic surface passing through d-1 points:

julia> d = 1; #for other values of d, change this line
julia> P = Hypersurface(3)*(Incidency(2)//3)^(d-1);
julia> AtiyahBottFormula(3,d,0,P);

Tangency conditions

The number plane rational degree d curves through 3d-2 points and tangent to a line:

julia> d = 1; #for other values of d, change this line
julia> P = Incidency(2)^(3*d-1)*Jet(1,1);
julia> AtiyahBottFormula(2,d,1,P);

Hurwitz numbers

The weighted number of genus 0 degree d covers of the projective line, which are étale over a fixed point and with 2d-2 fixed finite simple ramification points, is:

julia> d = 1; #for other values of d, change this line
julia> P = O1()*Psi(ones(Int,2*d-2));
julia> AtiyahBottFormula(1,d,2*d-2,P);

See https://arxiv.org/pdf/math/0101147.pdf.

Future goals

The following may be future expansions of this program.

  • Support for positive genus curves.
  • Improve parallel acceleration.

If you have other suggestions, please raise an issue on github.

Citing

We encourage you to cite our work if you have used our package. See "Cite this repository" on this page.

Used By Packages

No packages found.