Blowing up a point in $\mathbb{P}^2$:
i1 : X = abstractProjectiveSpace 0 o1 = X o1 : a flag bundle with subquotient ranks {1, 0} |
i2 : Y = abstractProjectiveSpace 2 o2 = Y o2 : a flag bundle with subquotient ranks {1..2} |
i3 : i = map(Y,X,OO_X) o3 = i o3 : a map to Y from X |
i4 : (Ytilde, PN, PNmap, Ymap) = blowup(i) o4 = (Ytilde, PN, PNmap, Ymap) o4 : Sequence |
i5 : Ediv = chern(1, exceptionalDivisor Ytilde) -- the class of the exceptional divisor o5 = E 0 QQ[][h, H ..H ] 2,1 2,2 --------------------------------------[E ] (- h - H , - h*H - H , -h*H ) 0 2,1 2,1 2,2 2,2 o5 : ------------------------------------------ 2 (H E , E + H ) 2,1 0 0 2,2 |
i6 : integral (Ediv^2) o6 = -1 |
As a more interesting example, we can derive the classical formula for the degree of the zero-dimensional locus of intersection of three surfaces in $\mathbb{P}^3$ containing a twisted cubic:
i7 : B = base(r,s,t) o7 = B o7 : an abstract variety of dimension 0 |
i8 : X = abstractProjectiveSpace(1, B) o8 = X o8 : a flag bundle with subquotient ranks {2:1} |
i9 : Y = abstractProjectiveSpace(3, B) o9 = Y o9 : a flag bundle with subquotient ranks {1, 3} |
i10 : i = map(Y,X,OO_X(3)) --includes P^1 into P^3 as the twisted cubic o10 = i o10 : a map to Y from X |
i11 : (Ytilde, PN, PNmap, Ymap) = blowup(i) o11 = (Ytilde, PN, PNmap, Ymap) o11 : Sequence |
i12 : Ediv = chern(1, exceptionalDivisor Ytilde) o12 = E 0 QQ[r..t][h, H ..H ] 2,1 2,3 -------------------------------------------------------[E ] (- h - H , - h*H - H , - h*H - H , -h*H ) 0 2,1 2,1 2,2 2,2 2,3 2,3 o12 : ----------------------------------------------------------- 2 (H E , H E , 3E - 10H E + 9H ) 2,2 0 2,3 0 0 2,1 0 2,2 |
i13 : hyperplane = chern(1,OO_Y(1)) o13 = H 2,1 QQ[r..t][h, H ..H ] 2,1 2,3 o13 : ------------------------------------------------------- (- h - H , - h*H - H , - h*H - H , -h*H ) 2,1 2,1 2,2 2,2 2,3 2,3 |
i14 : (rsurf, ssurf, tsurf) = (x -> hyperplane * x) \ (r,s,t) --classes of surfaces of degrees r,s,t o14 = (r*H , s*H , t*H ) 2,1 2,1 2,1 o14 : Sequence |
i15 : (ptr, pts, ptt) = (x -> (Ymap^* x) - Ediv) \ oo --proper transforms of each surface o15 = (- E + r*H , - E + s*H , - E + t*H ) 0 2,1 0 2,1 0 2,1 o15 : Sequence |
i16 : integral(ptr * pts * ptt) o16 = r*s*t - 3r - 3s - 3t + 10 o16 : QQ[r..t] |
The file Schubert2/blowup-test.m2 has several more examples.
The object blowup is a method function.