Giter Site home page Giter Site logo

mgemath / atiyahbott.jl Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 2.0 343 KB

An implementation of the Atiyah-Bott formula for the moduli space of genus 0 stable maps.

Home Page: https://mgemath.github.io/AtiyahBott.jl/

License: MIT License

Julia 100.00%
algebraic-geometry graph-algorithms equivariant-representations cohomology python3 julia

atiyahbott.jl's Introduction

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.

atiyahbott.jl's People

Contributors

mgemath avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

schcs dzaiger

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.