Macaulay2 » Documentation
Packages » Cremona :: projectiveDegrees
next | previous | forward | backward | up | index | toc

# projectiveDegrees -- projective degrees of a rational map between projective varieties

- Usage:
    `projectiveDegrees phi`
- Inputs:
  - phi, a ring map, which represents a rational map $\Phi$ between projective varieties
- Optional inputs:
  - BlowUpStrategy => ..., default value "Eliminate",
  - Certify => ..., default value false, whether to ensure correctness of output
  - NumDegrees => ..., default value infinity,
  - Verbose => ..., default value true,
- Outputs:
  - a list, the list of the projective degrees of $\Phi$

## Description

Let $\phi:K[y_0,\ldots,y_m]/J \to K[x_0,\ldots,x_n]/I$ be a ring map representing a rational map $\Phi: V(I) \subseteq \mathbb{P}^n=Proj(K[x_0,\ldots,x_n]) \dashrightarrow V(J) \subseteq \mathbb{P}^m=Proj(K[y_0,\ldots,y_m])$. The $i$-th projective degree of $\Phi$ is defined in terms of dimension and degree of the closure of $\Phi^{-1}(L)$, where $L$ is a general linear subspace of $\mathbb{P}^m$ of a certain dimension; for the precise definition, see Harris's book (Algebraic geometry: A first course - Vol. 133 of Grad. Texts in Math., p. 240). If $\Phi$ is defined by elements $F_0(x_0,\ldots,x_n),\ldots,F_m(x_0,\ldots,x_n)$ and $I_L$ denotes the ideal of the subspace $L\subseteq \mathbb{P}^m$, then the ideal of the closure of $\Phi^{-1}(L) $ is nothing but the saturation of the ideal $(\phi(I_L))$ by $(F_0,....,F_m)$ in the ring $K[x_0,\ldots,x_n]/I$. So, replacing in the definition, general linear subspace by random linear subspace, we get a probabilistic algorithm to compute all projective degrees. Furthermore, we can considerably speed up this algorithm by taking into account two simple remarks: 1) the saturation $(\phi(I_L)):{(F_0,\ldots,F_m)}^{\infty}$ is the same as $(\phi(I_L)):{(\lambda_0 F_0+\cdots+\lambda_m F_m)}^{\infty}$, where $\lambda_0,\ldots,\lambda_m\in\mathbb{K}$ are general scalars; 2) the $i$-th projective degree of $\Phi$ coincides with the $(i-1)$-th projective degree of the restriction of $\Phi$ to a general hyperplane section of $X$ (see loc. cit.). This is what the method uses if Certify is set to false. If instead Certify is set to true, then the method simply computes the multidegree of the graph.

    i1 : -- map from P^4 to G(1,3) given by the quadrics through a rational normal curve of degree 4
         GF(331^2)[t_0..t_4]; phi=toMap minors(2,matrix{{t_0..t_3},{t_1..t_4}})

                                                        2                           2                                          2
    o2 = map (GF 109561[t ..t ], GF 109561[x ..x ], {- t  + t t , - t t  + t t , - t  + t t , - t t  + t t , - t t  + t t , - t  + t t , a})
                         0   4              0   5       1    0 2     1 2    0 3     2    1 3     1 3    0 4     2 3    1 4     3    2 4

    o2 : RingMap GF 109561[t ..t ] <-- GF 109561[x ..x ]
                            0   4                 0   5

    i3 : time projectiveDegrees(phi,Certify=>true)
    Certify: output certified!
     -- used 0.0146907s (cpu); 0.0143597s (thread); 0s (gc)

    o3 = {1, 2, 4, 4, 2}

    o3 : List

    i4 : psi=inverseMap(toMap(phi,Dominant=>infinity))

               GF 109561[x ..x ]
                          0   5                        2                              2                       2
    o4 = map (------------------, GF 109561[t ..t ], {x  - x x  - x x , x x  - x x , x  - x x , x x  - x x , x  - x x  - x x , a})
              x x  - x x  + x x              0   4     1    0 2    0 3   1 2    0 4   2    0 5   2 4    1 5   4    2 5    3 5
               2 3    1 4    0 5

                  GF 109561[x ..x ]
                             0   5
    o4 : RingMap ------------------ <-- GF 109561[t ..t ]
                 x x  - x x  + x x                 0   4
                  2 3    1 4    0 5

    i5 : time projectiveDegrees(psi,Certify=>true)
    Certify: output certified!
     -- used 0.0111716s (cpu); 0.010835s (thread); 0s (gc)

    o5 = {2, 4, 4, 2, 1}

    o5 : List

    i6 : -- Cremona transformation of P^6 defined by the quadrics through a rational octic surface
         phi = map specialCremonaTransformation(7,ZZ/300007)

                ZZ              ZZ                                                            2                                                           2                                                                                      2                                                           2                                                                                 2                                                                        2                                                            2                                  2                                                                                    2          2                                 2                      2                                                           2
    o6 = map (------[x ..x ], ------[x ..x ], {x x  - x x , - 50341x x  - 113812x x  + 134072x  + 20472x x  + 123782x x  - 51108x x  + 124925x x  - 24689x  + 130567x x  + 29701x x  - 49318x x , x x  - x x , - 50341x x  - 113812x x  + 134072x  + 20472x x  + 123782x x  - 51108x x  + 124925x x  - 24689x  + 130567x x  + 29701x x  - 49318x x , 32881x x  - 85396x x  - 21242x x  - 32846x  - 114305x x  - 99802x x  + 74282x x  + 147078x x  + 110278x x  - 24441x  - 60401x x  - 104038x x  - 10704x x , - 50341x x  - 113812x  + 20472x x  + 123782x x  - 51108x  + 134072x x  + 124925x x  - 24689x x  + 130567x x  + 29701x x  - 49318x x , 115212x  - 115763x  - 72095x x  - 91989x x  - 28790x  + 72383x x  + 134072x  - 96548x x  + 34797x x  - 128727x x  + 124925x x  - 24689x  - 15984x x  + 38578x x  - 128153x x  + 130567x x  + 29701x x  - 49318x x })
              300007  0   6   300007  0   6     2 4    1 5          0 4          1 4          4         0 5          1 5         2 5          4 5         5          3 6         4 6         5 6   2 3    0 5          1 3          1 4          4         0 5          1 5         2 5          4 5         5          3 6         4 6         5 6        0 3         1 4         3 4         4          0 5         1 5         2 5          3 5          4 5         5         3 6          4 6         5 6          0 1          1         0 2          1 2         2          1 4          1 5         2 5          0 6         1 6         2 6         0          1         0 2         1 2         2         1 4          4         0 5         1 5          2 5          4 5         5         0 6         1 6          2 6          3 6         4 6         5 6

                   ZZ                 ZZ
    o6 : RingMap ------[x ..x ] <-- ------[x ..x ]
                 300007  0   6      300007  0   6

    i7 : time projectiveDegrees phi
     -- used 3.441e-05s (cpu); 3.096e-05s (thread); 0s (gc)

    o7 = {1, 2, 4, 8, 8, 4, 1}

    o7 : List

    i8 : time projectiveDegrees(phi,NumDegrees=>1)
     -- used 2.313e-05s (cpu); 2.304e-05s (thread); 0s (gc)

    o8 = {4, 1}

    o8 : List

Another way to use this method is by passing an integer i as second argument. However, this is equivalent to first projectiveDegrees(phi,NumDegrees=>i) and generally it is not faster.

## See also

- degrees(RationalMap) -- projective degrees of a rational map
- degreeMap -- degree of a rational map between projective varieties
- SegreClass -- Segre class of a closed subscheme of a projective variety

## Ways to use projectiveDegrees:

- `projectiveDegrees(RingMap)`
- projectiveDegrees(RationalMap) -- projective degrees of a rational map

## For the programmer

The object projectiveDegrees is a method function with options.

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