Introduction
Abstract varieties
When doing intersection theory in this package, we are not working with concrete varieties defined by algebraic equations; rather, we work with abstract varieties that are represented by their Chow rings, an analogue of the cohomology ring.
More precisely, we only work with projective smooth varieties defined over an algebraically closed field of characteristic 0 (or simply $\mathbf C$). Let $X$ be such a variety. A $k$-cycle on $X$ is a formal linear combination of codimension-$k$ subvarieties with rational coefficients, and a $k$-class is an equivalent class of cycles modulo numerical equivalence (see below). The Chow ring $A^*(X)$ is a commutative graded ring, where $A^k(X)$ are classes of codimension $k$, and the product is given by the intersection product $A^k(X)\times A^l(X)\to A^{k+l}(X)$.
Some remarks:
- Since we work with rational coefficients, we will not be able to see any torsion classes.
- For practical reasons, we can use Singular's
FunctionField
as coefficients. This will allow us to introduce parameters and do some symbolic computations. - Usually the rational equivalence is used for defining the Chow ring. But this is too fine an equivalence for us: we are actually working with numerical equivalence, that is, we only care about the intersection numbers with respect to classes in complementary codimension. This is enough for most enumerative problems, and another advantage is that we can deduce the pushforward of a morphism when only the pullback is known (see Morphisms for details).
- In many cases, we won't be able to compute the entire Chow ring: we will only be able to obtain information on a certain subring generated by some tautological classes. Therefore we are actually working with the class of all varieties that share the same piece of tautological ring (see A "non-algebraic" example for a typical example).
- For some nice varieties, the numerical equivalence coincides with the rational equivalence. In this case the Chow ring coincides with the rational cohomology ring and can be completely computed, so both problems disappear. A nice consequence is that the Betti numbers of the Chow ring are exactly the (even) Betti numbers of the variety itself, so we have an equality
sum(betti(X)) == euler(X)
. The class of these varieties includes projective spaces, Grassmannians, homogeneous spaces for affine algebraic groups (e.g., flag varieties), and in general any variety with an affine stratification. Moreover, products, projective bundles, and blowups with center in this class will remain in this class. Internally, we useset_special(X, :alg => true)
to declare that $X$ satisfies this property. (maybe a better name?)
Technically, an abstract variety is given as an AbsVariety
.
IntersectionTheory.AbsVariety
— TypeAbsVariety(n::Int, R::ChRing)
The type of an abstract variety.
It contains the following fields:
dim::Int
: the dimension of the variety;ring::ChRing
: the Chow ring;base
: the coefficient ring, default isSingular.QQ
;
and optionally, the following:
point
: the class of a point, used for computing integrals;O1
: a polarization class, if applicable;T
: the tangent bundle of the variety;bundles
: tautological bundles, if applicable;struct_map
: the structure map.
See Constructors for available variety constructors, including projective spaces, Grassmannians, etc.
Abstract bundles
Since $X$ is smooth, any coherent sheaf on $X$ admits a finite resolution by locally-free sheaves, i.e., vector bundles. We get an isomorphism of Grothendieck rings $K^0(X)\simeq K_0(X)$. Therefore we will only speak of abstract bundles, which should be thought of as virtual bundles or complexes of bundles.
By Grothendieck–Riemann–Roch theorem, the Chern character $\mathrm{ch}$ provides an isomorphism from the Grothendieck ring $K_0(X)$ to the Chow ring (modulo rational equivalence) over rational coefficients
\[\mathrm{ch}: K_0(X)_{\mathbf Q}\xrightarrow{\sim} A^*(X)_{\mathbf Q}.\]
So an abstract bundle will be represented by its Chern character. Equivalently, this can be determined by the rank and the total Chern class.
IntersectionTheory.AbsBundle
— TypeAbsBundle(X::AbsVariety, ch::ChRingElem)
AbsBundle(X::AbsVariety, r, c::ChRingElem)
The type of an abstract bundle.
It contains the following fields:
parent::AbsVariety
: the base variety;rank
: the rank of the bundle, which can contain parameters so is not necessarily anInt
;ch
: the Chern character;chern
: the total Chern class.
Abstract variety morphisms
An abstract variety morphism $f:X\to Y$ is specified by the pullback $f^*:A^*(Y)\to A^*(X)$ and the pushforward $f_*:A^*(X)\to A^*(Y)$. The pullback is functorial so it should be a ring homomorphism (a ChAlgHom
), while the pushforward is only a FunctionMap
.
IntersectionTheory.AbsVarietyHom
— TypeAbsVarietyHom(X::AbsVariety, Y::AbsVariety, fˣ::ChAlgHom, fₓ)
AbsVarietyHom(X::AbsVariety, Y::AbsVariety, fˣ::Vector, fₓ)
The type of an abstract variety morphism.
It contains the following fields:
domain::AbsVariety
: the domain of the morphism;codomain::AbsVariety
: the codomain of the morphism;dim::Int
: the relative dimension;pullback::ChAlgHom
;pushforward::FunctionMap
;
and optionally, the following:
O1
: the class of a relative $\mathcal O(1)$, if applicable;T
: the relative tangent bundle.
See Morphisms for details on how to build morphisms and manipulate them.
Varieties with a torus action and equivariant bundles
If $X$ is a complex variety (or more generally, an orbifold) with a torus action that admits only isolated fixed points, Bott's localization formula expresses certain integrals as a sum over the fixed points. In the case of Grassmannians and flag varieties, there are natural torus actions and Bott's formula allows us to compute integrals using only combinatoric data.
To model this, we have the following types.
IntersectionTheory.TnVariety
— TypeTnVariety(n::Int, points)
The type of a variety with a torus action, represented by the fixed points.
It has the following fields:
dim::Int
: the dimension of the variety;points::Vector{Pair{P, Int}}
: a vector of fixed points and their orbifold multiplicities;T
: the tangent bundle;bundles
: tautological bundles, if applicable.
IntersectionTheory.TnBundle
— TypeTnBundle(X::TnVariety, r::Int, f::Function)
The type of a torus-equivariant bundle, represented by its localizations to the fixed points of the base variety.
It has the following fields:
parent::TnVariety
: the base variety;rank::Int
: the rank of the bundle;loc::Function
: the localizations.
The localization/restriction of a TnBundle
to each of the fixed points in X.points
is a representation of type TnRep
. They are stored as a function to allow lazy evaluation. This is crucial for large examples, since otherwise we may run into memory problems.
IntersectionTheory.TnRep
— TypeTnRep(w::Vector)
The type of a representation of a torus, specified by its weights.
It has fields:
n::Int
: the dimension of the representation;w::Vector
: the weights.
We try to keep the same syntax for AbsVariety
and TnVariety
, and for AbsBundle
and TnBundle
, wherever possible. See the documentations for details.
Graded rings
The following types are implemented to handle graded rings with weights, and their quotients.
IntersectionTheory.ChRing
— TypeChRing(R::MPolyRing, w::Vector{Int})
ChRing(R::MPolyRing, w::Vector{Int}, I::sideal)
The type of a graded ring, possibly equipped with an ideal to represent a quotient ring.
IntersectionTheory.ChRingElem
— TypeChRingElem(R::ChRing, f::RingElem)
The type of an element of a ChRing
.
IntersectionTheory.ChAlgHom
— TypeChAlgHom(A::ChRing, B::ChRing, image::Vector)
The type of a ring homomorphism between two ChRing
s.
For a ChRingElem
, its homogeneous components can be accessed via Julia's getindex
interface.
julia> c = chern(proj(3))
1 + 4*h + 6*h^2 + 4*h^3
julia> c[1]
4*h
julia> c[0:5]
6-element Vector{IntersectionTheory.ChRingElem}:
1
4*h
6*h^2
4*h^3
0
0
For performance reasons, an element of a quotient ring might not always be in reduced form. It can be simplified using simplify
(return a copy) and simplify!
(in place).