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:
sage.structure.unique_representation.UniqueRepresentation
,sage.rings.ring.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
-
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.
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