next | previous | forward | backward | up | top | index | toc | packages | Macaulay2 website
RationalMaps :: isBirationalMap

isBirationalMap -- whether a map between projective varieties is birational



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


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

See also

Ways to use isBirationalMap :

For the programmer

The object isBirationalMap is a method function with options.