Characters

Character table based methods are used in RepLAB to provide exact results when requested, at the price of a major slowdown.

See also ConjugacyClasses and ConjugacyClass.

Character

class replab.Character(conjugacyClasses, values)

Bases: replab.Obj

Describes a character

Example

>>> D = replab.PermutationGroup.dihedral(6); % doctest: +cyclotomic
>>> rep = D.repByImages('R', 1, 'preimages', {[6 5 4 3 2 1], [2 3 4 5 6 1]}, 'images', {1 -1});
>>> c = replab.Character.fromRep(rep);
>>> g = [2 3 4 5 6 1];
>>> c.value(g)
    -1
>>> c1 = c + c;
>>> c1.value(g)
    -2
>>> c2 = c * c;
>>> c2.value(g)
    1

Own members

conjugacyClasses

List of conjugacy classes for which the order of values is defined

Type

ConjugacyClasses

group

Group on which this class function is defined

Type

FiniteGroup

values

Values of the character over the conjugacy classes

Type

cyclotomic (1,*)

dot(self, rhs)

Computes the inner product of this character with another character

Parameters

rhs (Character) – Character

Returns

Value of the dot product

Return type

cyclotomic

dotRep(self, rhs)

Computes the approximate inner product of this character with the character of an approximate representation

Parameters

rhs (Rep) – Approximate representation

Returns

Value of the dot product

Return type

double

forClasses(self, newConjugacyClasses)

Returns the character with conjugacy classes reordered

frobeniusSchurIndicator(self)

Returns the Frobenius-Schur indicator corresponding to this character

static fromApproximateRep(rep)

Computes an exact character from an approximate representation using Dixon’s trick

See J. D. Dixon, “Computing irreducible representations of groups”, Math. Comp., vol. 24, no. 111, pp. 707–712, 1970 https://www.ams.org/mcom/1970-24-111/S0025-5718-1970-0280611-6/

Note that the function has complexity in \(O(N e^2)\) where \(N\) is the number of conjugacy classes and \(e\) is the group exponent.

Parameters

rep (Rep) – Approximate representation

Returns

Exact character

Return type

Character

static fromExactRep(rep)

Computes an exact character from an approximate representation using Dixon’s trick

See J. D. Dixon, “Computing irreducible representations of groups”, Math. Comp., vol. 24, no. 111, pp. 707–712, 1970 https://www.ams.org/mcom/1970-24-111/S0025-5718-1970-0280611-6/

Note that the function has complexity in \(O(N e^2)\) where \(N\) is the number of conjugacy classes and \(e\) is the group exponent.

Parameters

rep (Rep) – Approximate representation

Returns

Exact character

Return type

Character

static fromRep(rep)

Computes an exact character from a representation (approximate or not)

Parameters

rep (Rep) – Representation, may be approximate or exact

Returns

Character

Return type

Character

kernel(self)

Returns the kernel of this character

The kernel of this character \(\chi\) is defined as all \(g \in G\) such that \(\chi(g) = \chi(1)\) where \(1\) is the identity.

Returns

A subgroup of group

Return type

FiniteGroup

value(self, arg)

Returns the value of the class function over a group element or conjugacy class

Parameters

element (element of group or ConjugacyClass) – Element to compute the value of

Returns

Class function value

Return type

cyclotomic

CharacterTable

class replab.CharacterTable(group, field, classes, values, varargin)

Bases: replab.Obj

Describes the real or complex character table of a finite group

This contains several pieces of information. Some of these pieces, such as the character values, are essentially unique for a given group (up to permutation of characters and conjugacy classes). Other pieces of information, such as the names of conjugacy classes/irreducible representations may depend on the context (the mathematical or physical are, chemistry, etc).

The character table can optionally store the explicit images of the irreducible representations. Of course, these irreps are defined up to the choice of basis. For example, if the character table is of type ComplexCharacterTable, it can contain irreducible representations of real-type, those images are not necessarily written using real coefficients, even if they could.

The arguments passed to the constructor for irreducible representations (irreps) or generalized Kronecker coefficients (kronecker) can include function handles; it that case, the corresponding objects are only constructed when they are requested and the computed value is cached.

Own members

classNames

Names of conjugacy classes

Type

cell(1,nClasses) of charstring

classes

Conjugacy classes of group

Type

ConjugacyClasses

field

Whether the character table is real or complex

Type

{‘R’, ‘C’}

group

Group represented by character table

Type

replab.FiniteGroup

irrepNames

Names of the irreducible representations/characters

Type

cell(1,nIrreps) of charstring

irreps_

Explicit representations (can contain empty values)

Type

cell(1, nClasses) of [] or Rep or function_handle

kronecker_

Kronecker coefficients

Type

integer(*,*,*) or function_handle

values

Character values

Type

cyclotomic (nIrreps,nClasses)

CharacterTable(group, field, classes, values, varargin)

Constructs a character table

Parameters
  • group (FiniteGroup) – Group represented by character table

  • field ({'R', 'C'}) – Field over which the characters are defined

  • classes (ConjugacyClasses) – Conjugacy classes of group

  • values (cyclotomic (nClasses, nClasses)) – Character values

  • irreps – Explicit matrix representations (can contain empty values)

  • classNames – Names of conjugacy classes

  • irrepNames – Names of irreducible representations

  • kronecker – Kronecker coefficients

Kwtype irreps

cell(1,*) of [] or replab.Rep or function_handle, optional

Kwtype classNames

cell(1,*) of charstring, optional

Kwtype irrepNames

cell(1,*) of charstring, optional

Kwtype kronecker

integer(*,*,*) or function_handle, optional

character(self, ind)

Returns an irreducible character in this character table

Parameters

ind (integer) – Index of the character

Returns

Indexed character

Return type

Character

characters(self)

Returns the characters in this table

Returns

List of characters contained in this character table

Return type

cell(1,*) of Character

decomposeRep(self, rep)

Computes the decomposition of a representation into irreducibles using the explicit irreps contained in this table

Parameters

rep (Rep) – Representation to decompose, with rep.field == self.field

Returns

Irreducible decomposition

Return type

Irreducible

static defaultClassNames(elementOrders)

Constructs default names for conjugacy classes

Parameters

elementOrders (integer(1,*)) – Orders of the conjugacy classes elements

Returns

Conjugacy class names

Return type

cell(1,*) of charstring

static defaultIrrepNames(n)

Constructs default names for irreducible representations

Parameters

n (integer) – Number of irreducible representations

Returns

Irreducible representation names

Return type

cell(1,*) of charstring

hasIrrep(self, ind)

Returns whether the irreducible representation that corresponds to the character of given index is available

Parameters

ind (integer) – Index of the character

Returns

Whether the irreducible representation is available

Return type

logical

hasIrreps(self)

Returns whether explicit constructions are available for all irreducible representations

identityConjugacyClassIndex(self)

Returns the index of the conjugacy class containing the identity

Returns

Index of (the column containing) the identity conjugacy class

Return type

integer

imap(self, f)

Maps the character table under an isomorphism

Example

>>> D6a = replab.PermutationGroup.of([3 2 1], [2 3 1]); % doctest: +cyclotomic
>>> D6b = replab.PermutationGroup.of([1 4 3 2], [1 3 4 2]);
>>> f = D6a.isomorphismByImages(D6b, 'preimages', D6a.generators, 'images', D6b.generators);
>>> Ca = D6a.characterTable;
>>> Cb = Ca.imap(f);
>>> Cb.laws.checkSilent;
Parameters

f (FiniteIsomorphism) – Isomorphism with self.group.isSubgroupOf(f.source)

Returns

The character table of the subgroup in the image of the isomorphism

Return type

CharacterTable

irrep(self, ind)

Returns the irreducible representation that corresponds to the character of given index

Parameters

ind (integer) – Index of the character

Returns

An irreducible representation with coefficients in the cyclotomic field

Return type

RepByImages

irreps(self)

Returns a cell vector of the irreducible representations corresponding to the characters in this table

Returns

Irreducible representations

Return type

cell(1,nIrreps) of RepByImages

kronecker(self)

Returns the Kronecker coefficients corresponding to this character table

This returns an integer matrix \(K\) such that \(K(i,j,k)\) is the multiplicity of the \(i\)-th irrep in the product of the \(j\)-th and \(k\)-th irrep.

Returns

Kronecker coefficients

Return type

integer(*,*,*)

linearCharacterIndices(self)

Returns the indices of the linear characters

The linear characters correspond to representation of dimension 1.

Returns

Indices of the linear characters

Return type

integer(1,*)

multiplicities(self, arg)

Calculate the multiplicities of the irreducible characters in this table in a given representation or character

The ordering of coefficients corresponds to the order of irreducible representations in this character table.

Note that this method is optimized when the representation is a tensor product.

Example

>>> G = replab.PermutationGroup.dihedral(3); % doctest: +cyclotomic
>>> ct = G.characterTable;
>>> rep2 = ct.irreps{2};
>>> rep3 = ct.irreps{3};
>>> rep = kron(rep2, rep3);
>>> isequal(ct.multiplicities(rep), [0 0 1])
    1

Example

>>> G = replab.S(5); % doctest: +cyclotomic
>>> ct = G.characterTable;
>>> S5 = ct.group;
>>> isequal(ct.multiplicities(S5.naturalRep), [1 0 1 0 0 0 0])
    1
Parameters

arg (Character or Rep) – Character or representation of group

Returns

Multiplicities of irreducible representations

Return type

(integer(1,*))

nCharacters(self)

Returns the number of characters in this character table

Returns

Number of characters

Return type

integer

nClasses(self)

Returns the number of conjugacy classes in this character table

Returns

Number of conjugacy classes

Return type

integer

nIrreps(self)

Returns the number of

overC(self)

Returns whether the character table is defined over the complex field

Returns

True if the character table is defined over the complex field

Return type

logical

overR(self)

Returns whether the character table is defined over the real field

Returns

True if the character table is defined over the real field

Return type

logical

trivialCharacterIndex(self)

Returns the row index of the trivial character

ComplexCharacterTable

class replab.ComplexCharacterTable(group, classes, values, varargin)

Bases: replab.CharacterTable

Describes the standard character table of a group

Example

>>> G = replab.PermutationGroup.dihedral(3); % doctest: +cyclotomic
>>> G.characterTable
    Class  1a   3a   2a
     Size   1    2    3

X.1 1 1 1 X.2 1 1 -1 X.3 2 -1 0

The character values are stored as elements of the cyclotomic field, using the cyclotomic class which requires external libraries and a Java Virtual Machine available.

Instances of ComplexCharacterTable are immutable.

See CharacterTable for additional details.

Own members

ComplexCharacterTable(group, classes, values, varargin)

Constructs a character table

Parameters
  • group (FiniteGroup) – Group represented by character table

  • classes (ConjugacyClasses) – Conjugacy classes of group

  • values (cyclotomic (nClasses, nClasses)) – Character values

  • irreps – Explicit matrix representations (can contain empty values)

  • classNames – Names of conjugacy classes

  • irrepNames – Names of irreducible representations

  • kronecker – Kronecker coefficients

Kwtype irreps

cell(1,*) of [] or replab.RepByImages, optional

Kwtype classNames

cell(1,*) of charstring, optional

Kwtype irrepNames

cell(1,*) of charstring, optional

Kwtype kronecker

integer(*,*,*), optional

conjugateCharacterIndices(self)

For each character, returns the index of the character conjugate to it

Returns

Index of the conjugate character

Return type

integer(1,*)

static fromIrreps(group, irreps)

Creates a complex character table from a complete list of irreducible exact representations

Parameters
  • group (FiniteGroup) – Finite group

  • irreps (cell(1,*) of Rep) – Irreducible representations

Returns

The corresponding complex character table

Return type

ComplexCharacterTable

static fromRealCharacterTable(R)

Creates a complex character table from a real character table

This works only if its real irreducible representations are absolutely irreducible; though that fact is not checked by this method.

Parameters

R (RealCharacterTable) – Real character table

Returns

The corresponding complex character table

Return type

ComplexCharacterTable

imap(self, f)

Maps the character table under an isomorphism

Example

>>> D6a = replab.PermutationGroup.of([3 2 1], [2 3 1]); % doctest: +cyclotomic
>>> D6b = replab.PermutationGroup.of([1 4 3 2], [1 3 4 2]);
>>> f = D6a.isomorphismByImages(D6b, 'preimages', D6a.generators, 'images', D6b.generators);
>>> Ca = D6a.characterTable;
>>> Cb = Ca.imap(f);
>>> Cb.laws.checkSilent;
Parameters

f (FiniteIsomorphism) – Isomorphism with self.group.isSubgroupOf(f.source)

Returns

The character table of the subgroup in the image of the isomorphism

Return type

ComplexCharacterTable

RealCharacterTable

class replab.RealCharacterTable(group, classes, values, varargin)

Bases: replab.CharacterTable

Describes the real character table of a group

The character values are stored as elements of the cyclotomic field, using the cyclotomic class which requires external libraries and a Java Virtual Machine available.

Instances of RealCharacterTable are immutable.

For additional help, see CharacterTable.

Own members

RealCharacterTable(group, classes, values, varargin)

Constructs a character table

Parameters
  • group (FiniteGroup) – Group represented by character table

  • classes (ConjugacyClasses) – Conjugacy classes of group

  • values (cyclotomic (nIrreps, nClasses)) – Character values

  • irreps – Explicit matrix representations (can contain empty values)

  • classNames – Names of conjugacy classes

  • irrepNames – Names of irreducible representations

  • kronecker – Kronecker coefficients

Kwtype irreps

cell(1,*) of [] or replab.RepByImages, optional

Kwtype classNames

cell(1,*) of charstring, optional

Kwtype irrepNames

cell(1,*) of charstring, optional

Kwtype kronecker

integer(*,*,*), optional