16.3 Free algebra quotients

Module: sage.algebras.free_algebra_quotient

Class: FreeAlgebraQuotient

class FreeAlgebraQuotient
FreeAlgebraQuotient( self, 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

Functions: assign_names,$  $ base_ring,$  $ dimension,$  $ free_algebra,$  $ gen,$  $ module,$  $ monoid,$  $ monomial_basis,$  $ ngens,$  $ rank,$  $ variable_names

assign_names( self, 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( self)

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

free_algebra( self)

The free algebra generating the algebra.

gen( self, i)

The i-th generator of the algebra.

module( self)

The free module of the algebra.

monoid( self)

The free monoid of generators of the algebra.

monomial_basis( self)

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

ngens( self)

The number of generators of the algebra.

rank( self)

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

variable_names( self)

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

Special Functions: __call__,$  $ __contains__,$  $ __repr__

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