Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions experimental/IntersectionTheory/docs/doc.main
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[
"Intersection Theory" => [
"intro.md",
"schubert2.md",
"AbstractVarieties.md",
"AbstractBundles.md",
"AbstractVarietyMaps.md",
"blowups.md",
"schubert_calculus.md",
"constructions.md",
"examples.md",
"bott.md"
"bott.md",
"schubert2.md"
],
]
37 changes: 8 additions & 29 deletions experimental/IntersectionTheory/docs/src/AbstractBundles.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ DocTestSetup = Oscar.doctestsetup()

# Abstract bundles

An *abstract bundle* on an abstract variety $X$ is determined by its rank and its Chern character
(or, equivalently, its total Chern class). Abstract bundles support the standard operations on vector bundles
in algebraic geometry: direct sum, tensor product, duals, determinant bundles, exterior and symmetric powers,
as well as pullback and pushforward along abstract variety maps.
An *abstract bundle* on an abstract variety $X$ is determined by its Chern character (or, equivalently, by its rank and total Chern class).
Abstract bundles support the standard operations on vector bundles in algebraic geometry: direct sum, tensor product, duals,
determinant bundles, exterior and symmetric powers, as well as pullback and pushforward along abstract variety maps.
They also carry the usual characteristic classes: Chern classes, Segre classes, Todd class, and Pontryagin classes.

The arithmetic operations `+`, `-`, `*` on abstract bundles correspond to direct sum, formal difference,
Expand All @@ -20,11 +19,12 @@ direct sum of `n` copies.

Abstract bundles live in the Grothendieck ring $\mathrm{K}^0(X)$ of vector bundles on $X$.
In this ring, every element can be written as a formal difference $[E] - [F]$ of genuine
bundles. The Chern character $\mathrm{ch}\colon\mathrm{K}^0(X) \to \mathrm{N}^*(X)_{\mathbb Q}$ is
a ring homomorphism that identifies the Grothendieck ring (after tensoring with $\mathbb Q$)
with the Chow ring.
bundles. After tensoring with $\mathbb Q$, by Grothendieck--Riemann--Roch, the
Chern character $\mathrm{ch}$ defines a ring isomorphism of the Grothendieck ring onto
the Chow ring if we use rational equivalence, and hence at least an epimorphism if we use
numerical equivalence (as we do here).

In OSCAR, an `AbstractBundle` is stored as a pair (rank, Chern character), so virtual bundles
In OSCAR, an `AbstractBundle` is determined by its Chern character, so virtual bundles
with zero (and negative) rank are fully supported:

```jldoctest
Expand Down Expand Up @@ -144,27 +144,6 @@ true

```

### Euler characteristics of line bundles on $\mathbb P^n$

The Euler characteristic $\chi(\mathcal{O}_{\mathbb P^n}(d)) = \binom{n+d}{n}$
can be computed directly:

```jldoctest
julia> P3 = abstract_projective_space(3);

julia> [euler_characteristic(OO(P3, d)) for d in -2:5]
8-element Vector{QQFieldElem}:
0
0
1
4
10
20
35
56

```

```@docs
dual(F::AbstractBundle)
```
Expand Down
47 changes: 35 additions & 12 deletions experimental/IntersectionTheory/docs/src/AbstractVarieties.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,39 @@ DocTestSetup = Oscar.doctestsetup()

# Abstract varieties

An *abstract variety* $X$ of dimension $n$ is determined by its numerical Chow ring
$\mathrm{N}^*(X)_{\mathbb Q}$, together with an integration map (degree map)
$\int_X\colon \mathrm{N}^n(X)_{\mathbb Q}\to \mathbb Q$. It may additionally carry
a tangent bundle, a polarization, tautological bundles, and a structure map to a base variety.
An *abstract variety* $X$ of dimension $n$ is determined by its (numerical) Chow ring
$\mathrm{N}^*(X)_{\mathbb Q} = \bigoplus^n_{c=0}\mathrm{N}^c(X)_{\mathbb Q}$,
together with an integration map (degree map) $\int_X\colon \mathrm{N}^n(X)_{\mathbb Q}\to \mathbb Q$.

Each Chow ring $\mathrm{N}^*(X)_{\mathbb Q}$ is given by finitely many generators and relations.
That is, it is implemented as the quotient of a $\mathbb Z$-graded multivariate polynomial ring
over $\mathbb Q$ modulo a homogeneous ideal. It has Krull dimension zero and is, thus, a
finite-dimensional $\mathbb Q$-vector space. The Betti numbers
$\beta_c(X) = \dim_{\mathbb Q} \mathrm{N}^c(X)_{\mathbb Q}$
satisfy the relations $\beta_c(X) = \beta_{n-c}(X)$ for each $c$. In particular,
Comment thread
wdecker marked this conversation as resolved.
$\beta_n = \beta_0 = 1$.

To specify an integration map means to specify a point class, that is, a (unique) degree-$n$ element
of the Chow ring that integrates to one. Additionally, an abstract variety may carry a tangent bundle, a
polarization, tautological bundles, and a structure map to a base variety. See the setter
functions in section [Some particular constructions](@ref).

Abstract varieties can be constructed either from scratch by specifying a graded ring
and integration map, or via specialized constructors for standard algebraic-geometric
as above and a point class, or via specialized constructors for standard algebraic-geometric
objects such as projective spaces, Grassmannians, flag varieties, complete intersections,
and projective bundles.

!!! warning
Recall from the introduction to this chapter that in many cases, there is no algorithm for
computing all generators of the Chow ring (see [Example: Cubic surfaces](@ref)). In addition note
that the constructor `abstract_variety` discussed below gives the expert user some freedom
when constructing an object of type `AbstractVariety`. It allows one, for example, to start from
the underlying graded polynomial ring of the Chow ring, and add its defining relations step by step.
In fact, not all applications require that we specify all relations. Thus, even in some truly meaningful
geometric cases, the symmetry condition on the Betti numbers may not be fulfilled for the implemented
ring. See section [Some Particular Constructions](@ref) for an example where the top-dimensional part
of the constructed ring is more than 1-dimensional.

## Types

The OSCAR type for abstract varieties is `AbstractVariety`.
Expand All @@ -41,7 +64,7 @@ abstract_curve(g::IntegerUnion; base::Ring = QQ)
The concept of flag bundles provides fundamental classifying spaces in enumerative geometry.
In Oscar, abstract flag bundles are constructed using the function `flag_bundle` which, in particular,
allows one to implement abstract projective spaces, Grassmannians, flag varieties, and projective bundles.
In addition, there are specialized constructors for the latter varieties which may or may not rely on
In addition, there are specialized constructors for the latter varieties some of which rely on
different recipes for representing Chow rings in terms of generators and relations.

```@docs
Expand Down Expand Up @@ -202,22 +225,22 @@ product(X::AbstractVariety, Y::AbstractVariety)
```

!!! note
Blow-Ups are described in their own section.
[Blow-Ups](@ref) are described in their own section.

## Integrating Chow ring elements

```@julia
integral(c::Union{MPolyDecRingElem, MPolyQuoRingElem})
```

Given an element `c` of the Chow ring of an abstract variety, return the integral of `c`.
Given an element `c` of the Chow ring of an abstract variety, say, `X`, return the integral of `c`.

!!! note
If the abstract variety has been given a (unique) point class,
If `X` has been given a point class, and the top Betti number of `X` is 1,
then the integral will be an element of the coefficient ring of the Chow ring.
That is, typically, in the applications we discuss here, it will be a rational number (the degree of the 0-dimensional part
of `c`) or an element of a function field of type $\mathbb Q(t_1, \dots, t_r)$. If one of the conditions is not fulfilled, the 0-dimensional
part of `c` is returned.
That is, in the applications we discuss here, it will be a rational number (the degree of the 0-dimensional part
of `c`) or an element of a function field of type $\mathbb Q(t_1, \dots, t_r)$. If not both conditions on `X` are
fulfilled, the 0-dimensional part of `c` will be returned.


###### Examples
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ extend_inclusion(i::AbstractVarietyMap; symbol::String = "e")
identity_map(X::AbstractVariety)
```

```@docs
map(X::AbstractVariety, Y::AbstractVariety)
```

## Underlying data of an abstract variety map

An abstract variety map is made up from (a selection of) the data discussed here:
Expand Down
44 changes: 0 additions & 44 deletions experimental/IntersectionTheory/docs/src/blowups.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,6 @@ blowup(i::AbstractVarietyMap; symbol::String = "e")
blowup_points(X::AbstractVariety, n::Int; symbol::String = "e")
```

## The Chow ring of a blow-up

Let $\widetilde{X}$ be the blow-up of $X$ along $Z$ with exceptional divisor $E$.
The Chow ring $\mathrm{N}^*(\widetilde{X})$ is generated as an $\mathrm{N}^*(X)$-algebra
by the class $e = [E]$ of the exceptional divisor, subject to the relation

$$\sum_{k=0}^{r} (-1)^k c_k(N_{Z/X})\, e^{r-k} = 0$$

where $r$ is the codimension of $Z$ in $X$, together with the multiplication rule
$j_*(x) \cdot j_*(y) = -j_*(x \cdot y \cdot \zeta)$ for classes on $E$
(see [EH16](@cite), Proposition 13.12).

## Worked examples

### Blow-up of the Veronese surface
Expand Down Expand Up @@ -119,35 +107,3 @@ julia> integral(quad^2 * cubic) # residual intersection

```

### Blow-up of $\mathbb P^2 \times \mathbb P^2$ (Segre embedding)

Blow up $\mathbb P^8$ along the Segre image of $\mathbb P^2 \times \mathbb P^2$.
We verify the Betti numbers of the resulting variety:

```jldoctest
julia> P2xP2 = abstract_projective_space(2, symbol = "k") * abstract_projective_space(2, symbol = "l");

julia> P8 = abstract_projective_space(8);

julia> k, l = gens(P2xP2);

julia> Se = map(P2xP2, P8, [k + l]);

julia> Bl, E, j = blowup(Se);

julia> betti_numbers(Bl)
9-element Vector{Int64}:
1
2
4
7
8
7
4
2
1

julia> euler_number(Bl)
36

```
8 changes: 7 additions & 1 deletion experimental/IntersectionTheory/docs/src/constructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ julia> basis(S)
[c2, c1^2, h*c1, h^2]
```

A priori, it looks like there are too many generators for the top degree of our surface:
A priori, it looks like there are too many generators for the top degree part of the Chow ring:
we expect there to be a unique point class, but there are 4 basis elements in that degree.
The reason is that `h`, `c1`, and `c2` are completely formal variables,
and we have not specified their relationship.
Expand Down Expand Up @@ -198,6 +198,12 @@ julia> ct = top_chern_class(-j.T)
julia> Y = codomain(j)
AbstractVariety of dim 4

julia> pi = structure_map(Y)
AbstractVarietyMap from AbstractVariety of dim 4 to AbstractVariety of dim 4

julia> codomain(pi) == X
true

julia> basis(Y)
5-element Vector{Vector{MPolyQuoRingElem}}:
[1]
Expand Down
47 changes: 24 additions & 23 deletions experimental/IntersectionTheory/docs/src/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ A *subvariety* of a variety $X$ is an irreducible algebraic subset of $X$. We wi
- present OSCAR tools which support computations in the intersection theory of varieties, and
- give examples which illustrate how intersection theory is used to solve problems from enumerative geometry.

The starting point for developing the `Schubert` package was the problem of enumerating twisted cubic curves
on a general quintic hypersurface in $\mathbb P^4$, see [ES02](@cite). We quote from that paper:
The first package for doing intersection theory on the computer was the `Maple` package `Schubert` written
by Sheldon Katz and Stein A. Strømme. The starting point for developing `Schubert` was the problem of enumerating
twisted cubic curves on a general quintic hypersurface in $\mathbb P^4$, see [ES02](@cite). We quote from that paper:

> One way to approach enumerative problems is to find a suitable complete parameter space for the objects that one wants to count, and express the locus of objects satisfying given conditions as a certain zero-cycle on the parameter space. For this method to yield an explicit numerical answer, one needs in particular to be able to evaluate the degree of a given zerodimensional cycle class. This is possible in principle whenever the numerical intersection ring (cycles modulo numerical equivalence) of the parameter space is known, say in terms of generators and relations.

Expand Down Expand Up @@ -44,7 +45,7 @@ Since we grade by codimension, the degree-0 part of an intersection ring consist
$\dim(X)$. Note that this part is isomorphic to $\mathbb Z$: It is generated by the class of $X$ in $\mathrm{C}_{\sim}^\ast(X)$,
the *fundamental class* of $X$ with respect to $\sim$ (recall that we assume that $X$ is irreducible).

On the other hand, the degree-$n$ part of an intersection ring consists of classes of 0-cycles, that is, cycles of dimension zero.
On the other hand, the part of an intersection ring of degree $\dim(X)$ consists of classes of 0-cycles, that is, cycles of dimension zero.
We have a well-defined *degree homomorphism*, or *integral*,

$\deg =\int_X : \mathrm{C}_{\sim}^{\dim(X)}(X) \rightarrow \mathbb Z$
Expand All @@ -65,42 +66,42 @@ To be unaffected by such problems, we follow the authors of `Schubert` and work
coarsest adequate equivalence relation. That is, we only care about the intersection numbers with respect to classes
in complementary codimension. This is enough for handling most enumerative problems, with the additional benefit
that we often can compute the pushforward of a cycle class along a morphism $f$ of varieties when only the pullback
homomorphism $ f^\ast$ is known (see [Abstract variety maps](@ref)).
We will write $\mathrm{N}^\ast(X)$ for the numerical intersection ring, or numerical Chow ring, of $X$.
homomorphism $ f^\ast$ is known (see [Abstract variety maps](@ref)). We will write $\mathrm{N}^\ast(X)$ for the
numerical intersection ring. In our implementation of these rings, we actually work with rational
coefficients when forming cycles. That is, given $X$, we consider the ring

!!! note
In this chapter, we abuse our notation in that the name *Chow ring* always refers to a ring of type $\mathrm{N}^\ast(X)_{\mathbb Q}$.

In our implementation of numerical intersection rings, we actually work with rational coefficients when forming cycles.
That is, given $X$, we consider the ring
$\mathrm{N}^\ast(X)_{\mathbb Q} = \mathrm{N}^\ast(X) \otimes_{\mathbb Z} {\mathbb Q} = \bigoplus^{\dim(X)}_{c=0}\mathrm{N}^c(X)_{\mathbb Q}.$

$\mathrm{N}^\ast(X)_{\mathbb Q} = \mathrm{N}^\ast(X) \otimes_{\mathbb Z} {\mathbb Q} = \bigoplus^{\dim(X)}_{c=0}\mathrm{N}^c(X)_{\mathbb Q}$
Notions such as integral or intersection pairing extend to this situation.

and extend notions such as integral or intersection pairing to this situation. The graded pieces $\mathrm{N}^c(X)_{\mathbb Q}$ are
then finite-dimensional $\mathbb Q$-vector spaces, their dimensions $\beta_c(X) = \dim\mathrm{N}^c(X)_{\mathbb Q}$ are
called the *Betti numbers* of $X$. Note, however, that they do not necessarily agree with the topologically defined Betti numbers,
because the numerical intersection ring can at most see the algebraic part of the cohomology.
!!! note
In this chapter, we abuse our notation in that the name *Chow ring* always refers to a ring of type $\mathrm{N}^\ast(X)_{\mathbb Q}$.

!!! warning
In many cases, there is no algorithm for computing the entire Chow ring: We will only be able to obtain information on a
certain subring generated by some tautological classes. We are then actually working with the class of all varieties sharing
the same piece of tautological ring (and, possibly, further data). We illustrate this in [Example: Cubic surfaces](@ref).
The graded pieces $\mathrm{N}^c(X)_{\mathbb Q}$ are finite-dimensional $\mathbb Q$-vector spaces, their dimensions
$\beta_c(X) = \dim\mathrm{N}^c(X)_{\mathbb Q}$ are called the *Betti numbers* of $X$. Note, however, that they do not
necessarily agree with the topologically defined Betti numbers, because the numerical intersection ring can at most see the
algebraic part of the cohomology.

Since the intersection pairings

$\mathrm{N}^c(X)_{\mathbb Q}\times\mathrm{N}^{\dim(X)-c}(X)_{\mathbb Q}\rightarrow\mathrm{N}^{\dim(X)}(X)_{\mathbb Q} \overset{\deg}\longrightarrow \mathbb Q$

are non-degenerate by the very definition of numerical equivalence, we have $\beta_c(X) = \beta_{\dim(X)-c}(X)$ for each $c$.
In particular, $\mathrm{N}^0(X)_{\mathbb Q}$ and $\mathrm{N}^{\dim(X)}_{\mathbb Q} $ are both 1-dimensional $\mathbb Q$-vector spaces,
In particular, $\mathrm{N}^0(X)_{\mathbb Q}$ and $\mathrm{N}^{\dim(X)}(X)_{\mathbb Q} $ are both 1-dimensional $\mathbb Q$-vector spaces,
generated by the fundamental class $[X]$ and the class of a point (the unique class that integrates to 1), respectively.

!!! warning
In many cases, there is no algorithm for computing the entire Chow ring: We will only be able to obtain information on a
certain subring generated by some tautological classes. We illustrate this in [Example: Cubic surfaces](@ref).

For some nice varieties, however, numerical equivalence coincides with rational equivalence. For such a variety $X$, the Chow ring
coincides with the rational cohomology ring and can be completely computed, so problems as above disappear.
A nice consequence is that the Betti numbers of $X$ introduced above are exactly the (even) Betti numbers
of $X$ considered as a compact complex manifold, so we have an equality `sum(betti_numbers(X)) == euler_number(X)`.
The class of such varieties $X$ includes projective spaces, Grassmannians, homogeneous spaces for affine algebraic
groups (for example, flag varieties), and in general any variety with an affine stratification. Moreover, products,
projective bundles, flag bundles, and blowups with center in this class will remain in this class. As Eisenbud and Harris
groups (for example, flag varieties), and in general any variety with an affine stratification. Moreover, products of two
varieties in the class, projective bundles and, more generally, flag bundles over varieties in the class, and blowups of
varieties in the class with centers in the class will remain in the class. As Eisenbud and Harris
[EH16](@cite) put it:

> This class represents a tiny fraction of all varieties,
Expand Down Expand Up @@ -155,7 +156,7 @@ being virtual.
Some functionalities from [the `sage` library] `Schubert3` are also implemented."
The authors of `Schubert2` are Daniel R. Grayson, Michael E. Stillman, Stein A. Strømme, David Eisenbud, and Charley Crissman,
while `Chow` is due to Manfred Lehn and Christoph Sorger. `Schubert3` as well as the `Singular` library `schubert.lib` is due
to Dang Tuan Hiep. All this work, including ours, is inspired by the `Maple` package `Schubert` written
to Dang Tuan Hiep. All this work, including ours, is inspired by the aforementioned `Maple` package `Schubert` written
by Sheldon Katz and Stein A. Strømme.

## References
Expand Down
3 changes: 2 additions & 1 deletion experimental/IntersectionTheory/docs/src/schubert2.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ julia> integral(top_chern_class(B))
27
```

More generally, `linear_subspaces_on_hypersurface(1, d)` counts lines on a
In OSCAR, we have more generally the function `linear_subspaces_on_hypersurface(1, d)`
which is based on localization and Bott's formula. It counts the lines on a
degree-$d$ hypersurface in $\mathbb{P}^n$ where $n = (d+3)/2$:

```jldoctest
Expand Down
Loading
Loading