NCRingMaps are linear and multiplicative by definition, but need not be well-defined or homogeneous. The user has the option to define an NCRingMap to be a derivation. Such a map must have the same source and target.
i1 : A = skewPolynomialRing(QQ,(-1)_QQ,{w,x,y,z})
--Calling Bergman for NCGB calculation.
Complete!
o1 = A
o1 : NCQuotientRing
|
i2 : B = QQ{a,b,c}
o2 = B
o2 : NCPolynomialRing
|
i3 : f = ncMap(B,A,{a^3,b^2,a+b,a-b})
o3 = NCRingMap B <--- A
o3 : NCRingMap
|
i4 : f(w*x+2*y)
3 2
o4 = 2b+a b +2a
o4 : B
|
i5 : g = ncMap(B,B,{a*b,b^2,c*a*c},Derivation=>true)
o5 = NCRingMap B <--- B
o5 : NCRingMap
|
i6 : g(a*b)==g(a)*b+a*g(b) o6 = true |
i7 : g(promote(1,B)) o7 = 0 o7 : B |
i8 : g(c*a+2*b)
2
o8 = caca+cab+2b
o8 : B
|
The object ncMap is a method function with options.