newCoordinateSystem(S,m) -- takes a one-rowed matrix m of
independent linear forms over a ring R and returns a list
{f,g}, where f is a ring map given by some linear change
of coordinates from R to S which sends the last variables
of R to the forms in m, and g is the inverse
of f.
The ring S should have the same number of variables as
S.
i1 : R = ZZ/101[a..d]
o1 = R
o1 : PolynomialRing
i2 : S = ZZ/101[p..s]
o2 = S
o2 : PolynomialRing
i3 : newCoordinateSystem(S,matrix{{a+2*b,3*c-d}})
o3 = {map(S,R,{q, s, p + 2q, 3r - s}), map(R,S,{- 2a + c, a, 34b + 34d, b})}