# AssociativeAlgebras -- Noncommutative algebra computations

## Description

This code is in active development. Currently 2-sided Groebner bases (up to some degree) are implemented, and most features of NCAlgebra are available. The package NCAlgebra uses curly braces to define non-commutative rings whereas this package uses angle bar lists.

This package implements natively (i.e., in the Macaulay2 engine) non-commutative rings (associative algebras), their (2-sided) Groebner bases, bases, and a number of other features.

 i1 : R = ZZ/32003<|a,b,c|> o1 = R o1 : FreeAlgebra i2 : I = ideal(2*a*b + 3*b*a + 5*c^2, 2*b*c + 3*c*b + 5*a^2, 2*c*a + 3*a*c + 5*b^2) 2 2 2 o2 = ideal (2a*b + 3b*a + 5c , 5a + 2b*c + 3c*b, 3a*c + 5b + 2c*a) o2 : Ideal of R i3 : gbI = NCGB(I, 6); 1 13 o3 : Matrix R <--- R i4 : netList (ideal gbI)_* +------------------------------------------------------------------------------------------------------------------------------------+ | 2 | o4 = |a*b - 16000b*a - 15999c | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 | |a + 6401b*c - 6400c*b | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 | |a*c - 10666b - 10667c*a | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 2 | |b c + 13552b*c*b + 10667c*b + 12138c a | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 2 | |b a - 8487b*c - 8961c*b*c + 5658c b | +------------------------------------------------------------------------------------------------------------------------------------+ | 4 3 2 2 3 | |b + 13781b*c*b*a - 7709b*c - 11562c*b*c + 2217c b*c - 12677c b | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 3 2 4 | |b*c*b - 14216b*c a - 7130c*b + 14570c*b*c*a - 938c b*a + 2648c | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 4 3 2 2 3 4 | |b*c*b*c*a - 10377b*c b*a - 12227b*c + 7414c*b*c*b*a + 13359c*b*c + 1731c b*c + 11348c b*c - 431c b | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 3 2 3 2 3 5 | |b*c*b*c*b + 12415b*c b - 12892b*c a + 3317c b - 6253c b*c*a - 449c b*a - 4931c | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 3 2 2 3 2 4 | |b*c*b*c - 10224b*c b*c + 437b*c b + 24c*b*c*b*c + 35c*b*c b + 2451c b*c*b - 413c b + 10924c a | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 2 3 4 2 3 2 2 2 3 4 2 5 | |b*c b*c - 1629b*c b*c + 7434b*c b + 12905c*b*c b*c + 7093c*b*c b + 12717c b*c*b*c - 9457c b*c b + 2889c b*c*b + 3746c b - 12788c a| +------------------------------------------------------------------------------------------------------------------------------------+ | 2 3 3 5 2 4 2 2 3 3 2 4 5 | |b*c b - 3116b*c b*a - 869b*c - 12458c*b*c b*a - 15666c*b*c - 6767c b*c*b*a - 9927c b*c + 3248c b*c - 5349c b*c + 11498c b | +------------------------------------------------------------------------------------------------------------------------------------+ | 2 3 5 2 4 2 2 3 3 2 4 5 | |b*c b*c*a + 13268b*c b*a + 3067b*c + 7496c*b*c b*a + 8969c*b*c - 4451c b*c*b*a + 14180c b*c + 13165c b*c - 8289c b*c - 3102c b | +------------------------------------------------------------------------------------------------------------------------------------+ i5 : A = R/I -- only uses the Groebner basis already constructed, so only valid in degrees <= 6 o5 = A o5 : FreeAlgebraQuotient i6 : ncBasis(3, A) o6 = | b3 bca bcb bc2 cba cb2 cbc c2a c2b c3 | 1 10 o6 : Matrix A <--- A

## Caveat

Not yet fully functional. This package is a current work in progress. The interface will change (even basic things like Groebner bases and the basis command still need to be hooked into the Macaulay2 groebnerBasis, basis commands), and more functionality is expected to be added.

## Version

This documentation describes version 0.8 of AssociativeAlgebras.

## Source code

The source code from which this documentation is derived is in the file AssociativeAlgebras.m2. The auxiliary files accompanying it are in the directory AssociativeAlgebras/.

## Exports

• Types
• Functions and commands
• centralElements -- Finds central elements in a given degree
• "derivation" -- see Derivation -- Derivation defined on a noncommutative algebra
• endomorphismRingIdeal -- Find the relations of an endomorphism ring
• extAlgebra -- Compute the Ext algebra of a ring
• fourDimSklyanin -- Defines a four-dimensional Sklyanin with given parameters
• freeAlgebra -- Create a FreeAlgebra
• freeProduct -- Define the free product of two algebras
• homogDual -- Computes the dual of a pure homogeneous ideal
• isCentral -- Determines if an element is central
• isLeftRegular -- Determines if a given (homogeneous) element is regular in a given degree
• "isRightRegular" -- see isLeftRegular -- Determines if a given (homogeneous) element is regular in a given degree
• leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "rightMultiplicationMap" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• "rightQuadraticMatrix" -- see leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• lineSchemeFourDim -- Compute the line scheme of a four-dimensional AS regular algebra
• ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• NCGB -- Compute a two-sided Groebner basis of an ideal to a specified degree
• ncGraphIdeal -- Compute the graph ideal of a ring map between noncommutative rings.
• ncHilbertSeries -- Computes the Hilbert series of a noncommutative ring
• ncKernel -- Compute the graph ideal of a ring map between noncommutative rings.
• ncMatrixMult -- Correctly multiplies matrices from noncommutative rings.
• NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• normalAutomorphism -- Computes the automorphism determined by a normal homogeneous element
• normalElements -- Finds normal elements
• oppositeRing -- Creates the opposite ring of a noncommutative ring
• oreExtension -- Creates an Ore extension of a noncommutative ring
• oreIdeal -- Creates the defining ideal of an Ore extension of a noncommutative ring
• pointScheme -- Compute the point scheme of the quadratic algebra B
• qTensorProduct -- Define the (q-)commuting tensor product
• quadraticClosure -- Creates the subideal generated by quadratic elements of a given ideal
• rightKernel -- Right kernel of a matrix
• skewPolynomialRing -- Defines a skew polynomial ring via a skewing matrix
• threeDimSklyanin -- Defines a three-dimensional Sklyanin with given parameters
• toCommRing -- Compute the abelianization of a Ring and returns a Ring.
• toFreeAlgebraQuotient -- Converts a Ring to a noncommutative ring
• toRationalFunction -- Attempt to find a rational function representation.
• Methods
• "centralElements(Ring,ZZ)" -- see centralElements -- Finds central elements in a given degree
• "Derivation RingElement" -- see Derivation -- Derivation defined on a noncommutative algebra
• "Derivation ZZ" -- see Derivation -- Derivation defined on a noncommutative algebra
• "derivation(FreeAlgebra,List)" -- see Derivation -- Derivation defined on a noncommutative algebra
• "derivation(FreeAlgebra,List,RingMap)" -- see Derivation -- Derivation defined on a noncommutative algebra
• "derivation(FreeAlgebraQuotient,List)" -- see Derivation -- Derivation defined on a noncommutative algebra
• "derivation(FreeAlgebraQuotient,List,RingMap)" -- see Derivation -- Derivation defined on a noncommutative algebra
• "endomorphismRingIdeal(Module,Symbol)" -- see endomorphismRingIdeal -- Find the relations of an endomorphism ring
• "extAlgebra(Ring,Symbol)" -- see extAlgebra -- Compute the Ext algebra of a ring
• "fourDimSklyanin(Ring,List)" -- see fourDimSklyanin -- Defines a four-dimensional Sklyanin with given parameters
• "fourDimSklyanin(Ring,List,List)" -- see fourDimSklyanin -- Defines a four-dimensional Sklyanin with given parameters
• "freeAlgebra(Ring,BasicList)" -- see freeAlgebra -- Create a FreeAlgebra
• FreeAlgebra / Ideal -- Type of a noncommutative ring
• "freeProduct(Ring,Ring)" -- see freeProduct -- Define the free product of two algebras
• "homogDual(FreeAlgebra)" -- see homogDual -- Computes the dual of a pure homogeneous ideal
• "homogDual(FreeAlgebraQuotient)" -- see homogDual -- Computes the dual of a pure homogeneous ideal
• "homogDual(Ideal)" -- see homogDual -- Computes the dual of a pure homogeneous ideal
• "isCentral(RingElement)" -- see isCentral -- Determines if an element is central
• "isLeftRegular(RingElement,ZZ)" -- see isLeftRegular -- Determines if a given (homogeneous) element is regular in a given degree
• "isRightRegular(RingElement,ZZ)" -- see isLeftRegular -- Determines if a given (homogeneous) element is regular in a given degree
• "leftMultiplicationMap(RingElement,List,List)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "leftMultiplicationMap(RingElement,ZZ)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "leftMultiplicationMap(RingElement,ZZ,ZZ)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "rightMultiplicationMap(RingElement,List,List)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "rightMultiplicationMap(RingElement,ZZ)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "rightMultiplicationMap(RingElement,ZZ,ZZ)" -- see leftMultiplicationMap -- Computes a matrix for left or right multiplication by a homogeneous element
• "leftQuadraticMatrix(Ideal)" -- see leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• "leftQuadraticMatrix(List)" -- see leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• "rightQuadraticMatrix(Ideal)" -- see leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• "rightQuadraticMatrix(List)" -- see leftQuadraticMatrix -- Factors the quadratic ideal on the left or on the right.
• "lineSchemeFourDim(FreeAlgebraQuotient,Symbol)" -- see lineSchemeFourDim -- Compute the line scheme of a four-dimensional AS regular algebra
• "ncBasis(InfiniteNumber,InfiniteNumber,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(InfiniteNumber,List,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(InfiniteNumber,ZZ,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(List,InfiniteNumber,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(List,List,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(List,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(ZZ,InfiniteNumber,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(ZZ,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "ncBasis(ZZ,ZZ,Ring)" -- see ncBasis -- Returns a basis of an noncommutative ring in specified degrees.
• "NCGB(Ideal)" -- see NCGB -- Compute a two-sided Groebner basis of an ideal to a specified degree
• "NCGB(Ideal,ZZ)" -- see NCGB -- Compute a two-sided Groebner basis of an ideal to a specified degree
• "ncGraphIdeal(RingMap)" -- see ncGraphIdeal -- Compute the graph ideal of a ring map between noncommutative rings.
• "ncHilbertSeries(FreeAlgebra)" -- see ncHilbertSeries -- Computes the Hilbert series of a noncommutative ring
• "ncHilbertSeries(FreeAlgebraQuotient)" -- see ncHilbertSeries -- Computes the Hilbert series of a noncommutative ring
• "ncKernel(RingMap)" -- see ncKernel -- Compute the graph ideal of a ring map between noncommutative rings.
• "ncMatrixMult(Matrix,Matrix)" -- see ncMatrixMult -- Correctly multiplies matrices from noncommutative rings.
• "NCReductionTwoSided(Matrix,Ideal)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "NCReductionTwoSided(Matrix,List)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "NCReductionTwoSided(Matrix,Matrix)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "NCReductionTwoSided(RingElement,Ideal)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "NCReductionTwoSided(RingElement,List)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "NCReductionTwoSided(RingElement,Matrix)" -- see NCReductionTwoSided -- Reduces the entries of an Matrix with respect to an ideal
• "normalAutomorphism(RingElement)" -- see normalAutomorphism -- Computes the automorphism determined by a normal homogeneous element
• "normalElements(FreeAlgebraQuotient,ZZ,Symbol)" -- see normalElements -- Finds normal elements
• normalElements(RingMap,ZZ) -- Finds elements normalized by a ring map
• "oppositeRing(FreeAlgebra)" -- see oppositeRing -- Creates the opposite ring of a noncommutative ring
• "oppositeRing(FreeAlgebraQuotient)" -- see oppositeRing -- Creates the opposite ring of a noncommutative ring
• "oreExtension(Ring,RingMap,Derivation,RingElement)" -- see oreExtension -- Creates an Ore extension of a noncommutative ring
• "oreExtension(Ring,RingMap,Derivation,Symbol)" -- see oreExtension -- Creates an Ore extension of a noncommutative ring
• "oreExtension(Ring,RingMap,RingElement)" -- see oreExtension -- Creates an Ore extension of a noncommutative ring
• "oreExtension(Ring,RingMap,Symbol)" -- see oreExtension -- Creates an Ore extension of a noncommutative ring
• "oreIdeal(Ring,RingMap,Derivation,RingElement)" -- see oreIdeal -- Creates the defining ideal of an Ore extension of a noncommutative ring
• "oreIdeal(Ring,RingMap,Derivation,Symbol)" -- see oreIdeal -- Creates the defining ideal of an Ore extension of a noncommutative ring
• "oreIdeal(Ring,RingMap,RingElement)" -- see oreIdeal -- Creates the defining ideal of an Ore extension of a noncommutative ring
• "oreIdeal(Ring,RingMap,Symbol)" -- see oreIdeal -- Creates the defining ideal of an Ore extension of a noncommutative ring
• "pointScheme(FreeAlgebraQuotient,Symbol)" -- see pointScheme -- Compute the point scheme of the quadratic algebra B
• "FreeAlgebra ** FreeAlgebra" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "FreeAlgebra ** FreeAlgebraQuotient" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "FreeAlgebraQuotient ** FreeAlgebra" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "FreeAlgebraQuotient ** FreeAlgebraQuotient" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "qTensorProduct(Ring,Ring,QQ)" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "qTensorProduct(Ring,Ring,RingElement)" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "qTensorProduct(Ring,Ring,ZZ)" -- see qTensorProduct -- Define the (q-)commuting tensor product
• "quadraticClosure(FreeAlgebra)" -- see quadraticClosure -- Creates the subideal generated by quadratic elements of a given ideal
• "quadraticClosure(FreeAlgebraQuotient)" -- see quadraticClosure -- Creates the subideal generated by quadratic elements of a given ideal
• "quadraticClosure(Ideal)" -- see quadraticClosure -- Creates the subideal generated by quadratic elements of a given ideal
• "rightKernel(Matrix)" -- see rightKernel -- Right kernel of a matrix
• "skewPolynomialRing(Ring,Matrix,List)" -- see skewPolynomialRing -- Defines a skew polynomial ring via a skewing matrix
• "skewPolynomialRing(Ring,QQ,List)" -- see skewPolynomialRing(Ring,RingElement,List) -- Defines a skew polynomial ring via a scaling factor
• skewPolynomialRing(Ring,RingElement,List) -- Defines a skew polynomial ring via a scaling factor
• "skewPolynomialRing(Ring,ZZ,List)" -- see skewPolynomialRing(Ring,RingElement,List) -- Defines a skew polynomial ring via a scaling factor
• "threeDimSklyanin(Ring,List)" -- see threeDimSklyanin -- Defines a three-dimensional Sklyanin with given parameters
• "threeDimSklyanin(Ring,List,List)" -- see threeDimSklyanin -- Defines a three-dimensional Sklyanin with given parameters
• "toCommRing(FreeAlgebra)" -- see toCommRing -- Compute the abelianization of a Ring and returns a Ring.
• "toCommRing(FreeAlgebraQuotient)" -- see toCommRing -- Compute the abelianization of a Ring and returns a Ring.
• "toFreeAlgebraQuotient(Ring)" -- see toFreeAlgebraQuotient -- Converts a Ring to a noncommutative ring
• "toRationalFunction(List)" -- see toRationalFunction -- Attempt to find a rational function representation.
• Symbols
• "UseVariables" -- see freeAlgebra -- Create a FreeAlgebra

## For the programmer

The object AssociativeAlgebras is .