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.