SIGNATURE GRÖBNER BASES IN FREE ALGEBRAS OVER RINGS

Sage code accompanying the paper "Signature Gröbner bases in free algebras over rings" by Clemens Hofstadler and Thibaut Verron.


DESCRIPTION

A SageMath implementation of Algorithm 1 in the paper to compute signature Gröbner bases in the mixed algebra R[X]<Y>.
So far, we only implement the case where R is a field.


LICENCSE

Distributed under the terms of the GNU General Public License, either version 2 or (at your option) any later version (https://www.gnu.org/licenses/)


REQUIREMENTS

- SageMath 9.1 or later


INSTALLATION

To load the functionality for computations in the mixed algebra, simply call

from MixedAlgebra import *

when inside the folder mixed_algebra. 

USAGE

After loading the package, a mixed algebra object can be created as follows

A = MixedAlgebra(K,X,Y)

where K is a base field, X is a list of commutative variables and Y is a list of noncommutative variables.
The variables can be given as strings, e.g.

A = MixedAlgebra(QQ,['h'],['x','y'])

or as the generators of a free algebra

F.<h,x,y> = FreeAlgebra(QQ,['h','x','y'])
A = MixedAlgebra(QQ,[h],[x,y])

Elements in this mixed algebra can be obtained by converting elements from the free algebra.
For example,

f = x*y - h^2*x*x + 2*x*h*y*h # as an element in the free algebra QQ<h,x,y>
g = A(f) # as an element in the mixed algebra QQ[h]<x,y>

A labelled module can be generated by a set of mixed polynomials.
Here, we generate a labelled module with the relations of the Iwahori-Hecke algebra of type A3

F.<p,q,x,y,z> = FreeAlgebra(QQ,['p','q','x','y','z'])
A = MixedAlgebra(QQ,[p,q],[x,y,z])
ih = [p*q-1, x*x + (1-q)*x - q, y*y + (1-q)*y - q, z*z + (1-q)*z - q,  z*x - x*z, y*x*y - x*y*x, z*y*z - y*z*y]
I = [A(f) for f in ih]
M = LabelledModule(I)

A signature Gröbner basis of such a labelled module can be computed as follows

maxiter = 100
deg = 7
G,H = M.signature_GB(maxiter, maxdeg=deg)

where G is the (partial) signature Gröbner basis and H contains the signatures of a syzygy basis of M.
Both sets are up to degree ``deg`` or up to a smaller degree if ``maxiter`` (the maximal number of
iterations done in the algorithm) is too low, such that the degree ``deg`` is not reached. 


BENCHMARK EXAMPLES

To run the benchmark examples in the mixed algebra, simply call

load("./benchmarks/mixed_algebra.py")

when inside the folder mixed_algebra.

The benchmark examples using naive signature-based computations, require the package SignatureGB.
Download and install the this package and its dependencies as described on this page:
	
https://github.com/ClemensHofstadler/SignatureGB_SageMath

After installation, make sure that the path to the SignatureGB package is visible in SageMath by running
	sys.path.append(PATH),
where PATH is the path to the directory in which the folder SignatureGB is.

Then the benchmark examples can be loaded into a Sage session with

load("./benchmarks/naive_sig_GB.py")

from within the folder mixed_algebra.

The benchmark examples using naive Gröbner basis computations, have to be run in Singular (https://www.singular.uni-kl.de).
