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)))))) 27
ChRingElemfor 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, and
TnBundlefor equivariant bundles;
- Constructors for Grassmannians and flag varieties as