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

# adjunctionProcess -- perform the adjunction process

- Usage:
    `(numList,adjList,ptsList,J)=adjointMatrix(I)`
    `(numList,adjList,ptsList,J)=adjointMatrix(I,N)`
- Inputs:
  - I, an ideal, of a projective surface
  - N, an integer, number of adjunction steps
- Outputs:
  - numList, a list, numerical Data of the adjunction process
  - adjList, a list, list of adjoint matrices
  - ptsList, a list, list of ideal if the exceptional points
  - J, an ideal, ideal of the final surface in the adjunction process

## 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)
     -- .610907s 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;
     -- 5.10577s 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:

- `adjunctionProcess(Ideal)`
- `adjunctionProcess(Ideal,ZZ)`

## For the programmer

The object adjunctionProcess is a method function.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/AdjunctionForSurfaces.m2:678:0.