All noncommutative rings have this as an ancestor type. It is the parent of the types NCPolynomialRing and NCQuotientRing.
In addition to defining a ring as a quotient of a NCPolynomialRing, some common ways to create NCRings include skewPolynomialRing, endomorphismRing, and oreExtension.
Let's consider a three dimensional Sklyanin algebra. We first define the tensor algebra:
i1 : A = QQ{x,y,z} o1 = A o1 : NCPolynomialRing |
Then input the defining relations, and put them in an ideal:
i2 : f = y*z + z*y - x^2 2 o2 = zy+yz-x o2 : A |
i3 : g = x*z + z*x - y^2 2 o3 = zx-y +xz o3 : A |
i4 : h = z^2 - x*y - y*x 2 o4 = z -yx-xy o4 : A |
i5 : I=ncIdeal{f,g,h} 2 2 2 o5 = Two-sided ideal {zy+yz-x , zx-y +xz, z -yx-xy} o5 : NCIdeal |
Next, define the quotient ring (as well as try a few functions on this new ring). Note that when the quotient ring is defined, a call is made to Bergman to compute the Groebner basis of I (out to a certain degree, should the Groebner basis be infinite).
i6 : B=A/I --Calling Bergman for NCGB calculation. Complete! o6 = B o6 : NCQuotientRing |
i7 : generators B o7 = {x, y, z} o7 : List |
i8 : numgens B o8 = 3 |
i9 : isCommutative B o9 = false |
i10 : coefficientRing B o10 = QQ o10 : Ring |
As we can see, x is an element of B.
i11 : x o11 = x o11 : B |
If we define a new ring containing x, x is now part of that new ring
i12 : C = skewPolynomialRing(QQ,(-1)_QQ,{x,y,z,w}) --Calling Bergman for NCGB calculation. Complete! o12 = C o12 : NCQuotientRing |
i13 : x o13 = x o13 : C |
We can 'go back' to B using the command use(NCRing).
i14 : use B o14 = B o14 : NCQuotientRing |
i15 : x o15 = x o15 : B |
i16 : use C o16 = C o16 : NCQuotientRing |
i17 : sigma = ncMap(C,C,{y,z,w,x}) o17 = NCRingMap C <--- C o17 : NCRingMap |
Then call the command oreExtension.
i18 : D = oreExtension(C,sigma,a) --Calling Bergman for NCGB calculation. Complete! o18 = D o18 : NCQuotientRing |
i19 : generators D o19 = {x, y, z, w, a} o19 : List |
i20 : numgens D o20 = 5 |