- Usage:
`Chern I``Chern(A,I)``Chern(X,J)``Chern(Ch,X,J)`

- Inputs:
`I`, an ideal, a multi-homogeneous ideal in a graded polynomial ring over a field defining a closed subscheme V of ℙ^{n1}x...xℙ^{nm}`A`, a quotient ring, A=ℤ[h_{1},...,h_{m}]/(h_{1}^{n1+1},...,h_{m}^{nm+1}) quotient ring representing the Chow ring of ℙ^{n1}x...xℙ^{nm}, this ring should be built using the ChowRing command`J`, an ideal, in the graded polynomial ring which is coordinate ring of the Normal Toric Variety X`X`, a normal toric variety, which is the ambient space that we are working in`Ch`, a quotient ring, the Chow ring of the toric variety X, Ch=(ring J)/(SR+LR) where SR is the Stanley-Reisner ideal of the fan defining X and LR is the linear relations ideal, this ring should be built using the ToricChowRing command

- Optional inputs:
`CompMethod =>``ProjectiveDegree`, default value ProjectiveDegree, this algorithm may be used for subschemes of any applicable toric variety (this may be checked using the CheckToricVarietyValid command)`CompMethod =>``PnResidual`, default value ProjectiveDegree, this algorithm may be used for subschemes of ℙ^{n}only, see CompMethod`Output =>``ChowRingElement`, default value ChowRingElement, returns a RingElement in the Chow ring of the appropriate ambient space`Output =>``HashForm`, default value ChowRingElement, returns a MutableHashTable containing the following keys: "Chern" (the Total Chern class),"G" (the polynomial with coefficients of the hyperplane classes representing the projective degrees), "Glist" (the list form of "G") , "Segre" (the total Segre class of the input),"SegreList" (the list form of "Segre") , "CF" (the total Chern-Fulton class)

- Outputs:
- a ring element, the pushforward of the total Chern class of the input to the Chow ring of the appropriate ambient space

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 h_{1},...,h_{m} 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 c_{1} = 2-2g = 2 and deg c_{0} = 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 c_{CF}(V) = c(T_{X}|_{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.

- Chern(Ideal)
- Chern(Ideal,Symbol)
- Chern(QuotientRing,Ideal)