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 = X 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.