Given a ringmap map $f: A \to B$, this writes $B$ as $A[...]/J$. It returns the ring $A[...]/J$ as well as the isomorphim $B \to A[...]/J$. Consider the first example, a normalization of a cusp.
i1 : A = QQ[a,b]/ideal(a^2-b^3); |
i2 : B = QQ[t]; |
i3 : f = map(B, A, {t^3, t^2}); o3 : RingMap B <--- A |
i4 : (ringToAlgebraMap(f))#0 A[tRE1] o4 = -------------------------------------- 2 2 (tRE1 - b, b*tRE1 - a, - a*tRE1 + b ) o4 : QuotientRing |
i5 : (ringToAlgebraMap(f))#1 A[tRE1] o5 = map(--------------------------------------,B,{tRE1}) 2 2 (tRE1 - b, b*tRE1 - a, - a*tRE1 + b ) A[tRE1] o5 : RingMap -------------------------------------- <--- B 2 2 (tRE1 - b, b*tRE1 - a, - a*tRE1 + b ) |
The second input is used to specify an integer used for new variable enumeration and labeling. Here is another example where we consider the Frobenius map.
i6 : A = ZZ/5[x,y,z]/ideal(x^2-y*z); |
i7 : B = ZZ/5[X,Y,Z]/ideal(X^2-Y*Z); |
i8 : f = map(B, A, {X^5, Y^5, Z^5}); o8 : RingMap B <--- A |
i9 : (ringToAlgebraMap(f))#0 A[XRE1, YRE1, ZRE1] o9 = ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 3 2 3 2 2 3 2 3 5 2 2 5 3 3 (XRE1 - YRE1*ZRE1, z*YRE1 - x*XRE1*ZRE1 , x*YRE1 - y*XRE1*ZRE1 , z*XRE1*YRE1 - x*ZRE1 , x*XRE1*YRE1 - y*ZRE1 , ZRE1 - z, XRE1*YRE1 ZRE1 - x, YRE1 - y, YRE1 ZRE1 - x*XRE1) o9 : QuotientRing |
i10 : (ringToAlgebraMap(f, 5))#0 A[XRE5, YRE5, ZRE5] o10 = ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 3 2 3 2 2 3 2 3 5 2 2 5 3 3 (XRE5 - YRE5*ZRE5, z*YRE5 - x*XRE5*ZRE5 , x*YRE5 - y*XRE5*ZRE5 , z*XRE5*YRE5 - x*ZRE5 , x*XRE5*YRE5 - y*ZRE5 , ZRE5 - z, XRE5*YRE5 ZRE5 - x, YRE5 - y, YRE5 ZRE5 - x*XRE5) o10 : QuotientRing |
The object ringToAlgebraMap is a method function.