Macaulay2 » Documentation
Packages » Schubert2 :: blowup
next | previous | forward | backward | up | index | toc

blowup -- blow up an abstract variety along a subvariety

Synopsis

Description

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.

See also

Ways to use blowup :

For the programmer

The object blowup is a method function.