next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
CharacteristicClasses :: Chern

Chern -- The Chern class

Synopsis

Description

For a non-singular n-dimensional subscheme V of an applicable toric variety X, this command computes the push-forward of the total Chern class of V to the Chow ring of X. The output is an element of the Chow ring of X, that is a polynomial in the hyperplane classes h1,...,hm if X=ℙn1×... ×ℙnm is a product of projective space. Otherwise it is a polynomial in R/(SR+LR) where R is the Cox ring, SR the Stanely-Reilser Ideal and LR the ideal generated by linear relations among the rays.

i1 : setRandomSeed 438;
i2 : R = QQ[v,y,z,w]

o2 = R

o2 : PolynomialRing
i3 : B = matrix{{v,y,z},{y,z,w}}

o3 = | v y z |
     | y z w |

             2       3
o3 : Matrix R  <--- R
i4 : Chern minors(2,B)

       3     2
o4 = 2h  + 3h
       1     1

     ZZ[h ]
         1
o4 : ------
        4
       h
        1
i5 : Chern(minors(2,B),CompMethod=>PnResidual)

       3     2
o5 = 2H  + 3H

     ZZ[H]
o5 : -----
        4
       H

The 2x2-minors of the matrix A form the ideal of the twisted cubic. It is well-known that its degree is 3 and its genus is 0. The calculations confirm that deg c1 = 2-2g = 2 and deg c0 = 3. It is also possible to input the Chow ring of ℙ3 so that the answers are returned in this ring allowing us to check equality:

i6 : A=ChowRing(R)

o6 = A

o6 : QuotientRing
i7 : c1=Chern(A, minors(2,B))

       3     2
o7 = 2h  + 3h
       1     1

o7 : A
i8 : cHash=Chern(A,minors(2,B),Output=>HashForm)

o8 = MutableHashTable{...6...}

o8 : MutableHashTable
i9 : peek cHash

                                            2      3
o9 = MutableHashTable{SegreList => {0, 0, 3h , -10h }}
                                            1      1
                                         2
                      Glist => {1, 2h , h , 0}
                                     1   1
                                    3     2
                      Segre => - 10h  + 3h
                                    1     1
                                 3     2
                      Chern => 2h  + 3h
                                 1     1
                              3     2
                      CF => 2h  + 3h
                              1     1
                            2
                      G => h  + 2h  + 1
                            1     1
i10 : c1==cHash#"Chern"

o10 = true

Now consider an example in ℙ2 ×ℙ2, if we input the Chow ring A the output will be returned in the same ring. We may also return a MutableHashTable.

i11 : R=MultiProjCoordRing({2,2})

o11 = R

o11 : PolynomialRing
i12 : r=gens R

o12 = {x , x , x , x , x , x }
        0   1   2   3   4   5

o12 : List
i13 : I=ideal(r_0^2*r_3-r_4*r_1*r_2,r_2^2*r_5)

              2              2
o13 = ideal (x x  - x x x , x x )
              0 3    1 2 4   2 5

o13 : Ideal of R
i14 : Chern I

         2 2       2     2            2
o14 = 15h h  + 3h h  + 4h  + 4h h  + h
         1 2     1 2     1     1 2    2

      ZZ[h , h ]
          1   2
o14 : ----------
         3   3
       (h , h )
         1   2

In the case where the ambient space is a toric variety which is not a product of projective spaces we must load the NormalToricVarieites package and must also input the toric variety. If the toric variety is a product of projective space it is recommended to use the form above rather than inputting the toric variety for efficiency reasons. Below we verify that the Chern-Fulton class equals the Chern class for this smooth subvariety.

i15 : needsPackage "NormalToricVarieties"

o15 = NormalToricVarieties

o15 : Package
i16 : Rho = {{1,0,0},{0,1,0},{0,0,1},{-1,-1,0},{0,0,-1}}

o16 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {-1, -1, 0}, {0, 0, -1}}

o16 : List
i17 : Sigma = {{0,1,2},{1,2,3},{0,2,3},{0,1,4},{1,3,4},{0,3,4}}

o17 = {{0, 1, 2}, {1, 2, 3}, {0, 2, 3}, {0, 1, 4}, {1, 3, 4}, {0, 3, 4}}

o17 : List
i18 : X = normalToricVariety(Rho,Sigma,CoefficientRing =>ZZ/32749)

o18 = normalToricVariety((({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {-1, -1, 0}, {0, 0, -1}}(,({{0, 1, 2}, {0, 1, 4}, {0, 2, 3}, {0, 3, 4}, {1, 2, 3}, {1, 3, 4}} )))))

o18 : NormalToricVariety
i19 : CheckToricVarietyValid(X)

o19 = true
i20 : R=ring(X)

o20 = R

o20 : PolynomialRing
i21 : I=ideal(R_0^4*R_1,R_0*R_3*R_4*R_2-R_2^2*R_0^2)

              4       2 2
o21 = ideal (x x , - x x  + x x x x )
              0 1     0 2    0 2 3 4

o21 : Ideal of R
i22 : Chern(X,I)

           2       2
o22 = - 36x x  + 6x  + 10x x  + x
           3 4     3      3 4    3

                ZZ[x , x , x , x , x ]
                    0   1   2   3   4
o22 : -----------------------------------------
      (x x , x x x , x  - x , x  - x , x  - x )
        2 4   0 1 3   0    3   1    3   2    4
i23 : Ch=ToricChowRing(X)

o23 = Ch

o23 : QuotientRing
i24 : s3=Chern(Ch,X,I)

           2       2
o24 = - 36x x  + 6x  + 10x x  + x
           3 4     3      3 4    3

o24 : Ch
i25 : s3==(product(gens(Ch),a->a+1)*Segre(Ch,X,I))

o25 = true

All the examples were done using symbolic computations with Gröbner bases. Changing the option CompMethod to bertini will do the main computations numerically, provided Bertini is installed and configured. Note that the bertini and PnResidual options may only be used for subschemes of ℙn.

The command Chern actually computes the push-forward of the total Chern-Fulton class of the subscheme V of an applicable toric variety X. The Chern-Fulton class is one of several generalizations of Chern classes to possibly singular subschemes. It is defined as cCF(V) = c(TX|V) ∩s(V,X). For non-singular schemes, the Chern-Fulton class coincides with the Chern class of the tangent bundle. So for non-singular input, the command will compute just the usual Chern class.

Observe that the algorithm is a probabilistic algorithm and may give a wrong answer with a small but nonzero probability. Read more under probabilistic algorithm.

Ways to use Chern :