An abstract variety in Schubert2 is defined by its dimension and by a $\QQ$-algebra $A$, interpreted as the intersection ring. For example, the following code defines the abstract variety corresponding to $\PP^2$.
|
|
Once the variety $X$ is created, we can access its structure sheaf $O_X$ via the operator OO, and view its Chern class:
|
|
A variable of type AbstractVariety is implemented as a mutable hash table, and can contain other information, such as the variety's tangent bundle, stored under the key TangentBundle. Installation of a variety's tangent bundle enables the computation of its Todd class.
|
|
To enable the computation of such things as the Euler characteristic of a sheaf, we must also specify a method to take the integral of an element of the intersection ring $A$; in the case where $A$ is Gorenstein, as is the case for the intersection ring modulo numerical equivalence of a complete nonsingular variety, the integral can often be implemented as the functional that takes the coefficient of the highest degree component with respect to a suitable basis of monomials. The default integration method installed by such functions as base and abstractVariety for varieties of dimension greater than 0 returns a symbolic expression indicating the further integration that ought to be done. In this example, we choose to implement the integral by taking the coefficient of the monomial in our ring of top degree.
|
Now we can compute the Euler characteristic of the line bundle whose first Chern class is $2t$ (the algorithm uses the Todd class and the Riemann-Roch formula):
|
There are several other methods for constructing abstract varieties: the following functions construct basic useful varieties: abstractProjectiveSpace, projectiveBundle, flagBundle, and base.
The object AbstractVariety is a type, with ancestor classes MutableHashTable < HashTable < Thing.