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/.
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.
In the following we list some geometrically meaning computations.
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);
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);
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);
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.
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.
We encourage you to cite our work if you have used our package. See "Cite this repository" on this page.