[GAP Forum] Algebras

Max Horn max at quendi.de
Wed Jan 29 09:41:39 GMT 2014


Dear R.N.,

On 29.01.2014, at 01:06, "R.N. Tsai" <r_n_tsai at yahoo.com> wrote:

[...]
> 
> LoadPackage("gbnp");
> A := FreeAssociativeAlgebraWithOne(Rationals,"a","b");
> a := A.a;
> b := A.b;
> 
> # all three rels below produce the same error
> rels := [a*b-b*a];
> rels := [a*b-b*a-One(A)];
> rels := [a*b+b*a-One(A)];
> 
> K := GP2NPList(rels);                           
> G := SGrobner(K);
> Display(DimQA(G,2));
> PrintNPList(BaseQA(G, 2, 0));
> 
> I get the same error for all three cases : 

You are asking for a basis of an infinite dimensional algebra in all three cases, so (as per the documentation of GBNP) it is unsurprising you are running into an error. It tries to recursively enumerate a basis, and fails.

[...]

> You'd expect at least in the first case ([a*b-b*a]) things would work;

As I said in my previous email, in that case the algebra is polynomial algebra K[a,b] and thus I wouldn't expect it to work :-).

It does work for a Clifford algebra, though (as that is finite dimensional):

  rels := [a*b+b*a, a*a-One(A), b*b-One(A)];

correctly gives the basis 1, a, b, ab



If you want to work in these algebras, you don't want to compute a quotient. Rather, you want to be able to compute normal forms of elements, or at least to be able to decide if two "linear combinations of words" describe the same element of the algebra. Both can be done with non-commutative Gröbner bases (ncGB): If you are looking at the quotient F/I of a free algebra F by an ideal I, and G is a ncGB of I, then deciding equality amounts to an ideal membership test:  for x,y\in F, we have  x+I = y+I iff x-y \in I.

Computing normal forms is also possible, in GBNP this is what StrongNormalFormNP does. Here is a helper that assumes you have computed the ncGB G, and uses that to compute a normal form for an element x of the free algebra F modulo the ideal (i.e. a canonical representative of the coset x + I)

NormalFormMod := x -> NP2GP(StrongNormalFormNP(GP2NP(x), G), A);

For example, using  rels := [a*b-b*a], we get

gap> NormalFormMod(a^5*b^2 - b^2*a^3 - b*a^2*b*a^3);
(-1)*a^3*b^2

And so on.


This is slightly inconvenient. Nicer would be to have a high-level wrapper around (resp. in) GBNP which implements NaturalHomomorphismByIdeal (or an analogue of it).



Cheers,
Max


More information about the Forum mailing list