[GAP Forum] Algebras

Max Horn max at quendi.de
Tue Jan 28 20:34:57 GMT 2014


Dear R.N.,

On 28.01.2014, at 20:29, "R.N. Tsai" <r_n_tsai at yahoo.com> wrote:

> 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...

I have used GBNP successfully in the past with e.g. BMW algebras. But of course anything dealing with Gröbner bases in free associative algebras is bound to hit some snags at some point... But in the examples you list below, GBNP should easily work... If you tell us what exactly you tried, perhaps we can give some advice.

> 
> 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,....]

These are also known as "polynomial rings" ;-). So you can use these in GAP.


> (2)clifford algebra
>    (relations [a*a-1,b*b-1,....])

These are finite dimensional, so one can deal with them in GAP via structure constants table. I have written some code for for that recently, as I have to deal with them in a research project. I am using another quadratic form (a^2 = -1) than the one you want (a^2 = +1), but that can be easily fixed by changing a single line. Code follows at the end of this email.

> (3)weyl (or symplectic clifford) algebra
>    (relations [a*b-b*a-1,....]

This one is not finite dimensional, and thus can't be dealt with in the way above.

If I had to work with it, I'd try to use GBNP. Or possible I'd not use GAP and instead try the PLURAL library of the Singular project... (And I hope that in the not so distant future, both can in fact be used from within with help of the libsing project... but it's not yet ready).

Note that I'd prefer if this was doable via the "naive" (or "logical"?) approach of taking a FreeAssociateAlgebra and factoring out an ideal of relations. Indeed, one way to implement that would be to take GBNP, and writing some wrappers around it. This would be a win for both GAP (gains functionality) and GBNP (gains a nicer user interface ;-). It might be a task for a bachelor student, or Google Summer of Code or so...

> 
> 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 :-)

I hope the above helps you a bit!



Finally, here is my code for clifford algebras (this mailing list doesn't allow attachments, so I am putting it inline). The line you need to change is marked with a comment.

# F is the field (or ring) of coefficients, n the number of generators
CliffordAlgebra := function(F, n)
  local elems, names, e, T, i, j, x, y, z, sign, k, tmp;

  elems := Combinations([1..n]);
  names := [];
  for e in elems do
    if e = [] then
      Add(names, "id");
    else
      Add(names, Concatenation(List(e,i -> Concatenation("e",String(i)))));
    fi;
  od;

  T := EmptySCTable( 2^n, 0 );
  for i in [1..2^n] do
    x := elems[i];
    for j in [1..2^n] do
      y := elems[j];
      # Determine x * y;
      z := Concatenation(x, y);
      sign := 1;
      # normalize
      while not IsSet(z) do
        for k in [1..Length(z)-1] do
          if z[k] = z[k+1] then
            Remove(z, k);
            Remove(z, k);
            sign := -sign;  # remove this to get the form a^2=1
            break;
          elif z[k] > z[k+1] then
            tmp := z[k];
            z[k] := z[k+1];
            z[k+1] := tmp;
            sign := -sign;
          fi;
        od;
      od;
      SetEntrySCTable( T, i, j, [ sign, Position(elems, z) ] );
    od;
  od;

  return AlgebraByStructureConstants( F, T, names );
end;

R := CliffordAlgebra(Rationals, 4);
AssignGeneratorVariables(R);




Cheers,
Max


More information about the Forum mailing list