Magma includes functions for working with maps between multivariate
polynomial rings.
Let R=K_1[x_1, ..., x_n] and S=K_2[y_1, ..., y_m]
be a polynomial rings over the fields K_1, K_2, and
f : R to S a ring homomorphism.
PolyMapKernel(f) : Map -> RngMPol
Return the kernel of f as an ideal in R, i.e., the set { a in R | f(a) = 0 }.
Given an element p in S, returns true if p is in the image of f.
Return true if and only if f is surjective.
Suppose the polynomial map phi: K^n to K^m is a parametrization of a variety V, i.e., V is the image of phi in K^m. This function constructs the ideal of S corresponding to V.The map phi maps (z_1, ..., z_n) |-> (f_1(z_1), ..., f_m(z_m)) where the z_i are the coordinates of K^n. Let f: S to R be the map of polynomial rings defined by (y_1, ..., y_m) |-> (f_1(y_1), ..., f_m(y_m)). Then Implicitization(f) is the ideal of S corresponding to V.
If V is not a true variety, the function returns the smallest variety containing V (the Zariski closure of V).
> R<x, y> := PolynomialRing(Rationals(), 2);
> S<r, u, v, w> := PolynomialRing(Rationals(), 4);
> f := hom<S -> R |x^4, x^3*y, x*y^3, y^4>;
> Implicitization(f);
Ideal of Polynomial ring of rank 4 over Rational Field
Lexicographical Order
Variables: r, u, v, w
Basis:
[
-r^2*v + u^3,
r*v^2 - u^2*w,
-u*w^2 + v^3,
-r*w + u*v
]