# sourceInversionFactor -- Computes the the common factor among the the components of the composition of the inverse map and the original map.

## Synopsis

• Usage:
s = sourceInversionFactor(g)
• Inputs:
• g, , Your birational map $f : X \to Y$.
• Optional inputs:
• AssumeDominant => ..., default value false, If true, certain functions assume that the map from X to Y is dominant.
• CheckBirational => ..., default value false, If true, functions will check birationality.
• HybridLimit => ..., default value 15, An option to control HybridStrategy
• MinorsCount => ..., default value 0, An option controlling the behavior of isBirational and inverseOfMap (and other functions which call those).
• QuickRank => ..., default value true, An option for computing how rank is computed
• Strategy => ..., default value HybridStrategy, Determines the desired Strategy in each function.
• Verbose => ..., default value true, generate informative output
• Outputs:
• s, , an element of the coordinate ring of $X$ .

## Description

Given a map $f : X \to Y$, this finds common factor among the the components of, $f^{(-1)}$ composed with $f$, which is an element of the coordinate ring of $X$ .

If AssumeDominant is set to true (default is false) then it assumes that the map of varieties is dominant, otherwise the function will compute the image by finding the kernel of $f$.

The Strategy option can be set to HybridStrategy (default), SimisStrategy, ReesStrategy, or SaturationStrategy. Note SimisStrategy will never terminate for non-birational maps. If CheckBirational is set to false (default is true), then no check for birationality will be done. If it is set to true and the map is not birational, an error will be thrown if you are not using SimisStrategy. The option HybridLimit can weight the HybridStrategy between ReesStrategy and SimisStrategy, the default value is 15 and increasing it will weight towards SimisStrategy.

 i1 : R = ZZ/7[x,y,z]; i2 : S = ZZ/7[a,b,c]; i3 : h = map(R, S, {y*z, x*z, x*y}); o3 : RingMap R <--- S i4 : sourceInversionFactor h sourceInversionFactor: About to find the image of the map. If you know the image, you may want to use the AssumeDominant option if this is slow. Starting inverseOfMapSimis(SimisStrategy or HybridStrategy) inverseOfMapSimis: About to find the image of the map. If you know the image, you may want to use the AssumeDominant option if this is slow. inverseOfMapSimis: Found the image of the map. inverseOfMapSimis: About to compute partial Groebner basis of rees ideal up to degree {1, 1}. inverseOfMapSimis: About to check rank, if this is very slow, you may try turning QuickRank=>false. inverseOfMapSimis: We computed enough of the Groebner basis. inverseOfMapSimis: Found Jacobian dual matrix (or a weak form of it), it has 3 columns and about 2 rows. inverseOfMapSimis: MinorsCount => 0, so we now compute syzygies instead. If this doesn't terminate quickly, you may want to try increasing the option MinorsCount. o4 = x*y*z o4 : R
 i5 : S=QQ[a,b,c,d]; i6 : g=(b^2-a*c)*c*d; i7 : phi=map(S,S,transpose jacobian ideal g); o7 : RingMap S <--- S i8 : sourceInversionFactor(phi, Verbose=>false) 2 4 2 5 2 o8 = b c d - a*c d o8 : S

## Caveat

Only works for irreducible varieties right now. Also see the function inverseMap in the package Cremona, which for certain types of maps from projective space is sometimes faster. Additionally, also compare with the function invertBirationalMap of the package Parametrization.

## Ways to use sourceInversionFactor :

• "sourceInversionFactor(RingMap)"

## For the programmer

The object sourceInversionFactor is .