[GAP Forum] Algebras

R.N. Tsai r_n_tsai at yahoo.com
Tue Jan 28 19:29:44 GMT 2014


Dear Forum,

I happen to be very interested in free associative algebras modulo some relations.

So let me follow up this response with a few comments :

- There appears to be a package for non commutative groebner basis (gbnp). See example 
  http://mathoverflow.net/questions/87338/basis-of-a-finite-dimensional-algebra-with-a-finitely-generated-relation-set-by

- I tried this package with different relations but without luck; the program hits its internal recursion limit...

What I'd like to ask is the following :

How would the following algebras be defined as quotients of free associative algebras with one :

(1)free abelian associative algebra
   (this should be as simple as adding relations [a*b-b*a,....]
(2)clifford algebra
   (relations [a*a-1,b*b-1,....])
(3)weyl (or symplectic clifford) algebra
   (relations [a*b-b*a-1,....]

Are the above examples doable within gap or any of the packages (including gbnp)?
If so some code sniplets would be appreciated. If it is not doable, please
let me know so I can stop trying :-)

Thanks,
R.N.



On Tuesday, January 28, 2014 1:13 AM, Max Horn <max at quendi.de> wrote:
Dear Andrew,

On 27.01.2014, at 14:46, "Andrew Langworthy (MTH)" <A.Langworthy at uea.ac.uk> wrote:

> Dear Forum,
> 
> I am trying to define algebra maps between a free associative algebra with a one on n generators (modulo some relations), and itself. I am using the command "AlgebraGeneralMappingByImages", but keep getting errors, specifically the "no method found" one. (same thing happens for AlgebraWithOneGeneralMappingByImages)
> 
> I have tried various "with/without one" combinations without success. I know that some of the algebra maps are not yet implemented in GAP (at least that is what it tells me when I try an use the command AlgebraHomomorphismByImages), but I cannot seem to get anywhere.
> 
> Am I making some silly mistake?

Perhaps, perhaps not... Your concrete map strikes me as strange (see below).

But in general: Not really -- it is simply as you already put it: A lot of that code is not (yet?) implemented in GAP. Basically nothing around free associative algebras (FAAs), to be precise. I guess this is partially due to a lack of need, partially due to the fact that many things related to FAAs are quite hard to do right and require e.g. non-commutative Gröbner basis calculations... Though not really in your example.

As a matter of fact, the code you give below executes just fine for me in the latest GAP development version (and I would hope in GAP 4.7.2). It is only when trying to compute an image under the homomorphism "epsilon" that things break down. Partially due to missing features, partially due to something strange about your "map" (which isn't a well-defined map, details at the end of mail).

Anyway, in this particular case, it might be possible to fix that, but I am pretty sure you'd end up running into some other unimplemented feature :-/.


However, if all the examples you are looking at are like the one you gave here, there is some hope:

[...]

> In case anyone wants it, here is my code
> 
> rewrite:=FreeAssociativeAlgebraWithOne(Rationals,n,"s");
> 
> genalg:=GeneratorsOfAlgebra(rewrite);
> rels1:=[];
> 
> for i in [1..n] do
>   AddSet(rels1,genalg[i]^2-genalg[i]);
> 
>   for j in [1..n] do
>       AddSet(rels1,genalg[i]*genalg[j]-genalg[j]*genalg[i]);

^^^
The code above basically says that all your generators commute, and have order 2. This should be tractable, even with less powerful things than FAAs. Indeed, your algebra is basically the group ring of an elementary abelian group of order 2^n. Try this:


G:=ElementaryAbelianGroup(2^n);
RLalg:=GroupRing(Rationals, G);


Then, let's go on as with in your code:
> 
> 
> s:=GeneratorsOfAlgebra(RLalg);
> 
>               #EPSILON IN RLalg
> 
> imep:=[1..n+1];
> 
> for i in [1..n+1] do
>   imep[i]:=(0)*s[1];
> od;
> 
> for i in [2..n+1] do
>   imep[1]:=imep[1]+s[i]; #Defines imep1
> 
>   for j in [2..n+1] do
>       imep[i]:=imep[i]+s[i]*s[j];
>   od;
> 
>   imep[i]:=imep[i]-s[i]*s[i]; #removes the duplicates
> od;
> 
> 
> epsilon:=AlgebraGeneralMappingByImages(RLalg,RLalg,s,imep);

Now let's try to compute an image:

gap> ImageElm(epsilon, s[1]);
Error, <map> must be single-valued and total called from
<function "unknown">( <arguments> )
called from read-eval loop at line 91 of *stdin*
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue

Huh? Turns out the "map" is not a mapping:

gap> IsSingleValued(epsilon);
false

Indeed:
gap> s;
[ (1)*<identity> of ..., (1)*f1, (1)*f2, (1)*f3 ]
gap> imep;
[ (1)*f1+(1)*f2+(1)*f3, (1)*f1*f2+(1)*f1*f3, (1)*f1*f2+(1)*f2*f3, (1)*f1*f3+(1)*f2*f3 ]
gap>

You tell it to map the one of the ring to
imep[1] = f1 + f2 + f3

But at the same time, you tell it to map f1 to
f1*f2+f1*f3.

But then 1 = f1^2 is als mapped to
(f1*f2+f1*f3) = 2 + 2*f2*f3

So, the "map" is not well-defined. 




Cheers,
Max


_______________________________________________
Forum mailing list
Forum at mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum



More information about the Forum mailing list