IntersectionTheory is an early stage Julia package for doing computations in intersection theory, built using the components of Oscar (Nemo, Singular.jl, and GAP.jl).
It's heavily inspired by the Macaulay2 package Schubert2 and the Sage library Chow. Some functionalities from Schubert3 are also implemented. Compared to these, the advantage is the vast improvement in performance due to the efficiency of Julia and Oscar.
Hopefully this will be shipped with Oscar in the future. Right now it can be installed as follows.
julia> using Pkg
julia> Pkg.add(url="https://github.com/8d1h/IntersectionTheory")
To use it, type the following and wait for the package to load.
julia> using IntersectionTheory
julia> chern(proj(4))
1 + 5*h + 10*h^2 + 10*h^3 + 5*h^4
julia> todd(2)
1 + 1//2*c₁ + 1//12*c₁^2 + 1//12*c₂
julia> C, d = curve("g", param="d")
(AbsVariety of dim 1, d)
julia> chi(OO(C, d*C.point))
-g + d + 1
julia> B = blowup_points(2, proj(2))
AbsVariety of dim 2
julia> canonical_class(B)
e₂ + e₁ - 3*h
julia> intersection_matrix(basis(1, B))
[1 0 0]
[0 -1 0]
[0 0 -1]
julia> S = complete_intersection(proj(3), 4)
AbsVariety of dim 2
julia> hilbert_polynomial(S)
2*t^2 + 2
julia> signature(S)
-16
julia> integral(ctop(symmetric_power(3, dual(bundles(grassmannian(2, 4))[1]))))
27
ChRing
andChRingElem
for handling graded rings with weights, and their quotients;- Basic constructions for doing intersection theory, including
AbsVariety
represented by the Chow ring,AbsBundle
represented by Chern characters,AbsVarietyHom
for morphisms, and various operators that can be used on them; - Blowing up subvarieties;
- Constructors for projective spaces, Grassmannians, flag varieties, and their relative versions;
- Constructors for moduli spaces of matrices, and parameter spaces of twisted cubics;
- Some basic functionalities for computing integrals using Bott's formula, including
TnVariety
for varieties with a torus action, andTnBundle
for equivariant bundles; - Constructors for Grassmannians and flag varieties as
TnVariety
.