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 IntersectionTheoryjulia> 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]))))
27ChRingandChRingElemfor handling graded rings with weights, and their quotients;- Basic constructions for doing intersection theory, including
AbsVarietyrepresented by the Chow ring,AbsBundlerepresented by Chern characters,AbsVarietyHomfor 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
TnVarietyfor varieties with a torus action, andTnBundlefor equivariant bundles; - Constructors for Grassmannians and flag varieties as
TnVariety.