## 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
1 Year Ago
Started In
July 2021

# AtiyahBott.jl

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

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`

## 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);```

## 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.