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 ]