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 |