9.2.1.1 FreeAlgebraQuotient Objects

class FreeAlgebraQuotient
FreeAlgebraQuotient( A, mons, mats, [names=None])

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

Quaternion algebra defined in terms of three generators:

sage: n = 3
sage: A = FreeAlgebra(QQ,n); B = A.gens()
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 = FreeAlgebraQuotient(A,mons,mats)
sage: H3.assign_names(["i","j","k"])
sage: i, j, k = H3.gens()
sage: x = 1 + i + j + k
sage: x
1 + i + j + k
sage: x**128
-170141183460469231731687303715884105728 +
170141183460469231731687303715884105728*i +
170141183460469231731687303715884105728*j +
170141183460469231731687303715884105728*k

Same algebra defined in terms of two generators, with some penalty on already slow arithmetic.

sage: n = 2
sage: A = FreeAlgebra(QQ,n); B = A.gens()
sage: F = A.monoid()
sage: i, j = F.gens()
sage: mons = [ F(1), i, j, i*j ]
sage: r = len(mons)
sage: M = MatrixSpace(QQ,r)
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]) ]
sage: H2 = FreeAlgebraQuotient(A,mons,mats)
sage: i, j = H2.gens(); k = i*j
sage: H2.assign_names(["i","j"])
sage: x = 1 + i + j + k
sage: x
1 + i + j + i*j
sage: x**128
-170141183460469231731687303715884105728 +
170141183460469231731687303715884105728*i +
170141183460469231731687303715884105728*j +
170141183460469231731687303715884105728*i*j

Instances of class FreeAlgebraQuotient have the following methods (in addition to inherited methods and special methods):

assign_names,$  $ base_ring,$  $ dimension,$  $ free_algebra,$  $ gen,$  $ module,$  $ monoid,$  $ monomial_basis,$  $ names,$  $ ngens,$  $ rank

Further documentation:

assign_names( names)

Assign the printing names for the generators; this will have the unfortunate effect of overwriting the names for the covering algebra; this also does not overwrite the return value of names() for the Algebra.

dimension( )

The rank of the algebra (as a free module).

free_algebra( )

The free algebra generating the algebra.

gen( i)

The i-th generator of the algebra.

module( )

The free module of the algebra.

monoid( )

The free monoid of generators of the algebra.

monomial_basis( )

The free monoid of generators of the algebra as elements of a free monoid.

names( )

I override this in order to return to names of the underlying monoid.

ngens( )

The number of generators of the algebra.

rank( )

The rank of the algebra (as a free module).

Instances of class FreeAlgebraQuotient also have the following special methods:

__call__,$  $ __contains__,$  $ __repr__

See About this document... for information on suggesting changes.