Macaulay2 » Documentation
Packages » AdjunctionForSurfaces :: adjunctionProcess
next | previous | forward | backward | up | index | toc

adjunctionProcess -- perform the adjunction process

Synopsis

Description

Adjunction determines the image X' of X under the morphism phi: X -> X' defined by |H+K|. By Sommese and Van de Ven [SVdV] |H+K| is birational and blows down presisely all (-1) lines of unless

(1) X is a P2 linearly or quadratically embedded, or ruled in lines,

(2) X is a anticanonical embedded Del Pezzo surface,

(3) X is a conic bundle in which case phi_{|H+K|}: X -> B maps X to a curve B and the fibers are conics, or

(4) X is an element of one of the four families of exceptions where |K+H| defines a finite to 1 map. See TO "specialFamiliesOfSommeseVandeVen".

Since a (-1) conic on X become (-1) line on X', repeating this process finally reaches a minimal surface unless X has negative Kodaira dimension.

In case X is a rational surface, and the lucky case that the final surface is P2, one can use the list adjList to get a rational parametrization.

In case one ends up with a del Pezzo surface or a conic bundle, one has to identify the exceptional lines, thus one might need an algebraic field extension, to get a rational parametrization. However, one can always parametrize X in terms of the final surface in the adjunction process.

The numerical data are collected in a list with an entry

(n,d,pi)= (dim Pn_i, degree X_i, sectional genus of X_i)

for each surface X_i in the adjunction process, starting with X=X_0 and an entry the integer k if X_i -> X_(i+1) blows down k (-1) lines.

i1 : d=7

o1 = 7
i2 : L=toList(8:2)|toList(5:1)

o2 = {2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1}

o2 : List
i3 : n=expectedDimension(d,L)-1

o3 = 6
i4 : kk=ZZ/nextPrime(10^3)

o4 = kk

o4 : QuotientRing
i5 : t=symbol t, x= symbol x

o5 = (t, x)

o5 : Sequence
i6 : P2=kk[t_0..t_2]

o6 = P2

o6 : PolynomialRing
i7 : Pn=kk[x_0..x_n]

o7 = Pn

o7 : PolynomialRing
i8 : betti(I=rationalSurface(P2,d,L,Pn))

            0  1
o8 = total: 1 11
         0: 1  .
         1: .  3
         2: .  8

o8 : BettiTally
i9 : minimalBetti I

            0  1  2  3 4
o9 = total: 1 11 27 24 7
         0: 1  .  .  . .
         1: .  3  .  . .
         2: .  8 27 24 7

o9 : BettiTally
i10 : (numList,adjList,ptsList,J)=adjunctionProcess(I);
i11 : numList

o11 = {(6, 12, 7), 5, (6, 8, 3), 8, (2, 1, 0)}

o11 : List
i12 : P2=ring J

o12 = P2

o12 : PolynomialRing
i13 : betti(H=parametrization(P2,adjList))

             0 1
o13 = total: 1 7
          0: 1 .
          1: . .
          2: . .
          3: . .
          4: . .
          5: . .
          6: . 7

o13 : BettiTally
i14 : phi=map(P2,Pn,H);

o14 : RingMap P2 <-- Pn
i15 : elapsedTime betti(I'=trim ker phi)
 -- 1.40383 seconds elapsed

             0  1
o15 = total: 1 11
          0: 1  .
          1: .  3
          2: .  8

o15 : BettiTally
i16 : I'== I

o16 = true
i17 : elapsedTime basePts=primaryDecomposition ideal H;
 -- 9.14976 seconds elapsed
i18 : tally apply(basePts,c->(dim c, degree c, betti c))

                          0 1
o18 = Tally{(1, 1, total: 1 2) => 5}
                       0: 1 2
                          0 1
            (1, 3, total: 1 3) => 8
                       0: 1 .
                       1: . 3

o18 : Tally

Ways to use adjunctionProcess :

For the programmer

The object adjunctionProcess is a method function.