next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Cremona :: Cremona

Cremona -- package for some computations on rational maps between projective varieties

Description

Cremona is a package to perform some basic computations on rational and birational maps between absolutely irreducible projective varieties over a field K. For instance, it provides general methods to compute degrees and projective degrees of rational maps (see degreeOfRationalMap and projectiveDegrees) and a general method to compute the push-forward to projective space of Segre classes (see SegreClass). Moreover, all the main methods are available both in version probabilistic and in version deterministic, and one can switch from one to the other with the boolean option MathMode.

Let Φ:X ---> Y be a rational map from a subvariety X=V(I)⊆ℙn=Proj(K[x0,...,xn]) to a subvariety Y=V(J)⊆ℙm=Proj(K[y0,...,ym]). We assume that the map Φ can be represented, although not uniquely, by a homogeneous ring map φ:K[y0,...,ym]/J →K[x0,...,xn]/I of quotients of polynomial rings by homogeneous ideals. These kinds of ring maps, together with the objects of the RationalMap class, are the typical inputs for the methods in this package. The method toMap (resp. rationalMap) constructs such a ring map (resp. rational map) from a list of m+1 homogeneous elements of the same degree in K[x0,...,xn]/I.

Below is an example using the methods provided by this package, dealing with a birational transformation Φ:ℙ6 ---> G(2,4)⊂ℙ9 of bidegree (3,3).

i1 : ZZ/300007[t_0..t_6];
i2 : time phi = toMap minors(3,matrix{{t_0..t_4},{t_1..t_5},{t_2..t_6}})
     -- used 0.0483768 seconds

           ZZ                                 ZZ                                               3                2    2                2        2                      2                  2    2                 2                       3                2    2                2                                 2                           2    2                                  2        2                      2                  2                        2                         2    2                 2                       3                2    2
o2 = map(------[t , t , t , t , t , t , t ],------[x , x , x , x , x , x , x , x , x , x ],{- t  + 2t t t  - t t  - t t  + t t t , - t t  + t t  + t t t  - t t t  - t t  + t t t , - t t  + t t  + t t t  - t t  - t t t  + t t t , - t  + 2t t t  - t t  - t t  + t t t , - t t  + t t t  + t t t  - t t t  - t t  + t t t , - t t t  + t t  + t t  - t t t  - t t t  + t t t , - t t  + t t  + t t t  - t t t  - t t  + t t t , - t t  + t t t  + t t t  - t t  - t t t  + t t t , - t t  + t t  + t t t  - t t  - t t t  + t t t , - t  + 2t t t  - t t  - t t  + t t t })
         300007  0   1   2   3   4   5   6  300007  0   1   2   3   4   5   6   7   8   9      2     1 2 3    0 3    1 4    0 2 4     2 3    1 3    1 2 4    0 3 4    1 5    0 2 5     2 3    2 4    1 3 4    0 4    1 2 5    0 3 5     3     2 3 4    1 4    2 5    1 3 5     2 4    1 3 4    1 2 5    0 3 5    1 6    0 2 6     2 3 4    1 4    2 5    0 4 5    1 2 6    0 3 6     3 4    2 4    2 3 5    1 4 5    2 6    1 3 6     2 4    2 3 5    1 4 5    0 5    1 3 6    0 4 6     3 4    3 5    2 4 5    1 5    2 3 6    1 4 6     4     3 4 5    2 5    3 6    2 4 6

               ZZ                                      ZZ
o2 : RingMap ------[t , t , t , t , t , t , t ] <--- ------[x , x , x , x , x , x , x , x , x , x ]
             300007  0   1   2   3   4   5   6       300007  0   1   2   3   4   5   6   7   8   9
i3 : time J = kernel(phi,2)
     -- used 0.0883422 seconds

o3 = ideal (x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x 
             6 7    5 8    4 9   3 7    2 8    1 9   3 5    2 6    0 9   3 4
     ------------------------------------------------------------------------
     - x x  + x x , x x  - x x  + x x )
        1 6    0 8   2 4    1 5    0 7

                ZZ
o3 : Ideal of ------[x , x , x , x , x , x , x , x , x , x ]
              300007  0   1   2   3   4   5   6   7   8   9
i4 : time degreeOfRationalMap phi
     -- used 0.0422133 seconds

o4 = 1
i5 : time projectiveDegrees phi
     -- used 0.280131 seconds

o5 = {1, 3, 9, 17, 21, 15, 5}

o5 : List
i6 : time projectiveDegrees(phi,NumDegrees=>0)
     -- used 0.0748683 seconds

o6 = {5}

o6 : List
i7 : time phi = toMap(phi,Dominant=>J)
     -- used 0.00164389 seconds

                                                                         ZZ
                                                                       ------[x , x , x , x , x , x , x , x , x , x ]
           ZZ                                                          300007  0   1   2   3   4   5   6   7   8   9                                 3                2    2                2        2                      2                  2    2                 2                       3                2    2                2                                 2                           2    2                                  2        2                      2                  2                        2                         2    2                 2                       3                2    2
o7 = map(------[t , t , t , t , t , t , t ],----------------------------------------------------------------------------------------------------,{- t  + 2t t t  - t t  - t t  + t t t , - t t  + t t  + t t t  - t t t  - t t  + t t t , - t t  + t t  + t t t  - t t  - t t t  + t t t , - t  + 2t t t  - t t  - t t  + t t t , - t t  + t t t  + t t t  - t t t  - t t  + t t t , - t t t  + t t  + t t  - t t t  - t t t  + t t t , - t t  + t t  + t t t  - t t t  - t t  + t t t , - t t  + t t t  + t t t  - t t  - t t t  + t t t , - t t  + t t  + t t t  - t t  - t t t  + t t t , - t  + 2t t t  - t t  - t t  + t t t })
         300007  0   1   2   3   4   5   6  (x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x )     2     1 2 3    0 3    1 4    0 2 4     2 3    1 3    1 2 4    0 3 4    1 5    0 2 5     2 3    2 4    1 3 4    0 4    1 2 5    0 3 5     3     2 3 4    1 4    2 5    1 3 5     2 4    1 3 4    1 2 5    0 3 5    1 6    0 2 6     2 3 4    1 4    2 5    0 4 5    1 2 6    0 3 6     3 4    2 4    2 3 5    1 4 5    2 6    1 3 6     2 4    2 3 5    1 4 5    0 5    1 3 6    0 4 6     3 4    3 5    2 4 5    1 5    2 3 6    1 4 6     4     3 4 5    2 5    3 6    2 4 6
                                              6 7    5 8    4 9   3 7    2 8    1 9   3 5    2 6    0 9   3 4    1 6    0 8   2 4    1 5    0 7

                                                                                  ZZ
                                                                                ------[x , x , x , x , x , x , x , x , x , x ]
               ZZ                                                               300007  0   1   2   3   4   5   6   7   8   9
o7 : RingMap ------[t , t , t , t , t , t , t ] <--- ----------------------------------------------------------------------------------------------------
             300007  0   1   2   3   4   5   6       (x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x )
                                                       6 7    5 8    4 9   3 7    2 8    1 9   3 5    2 6    0 9   3 4    1 6    0 8   2 4    1 5    0 7
i8 : time psi = inverseMap phi
     -- used 0.435119 seconds

                                      ZZ
                                    ------[x , x , x , x , x , x , x , x , x , x ]
                                    300007  0   1   2   3   4   5   6   7   8   9                               ZZ                                 3                2               2    2                        2                          2     2        2                               2                                   2               2             2                       3                                                 2                 2    2                                  2    2                 2                                                 3                         2      2    2      2                                              2
o8 = map(----------------------------------------------------------------------------------------------------,------[t , t , t , t , t , t , t ],{x  - 2x x x  + x x  - x x x  + x x  + x x  + x x x  - x x x  + x x  - 2x x x  - x x x  - 2x x , x x  - x x  - x x x  + x x x  + x x x  + x x  - 2x x x  - x x x  + x x x , x x  - x x x  + x x  - x x x  + x x  - x x x  - x x x , x  - x x x  + x x x  + x x x  - 2x x x  - x x x , x x  - x x x  + x x  + x x  - x x x  - x x x  - x x x , x x  - x x  - x x x  + x x  + x x x  + x x x  - 2x x x  - x x x  + x x x , x  - 2x x x  - x x x  + x x  + x x  + x x  + x x  + x x x  - 2x x x  - x x x  - x x x  - 2x x })
         (x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x ) 300007  0   1   2   3   4   5   6    2     1 2 3    0 3    1 2 5    0 5    1 6    0 2 6    0 4 6    1 7     0 2 7    0 4 7     0 9   2 3    1 3    1 2 6    0 3 6    0 5 6    1 8     0 2 8    0 4 8    0 1 9   2 3    1 3 6    0 6    0 3 8    1 9    0 2 9    0 4 9   3    1 3 8    0 6 8    1 2 9     0 3 9    0 5 9   3 6    2 3 8    0 8    2 9    1 3 9    0 6 9    0 7 9   3 6    3 8    2 6 8    1 8    2 3 9    2 5 9     1 6 9    1 7 9    0 8 9   6     3 6 8    5 6 8    2 8    4 8    3 9    5 9    2 6 9     4 6 9    2 7 9    4 7 9     0 9
           6 7    5 8    4 9   3 7    2 8    1 9   3 5    2 6    0 9   3 4    1 6    0 8   2 4    1 5    0 7

                                          ZZ
                                        ------[x , x , x , x , x , x , x , x , x , x ]
                                        300007  0   1   2   3   4   5   6   7   8   9                                    ZZ
o8 : RingMap ---------------------------------------------------------------------------------------------------- <--- ------[t , t , t , t , t , t , t ]
             (x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x , x x  - x x  + x x )      300007  0   1   2   3   4   5   6
               6 7    5 8    4 9   3 7    2 8    1 9   3 5    2 6    0 9   3 4    1 6    0 8   2 4    1 5    0 7
i9 : time isInverseMap(phi,psi)
     -- used 0.00568038 seconds

o9 = true
i10 : time degreeOfRationalMap psi
     -- used 0.0357872 seconds

o10 = 1
i11 : time projectiveDegrees psi
     -- used 0.943147 seconds

o11 = {5, 15, 21, 17, 9, 3, 1}

o11 : List

We repeat the example using the type RationalMap and using deterministic methods.

i12 : time phi = rationalMap minors(3,matrix{{t_0..t_4},{t_1..t_5},{t_2..t_6}})
     -- used 0.00215933 seconds

o12 = -- rational map --
                     ZZ
      source: Proj(------[t , t , t , t , t , t , t ])
                   300007  0   1   2   3   4   5   6
                     ZZ
      target: Proj(------[x , x , x , x , x , x , x , x , x , x ])
                   300007  0   1   2   3   4   5   6   7   8   9
      defining forms: {
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t ,
                          2     1 2 3    0 3    1 4    0 2 4
                       
                          2        2                      2
                       - t t  + t t  + t t t  - t t t  - t t  + t t t ,
                          2 3    1 3    1 2 4    0 3 4    1 5    0 2 5
                       
                            2    2                 2
                       - t t  + t t  + t t t  - t t  - t t t  + t t t ,
                          2 3    2 4    1 3 4    0 4    1 2 5    0 3 5
                       
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t ,
                          3     2 3 4    1 4    2 5    1 3 5
                       
                          2                                 2
                       - t t  + t t t  + t t t  - t t t  - t t  + t t t ,
                          2 4    1 3 4    1 2 5    0 3 5    1 6    0 2 6
                       
                                     2    2
                       - t t t  + t t  + t t  - t t t  - t t t  + t t t ,
                          2 3 4    1 4    2 5    0 4 5    1 2 6    0 3 6
                       
                          2        2                      2
                       - t t  + t t  + t t t  - t t t  - t t  + t t t ,
                          3 4    2 4    2 3 5    1 4 5    2 6    1 3 6
                       
                            2                        2
                       - t t  + t t t  + t t t  - t t  - t t t  + t t t ,
                          2 4    2 3 5    1 4 5    0 5    1 3 6    0 4 6
                       
                            2    2                 2
                       - t t  + t t  + t t t  - t t  - t t t  + t t t ,
                          3 4    3 5    2 4 5    1 5    2 3 6    1 4 6
                       
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t
                          4     3 4 5    2 5    3 6    2 4 6
                      }

o12 : RationalMap (cubic rational map from PP^6 to PP^9)
i13 : time phi = rationalMap(phi,Dominant=>2)
     -- used 0.127684 seconds

o13 = -- rational map --
                     ZZ
      source: Proj(------[t , t , t , t , t , t , t ])
                   300007  0   1   2   3   4   5   6
                                   ZZ
      target: subvariety of Proj(------[x , x , x , x , x , x , x , x , x , x ]) defined by
                                 300007  0   1   2   3   4   5   6   7   8   9
              {
               x x  - x x  + x x ,
                6 7    5 8    4 9
               
               x x  - x x  + x x ,
                3 7    2 8    1 9
               
               x x  - x x  + x x ,
                3 5    2 6    0 9
               
               x x  - x x  + x x ,
                3 4    1 6    0 8
               
               x x  - x x  + x x
                2 4    1 5    0 7
              }
      defining forms: {
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t ,
                          2     1 2 3    0 3    1 4    0 2 4
                       
                          2        2                      2
                       - t t  + t t  + t t t  - t t t  - t t  + t t t ,
                          2 3    1 3    1 2 4    0 3 4    1 5    0 2 5
                       
                            2    2                 2
                       - t t  + t t  + t t t  - t t  - t t t  + t t t ,
                          2 3    2 4    1 3 4    0 4    1 2 5    0 3 5
                       
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t ,
                          3     2 3 4    1 4    2 5    1 3 5
                       
                          2                                 2
                       - t t  + t t t  + t t t  - t t t  - t t  + t t t ,
                          2 4    1 3 4    1 2 5    0 3 5    1 6    0 2 6
                       
                                     2    2
                       - t t t  + t t  + t t  - t t t  - t t t  + t t t ,
                          2 3 4    1 4    2 5    0 4 5    1 2 6    0 3 6
                       
                          2        2                      2
                       - t t  + t t  + t t t  - t t t  - t t  + t t t ,
                          3 4    2 4    2 3 5    1 4 5    2 6    1 3 6
                       
                            2                        2
                       - t t  + t t t  + t t t  - t t  - t t t  + t t t ,
                          2 4    2 3 5    1 4 5    0 5    1 3 6    0 4 6
                       
                            2    2                 2
                       - t t  + t t  + t t t  - t t  - t t t  + t t t ,
                          3 4    3 5    2 4 5    1 5    2 3 6    1 4 6
                       
                          3                2    2
                       - t  + 2t t t  - t t  - t t  + t t t
                          4     3 4 5    2 5    3 6    2 4 6
                      }

o13 : RationalMap (cubic rational map from PP^6 to 6-dimensional subvariety of PP^9)
i14 : time phi^(-1)
     -- used 0.417272 seconds

o14 = -- rational map --
                                   ZZ
      source: subvariety of Proj(------[x , x , x , x , x , x , x , x , x , x ]) defined by
                                 300007  0   1   2   3   4   5   6   7   8   9
              {
               x x  - x x  + x x ,
                6 7    5 8    4 9
               
               x x  - x x  + x x ,
                3 7    2 8    1 9
               
               x x  - x x  + x x ,
                3 5    2 6    0 9
               
               x x  - x x  + x x ,
                3 4    1 6    0 8
               
               x x  - x x  + x x
                2 4    1 5    0 7
              }
                     ZZ
      target: Proj(------[t , t , t , t , t , t , t ])
                   300007  0   1   2   3   4   5   6
      defining forms: {
                        3                2               2    2                        2                          2
                       x  - 2x x x  + x x  - x x x  + x x  + x x  + x x x  - x x x  + x x  - 2x x x  - x x x  - 2x x ,
                        2     1 2 3    0 3    1 2 5    0 5    1 6    0 2 6    0 4 6    1 7     0 2 7    0 4 7     0 9
                       
                        2        2                               2
                       x x  - x x  - x x x  + x x x  + x x x  + x x  - 2x x x  - x x x  + x x x ,
                        2 3    1 3    1 2 6    0 3 6    0 5 6    1 8     0 2 8    0 4 8    0 1 9
                       
                          2               2             2
                       x x  - x x x  + x x  - x x x  + x x  - x x x  - x x x ,
                        2 3    1 3 6    0 6    0 3 8    1 9    0 2 9    0 4 9
                       
                        3
                       x  - x x x  + x x x  + x x x  - 2x x x  - x x x ,
                        3    1 3 8    0 6 8    1 2 9     0 3 9    0 5 9
                       
                        2                 2    2
                       x x  - x x x  + x x  + x x  - x x x  - x x x  - x x x ,
                        3 6    2 3 8    0 8    2 9    1 3 9    0 6 9    0 7 9
                       
                          2    2                 2
                       x x  - x x  - x x x  + x x  + x x x  + x x x  - 2x x x  - x x x  + x x x ,
                        3 6    3 8    2 6 8    1 8    2 3 9    2 5 9     1 6 9    1 7 9    0 8 9
                       
                        3                         2      2    2      2                                              2
                       x  - 2x x x  - x x x  + x x  + x x  + x x  + x x  + x x x  - 2x x x  - x x x  - x x x  - 2x x
                        6     3 6 8    5 6 8    2 8    4 8    3 9    5 9    2 6 9     4 6 9    2 7 9    4 7 9     0 9
                      }

o14 : RationalMap (cubic birational map from 6-dimensional subvariety of PP^9 to PP^6)
i15 : time degrees phi^(-1)
     -- used 0.279359 seconds

o15 = {5, 15, 21, 17, 9, 3, 1}

o15 : List
i16 : time degrees phi
     -- used 0.000020887 seconds

o16 = {1, 3, 9, 17, 21, 15, 5}

o16 : List
i17 : time describe phi
     -- used 0.0013101 seconds

o17 = rational map defined by forms of degree 3
      source variety: PP^6
      target variety: 6-dimensional variety of degree 5 in PP^9 cut out by 5 hypersurfaces of degree 2
      dominance: true
      birationality: true (the inverse map is known)
      projective degrees: {1, 3, 9, 17, 21, 15, 5}
      coefficient ring: ZZ/300007
i18 : time describe phi^(-1)
     -- used 0.00716912 seconds

o18 = rational map defined by forms of degree 3
      source variety: 6-dimensional variety of degree 5 in PP^9 cut out by 5 hypersurfaces of degree 2
      target variety: PP^6
      dominance: true
      birationality: true (the inverse map is known)
      projective degrees: {5, 15, 21, 17, 9, 3, 1}
      number of minimal representatives: 1
      dimension base locus: 4
      degree base locus: 24
      coefficient ring: ZZ/300007
i19 : time (f,g) = graph phi^-1; f;
     -- used 0.0083936 seconds

o20 : MultihomogeneousRationalMap (birational map from 6-dimensional subvariety of PP^9 x PP^6 to 6-dimensional subvariety of PP^9)
i21 : time degrees f
     -- used 1.29199 seconds

o21 = {904, 508, 268, 130, 56, 20, 5}

o21 : List
i22 : time degree f
     -- used 0.000016592 seconds

o22 = 1
i23 : time describe f
     -- used 0.00111498 seconds

o23 = rational map defined by multiforms of degree {1, 0}
      source variety: 6-dimensional subvariety of PP^9 x PP^6 cut out by 20 hypersurfaces of degrees ({1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{1, 1},{2, 0},{2, 0},{2, 0},{2, 0},{2, 0})
      target variety: 6-dimensional variety of degree 5 in PP^9 cut out by 5 hypersurfaces of degree 2
      dominance: true
      birationality: true
      projective degrees: {904, 508, 268, 130, 56, 20, 5}
      coefficient ring: ZZ/300007

A rudimentary version of Cremona has been already used in an essential way in the paper doi:10.1016/j.jsc.2015.11.004 (it was originally named bir.m2).

Author

Certification a gold star

Version 4.2.2 of this package was accepted for publication in volume 8 of the journal The Journal of Software for Algebra and Geometry on 11 June 2018, in the article A Macaulay2 package for computations with rational maps. That version can be obtained from the journal or from the Macaulay2 source code repository, http://github.com/Macaulay2/M2/blob/master/M2/Macaulay2/packages/Cremona.m2, commit number 2e87a29e4b5b68af1bd8917a9c76d4008ff9fc5b.

Version

This documentation describes version 4.3 of Cremona.

Source code

The source code from which this documentation is derived is in the file Cremona.m2. The auxiliary files accompanying it are in the directory Cremona/.

Exports