In the explanations below, we use the standard representation of \(S_3\), which corresponds to the 2D representation of \(S_3\) permuting the vertices of a triangle.
S3 = replab.S(3);
rep = S3.irrep([2 1], 'seminormal');
For efficiency, RepLAB returns approximate images by default.
rep.image([2 3 1])
ans =
-0.5000 0.7500
-1.0000 -0.5000
This call is equivalent to the following, where the second argument is the type of image returned.
rep.image([2 3 1], 'double');
For some sparse representations, RepLAB can return sparse matrices.
trep = S3.trivialRep('R', 3);
trep.image([2 3 1], 'double/sparse')
ans =
Compressed Column Sparse (rows = 3, cols = 3, nnz = 3 [33%])
(1, 1) -> 1
(2, 2) -> 1
(3, 3) -> 1
The method errorBound provides an estimate of the maximal error of these approximate images.
rep.errorBound
ans = 5.1279e-16
Some representations can provide exact images of type cyclotomic. The method isExact returns whether a given representation is able to compute exact images.
canProvideExactImages = rep.isExact
rep.image([2 3 1], 'exact')
canProvideExactImages = 1
ans =
-1/2 3/4
-1 -1/2
One can check whether a representation is unitary (i.e. whether \(\rho_g^{-1} = \rho_g^\dagger\)) through the property isUnitary. If RepLAB knows a representation is unitary, faster and more robust algorithms can be used.
rep.isUnitary
ans = 0
This property should be detected at construction, but can be enforced if necessary.
C3 = replab.C(3);
repC = C3.repByImages('R', 3, 'preimages', {[2 3 1]}, 'images', {[0 1 0; 0 0 1; 1 0 0]}, 'isUnitary', true);
repC.isUnitary
ans = 1
The kernel of a representation \(\rho : G \to \operatorname{GL}(\mathbb{K}^D)\) is the subgroup of \(G\) that maps to the identity. It can be computed through the method kernel.
signRep = S3.signRep;
signRep.kernel
ans =
Permutation group acting on 3 elements of order 3
identity: [1, 2, 3]
generator(1 or 'x1'): [2, 3, 1]
recognize.source: Cyclic group C(3) of order 3 < x | x^3 = 1 >
An irreducible representation is a representation that has no trivial subrepresentation (see dedicated section). This property can be checked through the method isIrreducible.
rep.isIrreducible
ans = 1
For representations over \(\mathbb{R}\), the Frobenius-Schur indicator indicates the type of irreducible real representation, through the method frobeniusSchurIndicator. It can be equal to \(1\) (real-type), \(0\) (complex-type representation) or \(-2\) (quaternionic-type).
Here is an example of a quaternionic-type representation over \(\mathbb{R}\).
Q = replab.QuaternionGroup;
rep = Q.naturalRep
rep.frobeniusSchurIndicator
rep =
Orthogonal representation
dimension: 4
field: 'R'
group: Finite group of order 8
isUnitary: true
preimages{1}: [-1, -2, -3, -4]
images{1}: [-1, 0, 0, 0; 0, -1, 0, 0; 0, 0, -1, 0; 0, 0, 0, -1]
preimages{2}: [2, -1, 4, -3]
images{2}: [0, -1, 0, 0; 1, 0, 0, 0; 0, 0, 0, -1; 0, 0, 1, 0]
preimages{3}: [3, -4, -1, 2]
images{3}: [0, 0, -1, 0; 0, 0, 0, 1; 1, 0, 0, 0; 0, -1, 0, 0]
ans = -2
Here is an example of a complex-type representation over \(\mathbb{R}\).
C3 = replab.C(3);
rep = C3.standardRep
rep.frobeniusSchurIndicator
rep =
Real subrepresentation
dimension: 2
field: 'R'
group: Permutation group acting on 3 elements of order 3
isUnitary: false
parent: Orthogonal reducible representation
basis(1,'exact'): [2/3; -1/3; -1/3]
basis(2,'exact'): [1/3; -2/3; 1/3]
ans = 0