# Segre -- The Segre class of a subscheme

## Synopsis

• Usage:
Segre I
Segre(A,I)
Segre(X,J)
Segre(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 \PP^{n_1}x...x\PP^{n_m}
• A, , A=\ZZ[h_1,...,h_m]/(h_1^{n_1+1},...,h_m^{n_m+1}) quotient ring representing the Chow ring of \PP^{n_1}x...x\PP^{n_m}, 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, , which is the ambient space which contains V(J)
• Ch, , 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 (missing documentation) => ..., default value ProjectiveDegree, ProjectiveDegree, this algorithm may be used for subschemes of any applicable toric variety (this may be checked using the CheckToricVarietyValid command)
• CompMethod (missing documentation) => ..., default value ProjectiveDegree, PnResidual, this algorithm may be used for subschemes of \PP^n only
• Output => ..., default value ChowRingElement, ChowRingElement, returns a RingElement in the Chow ring of the appropriate ambient space
• Output => ..., default value ChowRingElement, HashForm, HashForm returns a MutableHashTable containing the following keys: "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")
• Outputs:
• , the pushforward of the total Segre class of the scheme V defined by the input ideal to the appropriate Chow ring

## Description

For a subscheme V of an applicable toric variety X this command computes the push-forward of the total Segre class s(V,X) of V in X to the Chow ring of X.

 i1 : setRandomSeed 72; i2 : R = ZZ/32749[w,y,z] o2 = R o2 : PolynomialRing i3 : Segre(ideal(w*y),CompMethod=>PnResidual) 2 o3 = - 4H + 2H ZZ[H] o3 : ----- 3 H i4 : A=ChowRing(R) o4 = A o4 : QuotientRing i5 : Segre(A,ideal(w^2*y,w*y^2)) 2 o5 = - 3h + 2h 1 1 o5 : A

Now consider an example in \PP^2 \times \PP^2, if we input the Chow ring A the output will be returned in the same ring. To ensure proper function of the methods we build the Chow ring using the ChowRing command. We may also return a MutableHashTable.

 i6 : R=MultiProjCoordRing({2,2}) o6 = R o6 : PolynomialRing i7 : r=gens R o7 = {x , x , x , x , x , x } 0 1 2 3 4 5 o7 : List i8 : A=ChowRing(R) o8 = A o8 : QuotientRing i9 : I=ideal(r_0^2*r_3-r_4*r_1*r_2,r_2^2*r_5) 2 2 o9 = ideal (x x - x x x , x x ) 0 3 1 2 4 2 5 o9 : Ideal of R i10 : Segre I 2 2 2 2 2 2 o10 = 72h h - 24h h - 12h h + 4h + 4h h + h 1 2 1 2 1 2 1 1 2 2 ZZ[h ..h ] 1 2 o10 : ---------- 3 3 (h , h ) 1 2 i11 : s1=Segre(A,I) 2 2 2 2 2 2 o11 = 72h h - 24h h - 12h h + 4h + 4h h + h 1 2 1 2 1 2 1 1 2 2 o11 : A i12 : SegHash=Segre(A,I,Output=>HashForm) o12 = MutableHashTable{...4...} o12 : MutableHashTable i13 : peek SegHash o13 = MutableHashTable{G => 2h + h + 1 } 1 2 Glist => {1, 2h + h , 0, 0, 0} 1 2 2 2 2 2 2 2 SegreList => {0, 0, 4h + 4h h + h , - 24h h - 12h h , 72h h } 1 1 2 2 1 2 1 2 1 2 2 2 2 2 2 2 Segre => 72h h - 24h h - 12h h + 4h + 4h h + h 1 2 1 2 1 2 1 1 2 2 i14 : s1==SegHash#"Segre" o14 = true

In the case where the ambient space is a toric variety which is not a product of projective spaces we must load the NormalToricVarieties 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.

 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 : Segre(X,I) 2 2 o22 = - 72x x + 3x + 8x x + x 3 4 3 3 4 3 ZZ[x ..x ] 0 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=Segre(Ch,X,I) 2 2 o24 = - 72x x + 3x + 8x x + x 3 4 3 3 4 3 o24 : Ch

All the examples were done using symbolic computations with Gr\"obner bases. Changing the option CompMethod to bertini will do the main computations numerically, provided Bertini is installed and configured. Note that the bertini option is only avalibe for subschemes of \PP^n.

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 Segre :

• "Segre(Ideal)"
• "Segre(Ideal,Symbol)"
• "Segre(QuotientRing,Ideal)"

## For the programmer

The object Segre is .