R and S must be rings created by buildERing. Each orbit of variables in S consists of variables of the form x_{(i_1,...,i_k)} for some width k. L is a list that for each such orbit gives the desired image of x_{(0,...,k-1)}. The rest of the map is extrapolated from these value.
i1 : R = buildERing({symbol x, symbol y}, {1,1}, QQ, 3); |
i2 : vars R o2 = | x_2 x_1 x_0 y_2 y_1 y_0 | 1 6 o2 : Matrix R <--- R |
i3 : n = buildEMonomialMap(R,R,{x_0,x_0^3}) 3 3 3 o3 = map (R, R, {x , x , x , x , x , x }) 2 1 0 2 1 0 o3 : RingMap R <--- R |
i4 : n(x_1^3*y_0) 3 3 o4 = x x 1 0 o4 : R |
i5 : S = buildERing({symbol z}, {2}, QQ, 3); |
i6 : vars S o6 = | z_(2,2) z_(2,1) z_(2,0) z_(1,2) z_(1,1) z_(1,0) z_(0,2) z_(0,1) ------------------------------------------------------------------------ z_(0,0) | 1 9 o6 : Matrix S <--- S |
i7 : m = buildEMonomialMap(R,S,{x_0^2*y_1}) 2 2 2 2 2 2 2 2 2 o7 = map (R, S, {x y , x y , x y , x y , x y , x y , x y , x y , x y }) 2 2 2 1 2 0 1 2 1 1 1 0 0 2 0 1 0 0 o7 : RingMap R <--- S |
i8 : m(z_(1,2)) 2 o8 = x y 1 2 o8 : R |
If a given variable orbit of S has k indices, then the target monomial list in L should only use indices between 0 and k-1.
The object buildEMonomialMap is a method function.