Given a map of rings, correspoing to $f : X \to Y$, this determines if this map embeds $X$ as a closed subscheme into $Y$. The target and source must be varieties, in particular their defining ideals must be prime. Consider the Veronese embedding.
i1 : R = ZZ/7[x,y]; |
i2 : S = ZZ/7[a,b,c]; |
i3 : f = map(R, S, {x^2, x*y, y^2}); o3 : RingMap R <--- S |
i4 : isEmbedding(f, Verbose=>false) o4 = true |
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 : f=map(R, S, {y,z}); o7 : RingMap R <--- S |
i8 : isEmbedding(f, Verbose=>false) 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 : f=map(R,S, {y,z}); o11 : RingMap R <--- S |
i12 : isRegularMap(f) o12 = true |
i13 : isEmbedding(f) 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. isEmbedding: Checking to see if the map is a regular map isEmbedding: computing the inverse map Starting inverseOfMapSimis(SimisStrategy or HybridStrategy) 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: About to compute partial Groebner basis of rees ideal up to degree {1, 2}. inverseOfMapSimis: About to check rank, if this is very slow, you may try turning QuickRank=>false. inverseOfMapSimis: About to compute partial Groebner basis of rees ideal up to degree {1, 4}. inverseOfMapSimis: About to check rank, if this is very slow, you may try turning QuickRank=>false. inverseOfMapSimis: About to compute partial Groebner basis of rees ideal up to degree {1, 7}. inverseOfMapSimis: About to check rank, if this is very slow, you may try turning QuickRank=>false. inverseOfMapSimis: About to compute partial Groebner basis of rees ideal up to degree {1, 11}. inverseOfMapSimis: About to check rank, if this is very slow, you may try turning QuickRank=>false. inverseOfMapSimis: About to compute partial Groebner basis of rees ideal up to degree {1, 16}. inverseOfMapSimis: We give up. Using the previous computations, we compute the whole Groebner basis of the rees ideal. Increase HybridLimit and rerun to avoid this. isRankAtLeast: Going to single threaded version. o13 = false |
If the option Verbose is set to true, the function will describe what it is doing at each step.
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, MinorsCount, and CheckBirational are simply passed when this function calls inverseOfMap. Note, this function, isEmbedding, will only behave properly if CheckBirational is set to true.
The object isEmbedding is a method function with options.