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

# inverseMap -- inverse of a birational map

- Usage:
    `inverseMap phi`
- Inputs:
  - phi, a rational map, a birational map
- Optional inputs:
  - BlowUpStrategy => ..., default value "Eliminate",
  - Certify => ..., default value false, whether to ensure correctness of output
  - Verbose => ..., default value true,
- Outputs:
  - a rational map, the inverse map of phi

## 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 (missing documentation) 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.151671s (cpu); 0.118509s (thread); 0s (gc)

    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.349462s (cpu); 0.25541s (thread); 0s (gc)

    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 Certify is set to false, you might not get any error message.

## See also

- approximateInverseMap -- random map related to the inverse of a birational map
- inverse(RationalMap) -- inverse of a birational map

## Ways to use inverseMap:

- `inverseMap(RationalMap)`
- `inverseMap(RingMap)`

## For the programmer

The object inverseMap 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:195:0.