Macaulay2 » Documentation
Packages » RationalMaps :: isBirationalMap
next | previous | forward | backward | up | index | toc

# isBirationalMap -- whether a map between projective varieties is birational

- Usage:
    `val = isBirationalMap(Pi)`
    `val = isBirationalMap(phi)`
- Inputs:
  - Pi, a ring map, a ring map S to R corresponding to X mapping to Y
  - phi, an instance of the type RationalMapping, a rational map between projective varieties X to Y
- Optional inputs:
  - Verbosity => an integer, default value 1, if 0 then silence the function, if 1 then generate informative output which can be used to adjust strategies, if > 1 then generate a detailed description of the execution
  - AssumeDominant => a Boolean value, default value false, whether to assume the provided rational map of projective varieties is dominant, if set to true it can speed up computation
  - Strategy => a symbol, default value HybridStrategy, choose the strategy to use: HybridStrategy, SimisStrategy, or ReesStrategy
  - HybridLimit => an integer, default value 15, within HybridStrategy, within HybridStrategy, the option HybridLimit controls how often SimisStrategy and ReesStrategy are used
  - MinorsLimit => an integer, default value null, how many submatrices of a variant of the Jacobian dual matrix to consider before switching to a different strategy
  - QuickRank => a Boolean value, default value true, whether to compute rank via the package FastMinors
- Outputs:
  - val, a Boolean value, true if the map is birational, false if otherwise

## Description

The function isBirationalMap computes whether a map between projective varieties is birational. The option AssumeDominant being true will cause the function to assume that the kernel of the associated ring map is zero (default value is false). The target and source must be varieties; their defining ideals must be prime. Let's check that the plane quadratic Cremona transformation is birational.

    i1 : R=QQ[x,y,z];

    i2 : S=QQ[a,b,c];

    i3 : Pi = map(R, S, {x*y, x*z, y*z});

    o3 : RingMap R <-- S

    i4 : isBirationalMap(Pi, Verbosity=>0, Strategy=>SimisStrategy )

    o4 = true

We can also verify that a cover of $P^1$ by an elliptic curve is not birational.

    i5 : R=QQ[x,y,z]/(x^3+y^3-z^3);

    i6 : S=QQ[s,t];

    i7 : Pi = map(R, S, {x, y-z});

    o7 : RingMap R <-- S

    i8 : isBirationalMap(Pi, Verbosity=>0)

    o8 = false

Note that the Frobenius map is not birational.

    i9 : R = ZZ/5[x,y,z]/(x^3+y^3-z^3);

    i10 : S = ZZ/5[a,b,c]/(a^3+b^3-b^3);

    i11 : h = map(R, S, {x^5, y^5, z^5});

    o11 : RingMap R <-- S

    i12 : isBirationalMap(h, Strategy=>SaturationStrategy)
    isBirationalMap: 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.
    isBirationalOntoImageRees:  About to compute the Jacobian Dual Matrix,
             if it is slow, run again and  set Strategy=>HybridStrategy or SimisStrategy.
    isBirationalOntoImageRees: computed Jacobian dual matrix

    o12 = false

## Caveat

Also see the very fast probabilistic birationality checking of the Cremona package: isBirational.

## See also

- isBirationalOntoImage -- whether a map between projective varieties is birational onto its image
- HybridStrategy -- A strategy for determining whether a map is birational and computing its inverse
- SimisStrategy -- a strategy for determining whether a map is birational and computing its inverse
- ReesStrategy -- a strategy for determining whether a map is birational and computing its inverse

## Ways to use isBirationalMap:

- `isBirationalMap(RationalMapping)`
- `isBirationalMap(RingMap)`

## For the programmer

The object isBirationalMap is a method function with options.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/RationalMaps.m2:1737:0.