[GAP Forum] Algebras

Max Horn max at quendi.de
Tue Jan 28 09:11:49 GMT 2014


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



More information about the Forum mailing list