A new type of scheme map, a scheme graph map of type MapSchGrph, has
been introduced as an alternative to the current MapSch maps. These
are produced by certain intrinsics in the new coherent sheaves module and
there is also a basic construction intrinsic for general use. They are
currently only available for maps between ordinary projective schemes.
Graph maps are defined intrinsically by the closure of the graph G of a
rational map
X
Y. For computational ease, we take G as a
subscheme of the product of the ambients of X and Y - a
product projective space. Functionally, it is defined by a bihomogenous
ideal in a polynomial ring with n + m + 2 variables, where n (resp. m)
is the dimension of the ambient of X (resp. Y).
There is a simple basic intrinsic SchemeGraphMap for the construction
of such a map by the user. The arguments are the domain X, the codomain Y
and an ideal I defining the graph in an n + m + 2 variable polynomial ring
P as described above. P must have the grevlex ordering. I must be large
enough to define the graph pointwise as a scheme. A naturally-defined I
will often not be the maximal defining ideal, but the intrinsic automatically
saturates it with respect to a suitable domain variable (unless the user
indicates that this has already occurred via a Saturated parameter)
which is functionally all that is required. This is a rather primitive
constructor with only minimal checking on the input data. Graph maps are
more naturally constructed and returned from functions such as
DivisorMap(S), where S is an invertible sheaf.
Graph maps have most of the functionality of MapSch maps including
IsInvertible and Expand. The major difference currently is that
it is not possible to ask for the image or preimage under a graph
map of a point in a pointset over a proper extension of the base field.
Graph maps can be composed, but not mixed with MapSch maps.
The graph map format has some advantages over that of MapSch for a
number of function calls. A graph map is automatically maximally defined, so
Extend and alternative equations are unnecessary. Computation of
images of subschemes of the domain or of the inverse of a map go, in one
way or another, through the graph of the map, so it is more efficient
to already have it in graph form. For an invertible graph map, separate
inverse equations are not required. It is only necessary to record that
it is invertible (and saturate by a codomain variable) and consider the
reverse of the graph.
There is a function SchemeGraphMapToSchemeMap that converts a graph
map f into an equivalent MapSch. If f is known invertible, this
also computes inverse defining polynomials. It should be noted that for
maps between complicated schemes, this often produces a MapSch with
extremely high degree defining polynomials and a large base scheme where it
is not defined. In such cases, the original MapSchGrph is a
functionally much more efficient representation.