next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Book3264Examples > Intersection Theory Section 5.2

Intersection Theory Section 5.2 -- Basics of vector bundles and Chern classes

In Schubert2, a vector bundle (or more generally, an AbstractSheaf) is given by two pieces of data: its Chern classes and its rank. Schubert2 has many built-in bundles for common varieties. For example, a Grassmannian G comes with its universal subbundle and quotient bundle stored in G.Bundles:

i1 : G = flagBundle({2,3})

o1 = G

o1 : a flag bundle with subquotient ranks {2..3}
i2 : (S,Q) = G.Bundles

o2 = (S, Q)

o2 : Sequence
i3 : S

o3 = S

o3 : an abstract sheaf of rank 2 on G
i4 : Q

o4 = Q

o4 : an abstract sheaf of rank 3 on G

The Chern classes of a vector bundle are accessed using the chern command:

i5 : chern(1,Q) -- The first Chern class of Q

o5 = H
      2,1

                                            QQ[][H   ..H   , H   ..H   ]
                                                  1,1   1,2   2,1   2,3
o5 : ---------------------------------------------------------------------------------------------------------
     (- H    - H   , - H    - H   H    - H   , - H   H    - H   H    - H   , - H   H    - H   H   , -H   H   )
         1,1    2,1     1,2    1,1 2,1    2,2     1,2 2,1    1,1 2,2    2,3     1,2 2,2    1,1 2,3    1,2 2,3
i6 : chern Q -- The total Chern class of Q, defined as the sum of the Chern classes of Q.

o6 = 1 + H    + H    + H
          2,1    2,2    2,3

                                            QQ[][H   ..H   , H   ..H   ]
                                                  1,1   1,2   2,1   2,3
o6 : ---------------------------------------------------------------------------------------------------------
     (- H    - H   , - H    - H   H    - H   , - H   H    - H   H    - H   , - H   H    - H   H   , -H   H   )
         1,1    2,1     1,2    1,1 2,1    2,2     1,2 2,1    1,1 2,2    2,3     1,2 2,2    1,1 2,3    1,2 2,3

If we want to specify a bundle directly by its Chern classes, we can use the abstractSheaf command:

i7 : Q = abstractSheaf(G,ChernClass=>1+H_(2,1)+H_(2,2)+H_(2,3),Rank=>3)

o7 = Q

o7 : an abstract sheaf of rank 3 on G
i8 : chern Q

o8 = 1 + H    + H    + H
          2,1    2,2    2,3

                                            QQ[][H   ..H   , H   ..H   ]
                                                  1,1   1,2   2,1   2,3
o8 : ---------------------------------------------------------------------------------------------------------
     (- H    - H   , - H    - H   H    - H   , - H   H    - H   H    - H   , - H   H    - H   H   , -H   H   )
         1,1    2,1     1,2    1,1 2,1    2,2     1,2 2,1    1,1 2,2    2,3     1,2 2,2    1,1 2,3    1,2 2,3