> < ^ Date: Wed, 25 Apr 2001 16:26:49 -0400
> < ^ From: Craig Struble <cstruble@vt.edu >
< ^ Subject: Re: Returned mail: Host unFree Associative Algebra mod an ideal

Dear David and Gap Forum,

I'd like to add to the statement Victor makes below. The Hopf project
has been developing support for path algebras in GAP and has an
interface to the non-commutative Groebner basis package, Opal. Free
associative algebras (with identities) are easily encoded as path
algebras, so Hopf can perform many of the functions you are asking for.
Hopf and Opal are available from

http://pigweed.cs.vt.edu/hopf

but is still in development and has some bugs. We're looking for
interested users though. Here's a log of how you might work with your
example below:

```# A free associative algebra with one is encoded as a path algebra
# with a quiver containing one vertex and two loops.
gap> Q := Quiver(1, [[1,1, "a"], [1, 1, "b"]]);
<quiver with 1 vertices and 2 arrows>
# Construct the algebra over the rationals
gap> A := PathAlgebra(Rationals, Q);
<algebra-with-one over Rationals, with 3 generators>
# Need the identity of the algebra.
gap> one := One(A);
(1)*v1
# Create an ideal with the relations a^2 = b^2 = 1, abab = 1
gap> Ideal(A, [A.a^2 - one, A.b^2 - one, A.a^2 - A.b^2,
>              (A.a*A.b)^2 - one] );
<two-sided ideal in <algebra-with-one over Rationals, with 3
generators>, (4 generators)>
# Calculate the Groebner basis before constructing the quotient
gap> gb := OpalGroebnerBasis(I);
<complete two-sided Groebner basis containing 3 elements>
# What's in the Groebner basis?
gap> Enumerator(gb);
[ (-1)*v1+(1)*a^2, (-1)*a*b+(1)*b*a, (-1)*v1+(1)*b^2 ]
# Construct a quotient, find its dimension and basis
gap> B := A/I;
<algebra-with-one over Rationals, with 3 generators>
gap> Dimension(B);
4
gap> BasisVectors(Basis(B));
[ [(1)*v1], [(1)*a], [(1)*b], [(1)*a*b] ]
# Construct an ideal of B, and print its dimension and basis
gap> J := Ideal(B, [B.a]);
<two-sided ideal in <algebra-with-one of dimension 4 over
Rationals>, (1 generators)>
gap> Dimension(J);
4
gap> BasisVectors(Basis(J));
[ [(1)*a], [(1)*v1], [(1)*a*b], [(1)*b] ]
```

Craig

"David B. Wales" wrote:
>
> Hello Gap Forum, I would like to know how to create the Free
> Associative Algebra with a one with some small number
> of generators over a field like the rationals and
> then factor out the ideal generated by some few words in the
> generators. I would then like to know something about the
> quotient like its dimension over the rationals and how
> to compute the dimension of some subideal generated by
> some words in the generators. I suppose sometime I would
> like to know a basis. I know it is finite
> dimensional. I have seen how to do this
> for groups and Lie algebras but not associative algebras
> in general. I would appreciate any help.
> Thanks very much, David Wales
>
>
> Example, the free associative algebra with 1 and with two generators
> a and b mod the relations a^2=b^2=1 and abab=1. I know
> this is a group algebra but you get the idea. David

Dear David,
You need a non-commutative Groebner basis package for this. As far as I know
(but maybe I am wrong), there is no such in GAP today. But there exists several
of them outside GAP community. Bergman and Anick are two of them where I
participated myself. Bergman is on LISP/Reduce and works with the homogenious
relations only. Anick is on C and mainly used for calulating Anick resolution
but has a possibility to calulate Groebner basis too. Besides that there are a
lot of term rewriting systems, which can be used too, especially if you works
with the words only.
Your Sincerely
Victor Ufnarovski

```--
Craig A. Struble, Ph.D.             521 McBryde Hall
Visiting Assistant Professor        (540)231-5914
Computer Science, Virginia Tech     cstruble@vt.edu
http://www.cs.vt.edu/~cstruble
```

Miles-Receive-Header: reply

> < [top]