next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Cremona :: inverseMap

inverseMap -- inverse of a birational map

Synopsis

Description

If the source variety is a projective space and if a further technical condition is satisfied, then the algorithm used is that described in the paper by Russo and Simis - On birational maps and Jacobian matrices - Compos. Math. 126 (3), 335-358, 2001. For the general case, the algorithm used is the same as for invertBirationalMap in the package Parametrization. Note that in this case, the analogous method inverseOfMap in the package RationalMaps generally turns out to be faster.

i1 : -- A Cremona transformation of P^20 
     phi = rationalMap map quadroQuadricCremonaTransformation(20,1)

o1 = -- rational map --
     source: Proj(QQ[w , w , w , w , w , w , w , w , w , w , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  ])
                      0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20
     target: Proj(QQ[w , w , w , w , w , w , w , w , w , w , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  ])
                      0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20
     defining forms: {
                      w  w   - w w   + w w  ,
                       10 15    9 16    6 20
                      
                      w  w   - w w   + w w  ,
                       10 14    8 16    5 20
                      
                      w w   - w w   + w w  ,
                       9 14    8 15    4 20
                      
                      w w   - w w   + w w  ,
                       6 14    5 15    4 16
                      
                      w  w   - w  w   + w  w   - w  w   + w  w  ,
                       11 13    16 17    15 18    14 19    12 20
                      
                      w w   - w  w   + w w   - w w   + w w  ,
                       3 13    10 17    9 18    8 19    7 20
                      
                      w  w   - w w   - w w   - w w   + w w  ,
                       10 12    2 13    7 16    6 18    5 19
                      
                      w w   - w w   - w w   - w w   + w w  ,
                       9 12    1 13    7 15    6 17    4 19
                      
                      w w   - w w   - w w   - w w   + w w  ,
                       8 12    0 13    7 14    5 17    4 18
                      
                      w  w   - w w   + w w  ,
                       10 11    3 16    2 20
                      
                      w w   - w w   + w w  ,
                       9 11    3 15    1 20
                      
                      w w   - w w   + w w  ,
                       8 11    3 14    0 20
                      
                      w w   - w w   + w w   - w w   + w w  ,
                       7 11    3 12    2 17    1 18    0 19
                      
                      w w   - w w   + w w  ,
                       6 11    2 15    1 16
                      
                      w w   - w w   + w w  ,
                       5 11    2 14    0 16
                      
                      w w   - w w   + w w  ,
                       4 11    1 14    0 15
                      
                      w w  - w w  + w w  ,
                       6 8    5 9    4 10
                      
                      w w  - w w  + w w  ,
                       3 6    2 9    1 10
                      
                      w w  - w w  + w w  ,
                       3 5    2 8    0 10
                      
                      w w  - w w  + w w ,
                       3 4    1 8    0 9
                      
                      w w  - w w  + w w
                       2 4    1 5    0 6
                     }

o1 : RationalMap (quadratic Cremona transformation of PP^20)
i2 : time psi = inverseMap phi
     -- used 0.0795217 seconds

o2 = -- rational map --
     source: Proj(QQ[w , w , w , w , w , w , w , w , w , w , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  ])
                      0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20
     target: Proj(QQ[w , w , w , w , w , w , w , w , w , w , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  , w  ])
                      0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20
     defining forms: {
                      - w  w   + w  w   - w  w  ,
                         15 18    14 19    11 20
                      
                      - w  w   + w  w   - w  w  ,
                         15 17    13 19    10 20
                      
                      - w  w   + w  w   - w w  ,
                         14 17    13 18    9 20
                      
                      - w  w   + w  w   - w w  ,
                         11 17    10 18    9 19
                      
                      - w  w   + w w   - w w  ,
                         15 16    3 19    2 20
                      
                      - w  w   + w w   - w w  ,
                         14 16    3 18    1 20
                      
                      - w  w   + w w   - w w  ,
                         13 16    3 17    0 20
                      
                      - w  w   - w w   + w w   - w w   - w w  ,
                         12 16    8 17    7 18    6 19    5 20
                      
                      - w  w   + w w   - w w  ,
                         11 16    2 18    1 19
                      
                      - w  w   + w w   - w w  ,
                         10 16    2 17    0 19
                      
                      - w w   + w w   - w w  ,
                         9 16    1 17    0 18
                      
                      - w  w   + w  w   - w w  ,
                         11 13    10 14    9 15
                      
                      - w w   - w w   + w w   - w w   - w w  ,
                         3 12    8 13    7 14    6 15    4 20
                      
                      w w  + w w  - w w  + w w  - w w  ,
                       3 5    2 6    1 7    0 8    4 16
                      
                      - w w   + w w   - w w  ,
                         3 11    2 14    1 15
                      
                      - w w   + w w   - w w  ,
                         3 10    2 13    0 15
                      
                      - w w  + w w   - w w  ,
                         3 9    1 13    0 14
                      
                      - w w   + w w   - w w   + w w   - w w  ,
                         8 10    7 11    2 12    5 15    4 19
                      
                      - w w  + w w   - w w   + w w   - w w  ,
                         8 9    6 11    1 12    5 14    4 18
                      
                      - w w  + w w   - w w   + w w   - w w  ,
                         7 9    6 10    0 12    5 13    4 17
                      
                      - w w  + w w   - w w
                         2 9    1 10    0 11
                     }

o2 : RationalMap (quadratic rational map from PP^20 to PP^20)
i3 : assert(phi * psi == 1)

The method also accepts as input a ring map representing a rational map $\Phi$ between projective varieties. In this case, the ring map defining $\Phi^{-1}$ is returned.

i4 : -- A Cremona transformation of P^26 
     phi = map quadroQuadricCremonaTransformation(26,1)

o4 = map (QQ[w ..w  ], QQ[w ..w  ], {w  w   - w  w   - w  w   - w  w   - w w  , w  w   - w  w   - w  w   - w  w   - w w  , w  w   - w  w   - w  w   - w  w   - w w  , w  w   - w  w   + w  w   - w  w   - w w  , w  w   - w  w   + w  w   + w  w   - w w  , w w   - w w   + w w   + w w   + w w  , w  w   - w  w   + w  w   - w  w   - w w  , w  w   - w  w   + w  w   + w  w   - w w  , w w   - w w   + w w   + w w   + w w  , w  w   - w  w   - w  w   + w  w   - w w  , w w   - w w   - w w   + w w   + w w  , w  w   - w  w   - w  w   + w  w   - w w  , w  w   - w  w   - w  w   + w  w   - w w  , w w   - w w   - w w   + w w   + w w  , w w   - w w   - w w   + w w   + w w  , w w   - w w   + w w   - w w   + w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   + w w   - w w  , w w   - w w   + w w   + w w   - w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   - w w   + w w  , w w   - w w   - w w   + w w   - w w  , w w   - w w   - w w   + w w   - w w  , w w  - w w  - w w  + w w  - w w })
              0   26       0   26     21 22    20 23    15 24    10 25    0 26   19 22    18 23    16 24    11 25    1 26   19 20    18 21    17 24    12 25    2 26   15 19    16 21    17 23    13 25    3 26   10 19    11 21    12 23    13 24    4 26   0 19    1 21    2 23    3 24    4 25   15 18    16 20    17 22    14 25    5 26   10 18    11 20    12 22    14 24    6 26   0 18    1 20    2 22    5 24    6 25   12 16    11 17    13 18    14 19    7 26   2 16    1 17    3 18    5 19    7 25   12 15    10 17    13 20    14 21    8 26   11 15    10 16    13 22    14 23    9 26   2 15    0 17    3 20    5 21    8 25   1 15    0 16    3 22    5 23    9 25   5 13    3 14    7 15    8 16    9 17   5 12    2 14    6 17    8 18    7 20   3 12    2 13    4 17    8 19    7 21   5 11    1 14    6 16    9 18    7 22   3 11    1 13    4 16    9 19    7 23   2 11    1 12    4 18    6 19    7 24   7 10    8 11    9 12    6 13    4 14   5 10    0 14    6 15    9 20    8 22   3 10    0 13    4 15    9 21    8 23   2 10    0 12    4 20    6 21    8 24   1 10    0 11    4 22    6 23    9 24   4 5    3 6    0 7    1 8    2 9

o4 : RingMap QQ[w ..w  ] <--- QQ[w ..w  ]
                 0   26           0   26
i5 : time psi = inverseMap phi
     -- used 0.156162 seconds

o5 = map (QQ[w ..w  ], QQ[w ..w  ], {- w w   + w w   + w  w   - w  w   - w w  , - w w   + w w   + w  w   - w  w   - w w  , - w w   + w w   + w  w   - w  w   - w w  , - w w   - w  w   + w  w   - w  w   - w w  , - w w   - w  w   + w  w   - w  w   - w w  , - w w   - w  w   + w  w   - w  w   - w w  , - w w   - w  w   + w  w   - w  w   - w w  , w  w   - w  w   + w  w   - w  w   - w w  , - w  w   + w  w   - w  w   + w  w   - w  w  , - w  w   + w  w   - w  w   + w  w   - w  w  , w w   - w w   + w w   + w  w   - w  w  , - w w   + w w   + w  w   + w w   - w w  , - w w   + w w   + w  w   + w w   - w w  , - w w   - w  w   + w  w   + w w   - w w  , - w w   - w  w   + w  w   + w w   - w w  , w  w   - w  w   + w w   - w w   + w w  , w  w   - w w   + w w   - w w   + w w  , w  w   - w w   + w w   - w w   + w w  , w w  - w w   + w w   - w w   + w w  , w w  - w w   + w w   - w w   + w w  , w w   - w w   + w w   - w w   + w w  , w w   - w w   + w w   - w w   + w w  , w w   - w w   + w w   - w w   + w w  , w w   - w w   + w w   - w w   + w w  , w w  - w w  - w w   + w w   - w w  , - w w  + w w  + w w   - w w   + w w  , w w  - w w  - w w  + w w   - w w  })
              0   26       0   26       5 22    8 23    14 24    13 25    0 26     5 18    8 19    14 20    10 25    1 26     5 16    8 17    13 20    10 24    2 26     5 15    14 17    13 19    10 23    3 26     5 21    20 23    19 24    17 25    4 26     8 15    14 16    13 18    10 22    6 26     8 21    20 22    18 24    16 25    7 26   17 18    16 19    15 20    10 21    9 26     13 21    17 22    16 23    15 24    11 26     14 21    19 22    18 23    15 25    12 26   0 21    4 22    7 23    12 24    11 25     4 18    7 19    12 20    1 21    9 25     4 16    7 17    11 20    2 21    9 24     4 15    12 17    11 19    3 21    9 23     7 15    12 16    11 18    6 21    9 22   12 13    11 14    0 15    3 22    6 23   10 12    9 14    1 15    3 18    6 19   10 11    9 13    2 15    3 16    6 17   8 9    7 10    1 16    2 18    6 20   5 9    4 10    1 17    2 19    3 20   8 11    7 13    0 16    2 22    6 24   5 11    4 13    0 17    2 23    3 24   8 12    7 14    0 18    1 22    6 25   5 12    4 14    0 19    1 23    3 25   5 7    4 8    0 20    1 24    2 25     5 6    3 8    0 10    1 13    2 14   4 6    3 7    0 9    1 11    2 12

o5 : RingMap QQ[w ..w  ] <--- QQ[w ..w  ]
                 0   26           0   26
i6 : assert isInverseMap(phi,psi)

Caveat

If the map passed is not birational and the option MathMode is set to false, you might not get any error message.

See also

Ways to use inverseMap :

For the programmer

The object inverseMap is a method function with options.