# inverseMap -- inverse of a birational map

## Synopsis

• Usage:
inverseMap phi
• Inputs:
• phi, , a birational map
• Optional inputs:
• BlowUpStrategy => ..., default value Eliminate,
• MathMode => ..., default value false, whether to ensure correctness of output
• Verbose => ..., default value true,
• Outputs:
• , 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 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.