Schubert Calculus

To recall the definition of Schubert cycles on a Grassmannian $\mathrm{G}(k,n)$, we think of $\mathrm{G}(k, n)$ as the Grassmannian $\mathrm{G}(k, W)$ of $k$-dimensional subspaces of an $n$-dimensional $K$-vector space $W$.

A flag in $W$ is a strictly increasing sequence of linear subspaces

\[\{0\} \subset W_1 \subset \dots \subset W_{n-1} \subset W_n = W, \; \text{ with }\; \dim(W_i) = i.\]

Let such a flag $\mathcal{W}$ be given. For any sequence $a = (a_1, \ldots, a_k)$ of integers with $n-k \geq a_1 \geq \ldots \geq a_k \geq 0$, we define the Schubert cycle $\Sigma_a(\mathcal{W})$ by setting

\[\Sigma_a(\mathcal{W}):= \{ V \in \mathrm{G}(k, W)\mid \dim(W_{n-k+i-a_i} \cap V) \geq i, i = 1, \ldots, k \} \,.\]

Then we have:

  • The Schubert cycle $\Sigma_a(\mathcal{W})$ is an irreducible subvariety of $\mathrm{G}(k, W)$ of codimension $|a| = \sum a_i$.
  • Its cycle class $[\Sigma_a(\mathcal{W})]$ does not depend on the choice of the flag.

We define the Schubert class of $a = (a_1, \ldots, a_k)$ to be the cycle class

\[\sigma_a := [\Sigma_a(\mathcal{W})] \,.\]

The number of Schubert classes on the Grassmannian $\mathrm{G}(k, n)$ is equal to $\binom{n}{k}$.

Instead of $\sigma_a$, we write $\sigma_{a_1,\ldots,a_s}$ whenever $a = (a_1, \ldots, a_s, 0, \ldots, 0)$, and $\sigma_{p^i}$ whenever $a = (p, \ldots, p, 0, \ldots, 0) \in \mathbb Z^i \times \{0\}^{k-i}$.

The classes $\sigma_{1^i}$, $i = 1, \ldots, k$, and $\sigma_i$, $i = 1, \ldots, n-k$, are called special Schubert classes. They are closely related to the Chern classes of the tautological vector bundles on $\mathrm{G}(k, W)$. Recall:

  • The tautological subbundle on $\mathrm{G}(k, W)$ is the vector bundle of rank $k$ whose fiber at $V \in \mathrm{G}(k, W)$ is the subspace $V \subset W$.
  • The tautological quotient bundle on $\mathrm{G}(k, W)$ is the vector bundle of rank $(n-k)$ whose fiber at $V \in \mathrm{G}(k, W)$ is the quotient vector space $W/V$.

We denote these vector bundles by $S$ and $Q$, respectively.

The Chern classes of $S$ and $Q$ are

\[c_i(S) = (-1)^i \sigma_{1^i} \; \text{ for } \; i = 1, \ldots, k\]

and

\[c_i(Q) = \sigma_i \; \text{ for }\; i = 1, \ldots, n-k,\]

respectively.

All Schubert classes form a $K$-vector space basis of the Chow ring of $\mathrm{G}(k,n)$. The Chern classes of $S$ (the special Schubert classes $\sigma_{1^i}$, $i=1, \ldots, k$) form a minimal set of generators for the Chow ring of $\mathrm{G}(k,n)$ as a $K$-algebra. See [EH16] for the relations on these generators.

schubert_classMethod
schubert_class(G::AbstractVariety, λ::Int...)
schubert_class(G::AbstractVariety, λ::Vector{Int})
schubert_class(G::AbstractVariety, λ::Partition)

Return the Schubert class $\sigma_\lambda$ on a (relative) Grassmannian G.

Examples

julia> G = abstract_grassmannian(2,4)
AbstractVariety of dim 4

julia> s0 = schubert_class(G, 0)
1

julia> s1 = schubert_class(G, 1)
-c[1]

julia> s2 = schubert_class(G, 2)
c[1]^2 - c[2]

julia> s11 = schubert_class(G, [1, 1])
c[2]

julia> s21 = schubert_class(G, [2, 1])
-c[1]*c[2]

julia> s22 = schubert_class(G, [2, 2])
c[2]^2

julia> s1*s1 == s2+s11
true

julia> s1*s2 == s1*s11 == s21
true

julia> s1*s21 == s2*s2 == s22
true
julia> G = abstract_grassmannian(2,5)
AbstractVariety of dim 6

julia> s3 = schubert_class(G, 5-2)
-c[1]^3 + 2*c[1]*c[2]

julia> s3^2 == point_class(G)
true

julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 3 on AbstractVariety of dim 6

julia> chern_class(Q, 3)
-c[1]^3 + 2*c[1]*c[2]
julia> G = abstract_grassmannian(2,4)
AbstractVariety of dim 4

julia> s1 = schubert_class(G, 1)
-c[1]

julia> s1 == schubert_class(G, [1, 0])
true

julia> integral(s1^4)
2
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
schubert_classesMethod
schubert_classes(G::AbstractVariety, m::Int)

Return all Schubert classes in codimension m on a (relative) Grassmannian G.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
schubert_classesMethod
schubert_classes(G::AbstractVariety)

Return all Schubert classes on a (relative) Grassmannian G.

Examples

julia> G = abstract_grassmannian(2,4)
AbstractVariety of dim 4

julia> schubert_classes(G)
5-element Vector{Vector{MPolyQuoRingElem{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}}:
 [1]
 [-c[1]]
 [c[1]^2 - c[2], c[2]]
 [-c[1]*c[2]]
 [c[2]^2]

julia> basis(G)
5-element Vector{Vector{MPolyQuoRingElem}}:
 [1]
 [c[1]]
 [c[2], c[1]^2]
 [c[1]*c[2]]
 [c[2]^2]
 
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source