Representations Of A Semigroup

AUTHORS:

  • Travis Scrimshaw (2015-11-21): Initial version

  • Siddharth Singh (2020-03-21): Signed Representation

class sage.modules.with_basis.representation.RegularRepresentation(semigroup, base_ring, side='left')

Bases: sage.modules.with_basis.representation.Representation

The regular representation of a semigroup.

The left regular representation of a semigroup \(S\) over a commutative ring \(R\) is the semigroup ring \(R[S]\) equipped with the left \(S\)-action \(x b_y = b_{xy}\), where \((b_z)_{z \in S}\) is the natural basis of \(R[S]\) and \(x,y \in S\).

INPUT:

  • semigroup – a semigroup

  • base_ring – the base ring for the representation

  • side – (default: "left") whether this is a "left" or "right" representation

REFERENCES:

class sage.modules.with_basis.representation.Representation(semigroup, module, on_basis, side='left')

Bases: sage.modules.with_basis.representation.Representation_abstract

Representation of a semigroup.

INPUT:

  • semigroup – a semigroup

  • module – a module with a basis

  • on_basis – function which takes as input g, m, where g is an element of the semigroup and m is an element of the indexing set for the basis, and returns the result of g acting on m

  • side – (default: "left") whether this is a "left" or "right" representation

EXAMPLES:

We construct the sign representation of a symmetric group:

sage: G = SymmetricGroup(4)
sage: M = CombinatorialFreeModule(QQ, ['v'])
sage: from sage.modules.with_basis.representation import Representation
sage: on_basis = lambda g,m: M.term(m, g.sign())
sage: R = Representation(G, M, on_basis)
sage: x = R.an_element(); x
2*B['v']
sage: c,s = G.gens()
sage: c,s
((1,2,3,4), (1,2))
sage: c * x
-2*B['v']
sage: s * x
-2*B['v']
sage: c * s * x
2*B['v']
sage: (c * s) * x
2*B['v']

This extends naturally to the corresponding group algebra:

sage: A = G.algebra(QQ)
sage: s,c = A.algebra_generators()
sage: c,s
((1,2,3,4), (1,2))
sage: c * x
-2*B['v']
sage: s * x
-2*B['v']
sage: c * s * x
2*B['v']
sage: (c * s) * x
2*B['v']
sage: (c + s) * x
-4*B['v']

REFERENCES:

class Element

Bases: sage.modules.with_basis.indexed_element.IndexedFreeModuleElement

side()

Return whether self is a left or a right representation.

OUTPUT:

  • the string "left" or "right"

EXAMPLES:

sage: G = groups.permutation.Dihedral(4)
sage: R = G.regular_representation()
sage: R.side()
'left'
sage: S = G.regular_representation(side="right")
sage: S.side()
'right'
class sage.modules.with_basis.representation.Representation_abstract(semigroup, base_ring, *args, **opts)

Bases: sage.combinat.free_module.CombinatorialFreeModule

Abstract base class for representations of semigroups.

INPUT:

  • semigroup – a semigroup

  • base_ring – a commutative ring

semigroup()

Return the semigroup whose representation self is.

EXAMPLES:

sage: G = SymmetricGroup(4)
sage: M = CombinatorialFreeModule(QQ, ['v'])
sage: from sage.modules.with_basis.representation import Representation
sage: on_basis = lambda g,m: M.term(m, g.sign())
sage: R = Representation(G, M, on_basis)
sage: R.semigroup()
Symmetric group of order 4! as a permutation group
semigroup_algebra()

Return the semigroup algebra whose representation self is.

EXAMPLES:

sage: G = SymmetricGroup(4)
sage: M = CombinatorialFreeModule(QQ, ['v'])
sage: from sage.modules.with_basis.representation import Representation
sage: on_basis = lambda g,m: M.term(m, g.sign())
sage: R = Representation(G, M, on_basis)
sage: R.semigroup_algebra()
Symmetric group algebra of order 4 over Rational Field
side()

Return whether self is a left, right, or two-sided representation.

OUTPUT:

  • the string "left", "right", or "twosided"

EXAMPLES:

sage: G = groups.permutation.Dihedral(4)
sage: R = G.regular_representation()
sage: R.side()
'left'
class sage.modules.with_basis.representation.SignRepresentationCoxeterGroup(group, base_ring, sign_function=None)

Bases: sage.modules.with_basis.representation.SignRepresentation_abstract

The sign representation for a Coxeter group.

EXAMPLES:

sage: G = WeylGroup(["A", 1, 1])
sage: V = G.sign_representation()
sage: TestSuite(V).run()
class sage.modules.with_basis.representation.SignRepresentationMatrixGroup(group, base_ring, sign_function=None)

Bases: sage.modules.with_basis.representation.SignRepresentation_abstract

The sign representation for a matrix group.

EXAMPLES:

sage: G = groups.permutation.PGL(2, 3)
sage: V = G.sign_representation()
sage: TestSuite(V).run()
class sage.modules.with_basis.representation.SignRepresentationPermgroup(group, base_ring, sign_function=None)

Bases: sage.modules.with_basis.representation.SignRepresentation_abstract

The sign representation for a permutation group.

EXAMPLES:

sage: G = groups.permutation.PGL(2, 3)
sage: V = G.sign_representation()
sage: TestSuite(V).run()
class sage.modules.with_basis.representation.SignRepresentation_abstract(group, base_ring, sign_function=None)

Bases: sage.modules.with_basis.representation.Representation_abstract

Generic implementation of a sign representation.

The sign representation of a semigroup \(S\) over a commutative ring \(R\) is the \(1\)-dimensional \(R\)-module on which every element of \(S\) acts by 1 if order of element is even (including 0) or -1 if order of element if odd.

This is simultaneously a left and right representation.

INPUT:

  • permgroup – a permgroup

  • base_ring – the base ring for the representation

  • sign_function – a function which returns 1 or -1 depending on the elements sign

REFERENCES:

class Element

Bases: sage.modules.with_basis.indexed_element.IndexedFreeModuleElement

side()

Return that self is a two-sided representation.

OUTPUT:

  • the string "twosided"

EXAMPLES:

sage: G = groups.permutation.Dihedral(4)
sage: R = G.sign_representation()
sage: R.side()
'twosided'
class sage.modules.with_basis.representation.TrivialRepresentation(semigroup, base_ring)

Bases: sage.modules.with_basis.representation.Representation_abstract

The trivial representation of a semigroup.

The trivial representation of a semigroup \(S\) over a commutative ring \(R\) is the \(1\)-dimensional \(R\)-module on which every element of \(S\) acts by the identity.

This is simultaneously a left and right representation.

INPUT:

  • semigroup – a semigroup

  • base_ring – the base ring for the representation

REFERENCES:

class Element

Bases: sage.modules.with_basis.indexed_element.IndexedFreeModuleElement

side()

Return that self is a two-sided representation.

OUTPUT:

  • the string "twosided"

EXAMPLES:

sage: G = groups.permutation.Dihedral(4)
sage: R = G.trivial_representation()
sage: R.side()
'twosided'