next | previous | forward | backward | up | top | index | toc | Macaulay2 website
AssociativeAlgebras :: Defining a noncommutative ring

Defining a noncommutative ring

A noncommutative ring is a Ring of subclass FreeAlgebra or FreeAlgebraQuotient.

In addition to defining a ring as a quotient of a FreeAlgebra, some common ways to create noncommutative rings include skewPolynomialRing and oreExtension.

Let's consider a three dimensional Sklyanin algebra. We first define the free algebra on the variables x,y,z:

i1 : A = QQ<|x,y,z|>

o1 = A

o1 : FreeAlgebra

Then input the defining relations, and put them in an ideal:

i2 : f = y*z + z*y - x^2

        2
o2 = - x  + y*z + z*y

o2 : A
i3 : g = x*z + z*x - y^2

            2
o3 = x*z - y  + z*x

o3 : A
i4 : h = z^2 - x*y - y*x

                    2
o4 = - x*y - y*x + z

o4 : A
i5 : I = ideal{f,g,h}

               2                     2                       2
o5 = ideal (- x  + y*z + z*y, x*z - y  + z*x, - x*y - y*x + z )

o5 : Ideal of A

Next, we will define the quotient ring (as well as try a few functions on this new ring). Note that when the quotient ring is defined, Macaulay2 computes the Groebner basis of I (out to a certain degree, should the Groebner basis be infinite).

i6 : B=A/I

o6 = B

o6 : FreeAlgebraQuotient
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 now an element of the quotient $B$.

i11 : x

o11 = x

o11 : B

If we define a new ring containing x, x is now part of that new ring. For example, we can use the following command to define the (-1)-skew polynomial ring on the variables x,y,z,w:

i12 : C = skewPolynomialRing(QQ,(-1)_QQ,{x,y,z,w})

o12 = C

o12 : FreeAlgebraQuotient
i13 : x

o13 = x

o13 : C

We can 'go back' to B using the command use(Ring).

i14 : use B

o14 = B

o14 : FreeAlgebraQuotient
i15 : x

o15 = x

o15 : B
i16 : use C

o16 = C

o16 : FreeAlgebraQuotient

We can also create an Ore extension. First define a RingMap with map.

i17 : sigma = map(C,C,{y,z,w,x})

o17 = map (C, C, {y, z, w, x})

o17 : RingMap C <--- C

Then call the command oreExtension.

i18 : D = oreExtension(C,sigma,a)

o18 = D

o18 : FreeAlgebraQuotient
i19 : generators D

o19 = {x, y, z, w, a}

o19 : List
i20 : numgens D

o20 = 5

See also