Dear R.N.,

On 29.01.2014, at 01:06, "R.N. Tsai" <r_n_t...@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
_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to