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

# isEmbedding -- whether a rational map of projective varieties is a closed embedding

- Usage:
    `val = isEmbedding(f)`
    `val = isEmbedding(phi)`
- Inputs:
  - f, a ring map, the ring map corresponding to $f : X \to Y$
  - phi, an instance of the type RationalMapping, a rational map of projective varieties, $f : 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, the option HybridLimit controls how often SimisStrategy and ReesStrategy are used, larger numbers means SimisStrategy will be executed longer
  - MinorsLimit => an integer, default value 0, 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 an embedding, otherwise false.

## Description

Given a map of rings, corresponding to a rational map $f : X \to Y$, isEmbedding determines whether $f$ map embeds $X$ as a closed subscheme into $Y$. The target and source must be varieties; their defining ideals must be prime. Consider the Veronese embedding.

    i1 : R = ZZ/7[x,y];

    i2 : S = ZZ/7[a,b,c];

    i3 : h = map(R, S, {x^2, x*y, y^2});

    o3 : RingMap R <-- S

    i4 : isEmbedding(h, Verbosity=>1)
    isEmbedding: 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: About to check rank, if this is very slow, you may want to try turning QuickRank=>false.
    inverseOfMapSimis: rank found, we computed enough of the Groebner basis.

    o4 = true

If the option Verbosity is set to 2, the function will produce very detailed output. Setting it to 0 will suppress output such output. Now consider the projection from a point on the plane to the line at infinity.

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

    i6 : S=QQ[a,b];

    i7 : h=rationalMapping(R, S, {y,z});

    i8 : isEmbedding(h, Verbosity=>0)

    o8 = false

That is obviously not an embedding. It is even not an embedding when we restrict to a quadratic curve, even though it is a regular map.

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

    i10 : S=QQ[a,b];

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

    o11 : RingMap R <-- S

    i12 : isRegularMap(h)

    o12 = true

    i13 : isEmbedding(h, Verbosity=>0)

    o13 = false

If the option AssumeDominant is set to true, the function won't compute the kernel of the ring map. Otherwise it will.

The remaining options, Strategy, HybridLimit, MinorsLimit, and CheckBirational are simply passed when isEmbedding calls inverseOfMap. Note, this function, isEmbedding, will only behave properly if CheckBirational is set to true.

We conclude by considering the map from $P^1$ to a cuspidal curve in $P^2$. This is not an embedding, but if we take the strict transform in the blowup of $P^2$, it is an embedding.

    i14 : R = ZZ/103[x,y,z];

    i15 : T = ZZ/103[u,v];

    i16 : P2 = Proj R;

    i17 : P1 = Proj T;

    i18 : phi = rationalMapping(P2, P1, {u^3, u^2*v, v^3});

    i19 : isEmbedding(phi, Verbosity=>0)

    o19 = false

    i20 : P5ring = ZZ/103[a..f];

    i21 : M = matrix{{a,b,c},{d,e,f}};

                       2           3
    o21 : Matrix P5ring  <-- P5ring

    i22 : blowUpSubvar = Proj(P5ring/(minors(2, M)+ideal(b - d)));

    i23 : tau = rationalMapping(P2, blowUpSubvar,{a, b, c}); --the blowup

    i24 : tauInverse = tau^-1; --the inverse blowup

    i25 : isEmbedding(tauInverse*phi, Verbosity => 0)

    o25 = true

## See also

- 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 isEmbedding:

- `isEmbedding(RationalMapping)`
- `isEmbedding(RingMap)`

## For the programmer

The object isEmbedding 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:2021:0.