5.2 Representation properties

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');

Approximate images

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

Exact images

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  

Unitary representations

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

Kernel

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 >

Irreducibility

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

Frobenius-Schur indicator

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