Group Algebras¶
This module implements the category of group algebras for arbitrary
groups over arbitrary commutative rings. For details, see
sage.categories.algebra_functor
.
AUTHOR:
 David Loeffler (20080824): initial version
 Martin Raum (200908): update to use new coercion model – see trac ticket #6670.
 John Palmieri (201107): more updates to coercion, categories, etc., group algebras constructed using CombinatorialFreeModule – see trac ticket #6670.
 Nicolas M. Thiéry (20102017), Travis Scrimshaw (2017): generalization to a covariant functorial construction for monoid algebras, and beyond – see e.g. trac ticket #18700.

class
sage.categories.group_algebras.
GroupAlgebras
(category, *args)¶ Bases:
sage.categories.algebra_functor.AlgebrasCategory
The category of group algebras over a given base ring.
EXAMPLES:
sage: C = Groups().Algebras(ZZ); C Category of group algebras over Integer Ring sage: C.super_categories() [Category of hopf algebras with basis over Integer Ring, Category of monoid algebras over Integer Ring]
We can also construct this category with:
sage: C is GroupAlgebras(ZZ) True
Here is how to create the group algebra of a group \(G\):
sage: G = DihedralGroup(5) sage: QG = G.algebra(QQ); QG Algebra of Dihedral group of order 10 as a permutation group over Rational Field
and an example of computation:
sage: g = G.an_element(); g (1,4)(2,3) sage: (QG.term(g) + 1)**3 4*() + 4*(1,4)(2,3)
Todo
 Check which methods would be better located in
Monoid.Algebras
orGroups.Finite.Algebras
.

class
ElementMethods
¶ 
central_form
()¶ Return
self
expressed in the canonical basis of the center of the group algebra.INPUT:
self
– an element of the center of the group algebra
OUTPUT:
 A formal linear combination of the conjugacy class
representatives representing its coordinates in the
canonical basis of the center. See
Groups.Algebras.ParentMethods.center_basis()
for details.
Warning
 This method requires the underlying group to
have a method
conjugacy_classes_representatives
(every permutation group has one, thanks GAP!).  This method does not check that the element is
indeed central. Use the method
Monoids.Algebras.ElementMethods.is_central()
for this purpose.  This function has a complexity linear in the
number of conjugacy classes of the group. One
could easily implement a function whose
complexity is linear in the size of the support
of
self
.
EXAMPLES:
sage: QS3 = SymmetricGroup(3).algebra(QQ) sage: A = QS3([2,3,1]) + QS3([3,1,2]) sage: A.central_form() B[(1,2,3)] sage: QS4 = SymmetricGroup(4).algebra(QQ) sage: B = sum(len(s.cycle_type())*QS4(s) for s in Permutations(4)) sage: B.central_form() 4*B[()] + 3*B[(1,2)] + 2*B[(1,2)(3,4)] + 2*B[(1,2,3)] + B[(1,2,3,4)] sage: QG = GroupAlgebras(QQ).example(PermutationGroup([[(1,2,3),(4,5)],[(3,4)]])) sage: sum(i for i in QG.basis()).central_form() B[()] + B[(4,5)] + B[(3,4,5)] + B[(2,3)(4,5)] + B[(2,3,4,5)] + B[(1,2)(3,4,5)] + B[(1,2,3,4,5)]
See also
Groups.Algebras.ParentMethods.center_basis()
Monoids.Algebras.ElementMethods.is_central()


class
ParentMethods
¶ 
antipode_on_basis
(g)¶ Return the antipode of the element
g
of the basis.Each basis element
g
is grouplike, and so has antipode \(g^{1}\). This method is used to compute the antipode of any element.EXAMPLES:
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A Algebra of Cyclic group of order 6 as a permutation group over Integer Ring sage: g = CyclicPermutationGroup(6).an_element();g (1,2,3,4,5,6) sage: A.antipode_on_basis(g) (1,6,5,4,3,2) sage: a = A.an_element(); a () + (1,2,3,4,5,6) + 3*(1,3,5)(2,4,6) + 2*(1,5,3)(2,6,4) sage: a.antipode() () + 2*(1,3,5)(2,4,6) + 3*(1,5,3)(2,6,4) + (1,6,5,4,3,2)

center_basis
()¶ Return a basis of the center of the group algebra.
The canonical basis of the center of the group algebra is the family \((f_\sigma)_{\sigma\in C}\), where \(C\) is any collection of representatives of the conjugacy classes of the group, and \(f_\sigma\) is the sum of the elements in the conjugacy class of \(\sigma\).
OUTPUT:
tuple
of elements ofself
Warning
 This method requires the underlying group to
have a method
conjugacy_classes
(every permutation group has one, thanks GAP!).
EXAMPLES:
sage: SymmetricGroup(3).algebra(QQ).center_basis() ((), (2,3) + (1,2) + (1,3), (1,2,3) + (1,3,2))
See also
Groups.Algebras.ElementMethods.central_form()
Monoids.Algebras.ElementMethods.is_central()

coproduct_on_basis
(g)¶ Return the coproduct of the element
g
of the basis.Each basis element
g
is grouplike. This method is used to compute the coproduct of any element.EXAMPLES:
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A Algebra of Cyclic group of order 6 as a permutation group over Integer Ring sage: g = CyclicPermutationGroup(6).an_element(); g (1,2,3,4,5,6) sage: A.coproduct_on_basis(g) (1,2,3,4,5,6) # (1,2,3,4,5,6) sage: a = A.an_element(); a () + (1,2,3,4,5,6) + 3*(1,3,5)(2,4,6) + 2*(1,5,3)(2,6,4) sage: a.coproduct() () # () + (1,2,3,4,5,6) # (1,2,3,4,5,6) + 3*(1,3,5)(2,4,6) # (1,3,5)(2,4,6) + 2*(1,5,3)(2,6,4) # (1,5,3)(2,6,4)

counit
(x)¶ Return the counit of the element
x
of the group algebra.This is the sum of all coefficients of
x
with respect to the standard basis of the group algebra.EXAMPLES:
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A Algebra of Cyclic group of order 6 as a permutation group over Integer Ring sage: a = A.an_element(); a () + (1,2,3,4,5,6) + 3*(1,3,5)(2,4,6) + 2*(1,5,3)(2,6,4) sage: a.counit() 7

counit_on_basis
(g)¶ Return the counit of the element
g
of the basis.Each basis element
g
is grouplike, and so has counit \(1\). This method is used to compute the counit of any element.EXAMPLES:
sage: A=CyclicPermutationGroup(6).algebra(ZZ);A Algebra of Cyclic group of order 6 as a permutation group over Integer Ring sage: g=CyclicPermutationGroup(6).an_element();g (1,2,3,4,5,6) sage: A.counit_on_basis(g) 1

group
()¶ Return the underlying group of the group algebra.
EXAMPLES:
sage: GroupAlgebras(QQ).example(GL(3, GF(11))).group() General Linear Group of degree 3 over Finite Field of size 11 sage: SymmetricGroup(10).algebra(QQ).group() Symmetric group of order 10! as a permutation group

is_integral_domain
(proof=True)¶ Return
True
ifself
is an integral domain.This is false unless
self.base_ring()
is an integral domain, and even then it is false unlessself.group()
has no nontrivial elements of finite order. I don’t know if this condition suffices, but it obviously does if the group is abelian and finitely generated.EXAMPLES:
sage: GroupAlgebra(SymmetricGroup(2)).is_integral_domain() False sage: GroupAlgebra(SymmetricGroup(1)).is_integral_domain() True sage: GroupAlgebra(SymmetricGroup(1), IntegerModRing(4)).is_integral_domain() False sage: GroupAlgebra(AbelianGroup(1)).is_integral_domain() True sage: GroupAlgebra(AbelianGroup(2, [0,2])).is_integral_domain() False sage: GroupAlgebra(GL(2, ZZ)).is_integral_domain() # not implemented False


example
(G=None)¶ Return an example of group algebra.
EXAMPLES:
sage: GroupAlgebras(QQ['x']).example() Algebra of Dihedral group of order 8 as a permutation group over Univariate Polynomial Ring in x over Rational Field
An other group can be specified as optional argument:
sage: GroupAlgebras(QQ).example(AlternatingGroup(4)) Algebra of Alternating group of order 4!/2 as a permutation group over Rational Field

extra_super_categories
()¶ Implement the fact that the algebra of a group is a Hopf algebra.
EXAMPLES:
sage: C = Groups().Algebras(QQ) sage: C.extra_super_categories() [Category of hopf algebras over Rational Field] sage: sorted(C.super_categories(), key=str) [Category of hopf algebras with basis over Rational Field, Category of monoid algebras over Rational Field]
 Check which methods would be better located in