# Revision history [back]

Perhaps FreeAlgebraQuotient will be useful? Here's the first part of the docstring:

sage: FreeAlgebraQuotient?
Type:           type
Base Class:     <type 'type'>
String Form:    <class 'sage.algebras.free_algebra_quotient.FreeAlgebraQuotient'>
Namespace:      Interactive
File:           /Applications/sage/local/lib/python2.6/site-packages/sage/algebras/free_algebra_quotient.py
Definition:     FreeAlgebraQuotient(self, x)
Docstring:

Returns a quotient algebra defined via the action of a free algebra
A on a (finitely generated) free module. The input for the quotient
algebra is a list of monomials (in the underlying monoid for A)
which form a free basis for the module of A, and a list of
matrices, which give the action of the free generators of A on this
monomial basis.

EXAMPLES:

Quaternion algebra defined in terms of three generators:

sage: n = 3
sage: A = FreeAlgebra(QQ,n,'i')
sage: F = A.monoid()
sage: i, j, k = F.gens()
sage: mons = [ F(1), i, j, k ]
sage: M = MatrixSpace(QQ,4)
sage: mats = [M([0,1,0,0, -1,0,0,0, 0,0,0,-1, 0,0,1,0]),  M([0,0,1,0, 0,0,0,1, -1,0,0,0, 0,-1,0,0]),  M([0,0,0,1, 0,0,-1,0, 0,1,0,0, -1,0,0,0]) ]
sage: H3.<i,j,k> = FreeAlgebraQuotient(A,mons,mats)
sage: x = 1 + i + j + k
sage: x
1 + i + j + k
sage: x**128
-170141183460469231731687303715884105728 + 170141183460469231731687303715884105728*i + 170141183460469231731687303715884105728*j + 170141183460469231731687303715884105728*k