Finite dimensional free algebra quotients#
REMARK:
This implementation only works for finite dimensional quotients, since a list of basis monomials and the multiplication matrices need to be explicitly provided.
The homogeneous part of a quotient of a free algebra over a field by a
finitely generated homogeneous twosided ideal is available in a
different implementation. See
free_algebra_letterplace
and
quotient_ring
.
- class sage.algebras.free_algebra_quotient.FreeAlgebraQuotient(A, mons, mats, names)#
Bases:
UniqueRepresentation
,Algebra
,object
Return 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
Same algebra defined in terms of two generators, with some penalty on already slow arithmetic.
sage: n = 2 sage: A = FreeAlgebra(QQ,n,'x') 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.<i,j> = A.quotient(mons,mats) sage: k = 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
- Element#
alias of
FreeAlgebraQuotientElement
- dimension()#
The rank of the algebra (as a free module).
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].dimension() 4
- free_algebra()#
The free algebra generating the algebra.
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].free_algebra() Free Algebra on 3 generators (i0, i1, i2) over Rational Field
- gen(i)#
The i-th generator of the algebra.
EXAMPLES:
sage: H, (i,j,k) = sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ) sage: H.gen(0) i sage: H.gen(2) k
An IndexError is raised if an invalid generator is requested:
sage: H.gen(3) Traceback (most recent call last): ... IndexError: argument i (= 3) must be between 0 and 2
Negative indexing into the generators is not supported:
sage: H.gen(-1) Traceback (most recent call last): ... IndexError: argument i (= -1) must be between 0 and 2
- matrix_action()#
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].matrix_action() ( [ 0 1 0 0] [ 0 0 1 0] [ 0 0 0 1] [-1 0 0 0] [ 0 0 0 1] [ 0 0 -1 0] [ 0 0 0 -1] [-1 0 0 0] [ 0 1 0 0] [ 0 0 1 0], [ 0 -1 0 0], [-1 0 0 0] )
- module()#
The free module of the algebra.
EXAMPLES:
sage: H = sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0]; H Free algebra quotient on 3 generators ('i', 'j', 'k') and dimension 4 over Rational Field sage: H.module() Vector space of dimension 4 over Rational Field
- monoid()#
The free monoid of generators of the algebra.
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].monoid() Free monoid on 3 generators (i0, i1, i2)
- monomial_basis()#
The free monoid of generators of the algebra as elements of a free monoid.
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].monomial_basis() (1, i0, i1, i2)
- ngens()#
The number of generators of the algebra.
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].ngens() 3
- rank()#
The rank of the algebra (as a free module).
EXAMPLES:
sage: sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ)[0].rank() 4
- sage.algebras.free_algebra_quotient.hamilton_quatalg(R)#
Hamilton quaternion algebra over the commutative ring R, constructed as a free algebra quotient.
INPUT:
R – a commutative ring
OUTPUT:
Q – quaternion algebra
gens – generators for Q
EXAMPLES:
sage: H, (i,j,k) = sage.algebras.free_algebra_quotient.hamilton_quatalg(ZZ) sage: H Free algebra quotient on 3 generators ('i', 'j', 'k') and dimension 4 over Integer Ring sage: i^2 -1 sage: i in H True
Note that there is another vastly more efficient models for quaternion algebras in Sage; the one here is mainly for testing purposes:
sage: R.<i,j,k> = QuaternionAlgebra(QQ,-1,-1) # much fast than the above