Goto Chapter: Top 1 2 3 4 5 6 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

6 Centralizer (commutant) rings
 6.1 Finding a basis for the centralizer
 6.2 Using the centralizer for computations

6 Centralizer (commutant) rings

6.1 Finding a basis for the centralizer

6.1-1 CentralizerBlocksOfRepresentation
‣ CentralizerBlocksOfRepresentation( rho )( function )

Returns: List of vector space generators for the centralizer ring of \(\rho(G)\), written in the basis given by BlockDiagonalBasisOfRepresentation (5.1-1). The matrices are given as a list of blocks.

Let \(G\) have irreducible representations \(\rho_i\) with multiplicities \(m_i\). The centralizer has dimension \(\sum_i m_i^2\) as a \(\mathbb{C}\)-vector space. This function gives the minimal number of generators required.

gap> G := DihedralGroup(8);;
gap> irreps := IrreducibleRepresentations(G);;
gap> # rho is the sum of two isomorphic degree 1 irreps, and a degree
> # 2 irrep.
> rho := DirectSumOfRepresentations([irreps[4], irreps[4], irreps[5]]);;
gap> # Compute a basis for the centralizer (in blocks)
> cent_basis_blocks := CentralizerBlocksOfRepresentation(rho);;
gap> # Verify that the dimension is the sum of the multiplicities squared,
> # in this case 2^2 + 1 = 5.
> Length(cent_basis_blocks) = 5;

6.1-2 CentralizerOfRepresentation
‣ CentralizerOfRepresentation( arg )( function )

Returns: List of vector space generators for the centralizer ring of \(\rho(G)\).

This gives the same result as CentralizerBlocksOfRepresentation (6.1-1), but with the matrices given in their entirety: not as lists of blocks, but as full matrices.

gap> # This is the actual basis for the centralizer.
> cent_basis := CentralizerOfRepresentation(rho);;
gap> # All matrices in the span should commute with the image of rho.
> ForAll(G, g -> ForAll(cent_basis, M -> Image(rho, g)*M = M*Image(rho,g)));

6.2 Using the centralizer for computations

6.2-1 ClassSumCentralizer
‣ ClassSumCentralizer( rho, class, cent_basis )( function )

Returns: \(\sum_{s \in t^G} \rho(s)\), where \(t\) is a representative of the conjugacy class class of \(G\).

We require that rho is unitary. Uses the given orthonormal basis (with respect to the inner product \(\langle A, B \rangle = \mbox{Trace}(AB^*)\)) for the centralizer ring of rho to calculate the sum of the conjugacy class class quickly, i.e. without summing over the class.

NOTE: Orthonormality of cent_basis and unitarity of rho are checked. See ClassSumCentralizerNC (6.2-2) for a version of this function without checks. The checks are not very expensive, so it is recommended you use the function with checks.

gap> # Now we have a basis for the centralizer, we can sum a conjugacy class
> # of G.
> class := List(ConjugacyClasses(G)[3]);;
gap> # We can do the computation naively, with no centralizer basis given:
> sum1 := ClassSumCentralizer(rho, class, fail);;
gap> # Before summing with th centralizer basis given, we need to
> # orthonormalize it. It's already orthogonal, but not normal:
> orth_basis := OrthonormalBasis@RepnDecomp(cent_basis);;
gap> IsOrthonormalSet(orth_basis, InnerProduct@RepnDecomp);
gap> # And with the centralizer given, should be more efficient in certain
> # cases (small degree, low multiplicities, but very large group)
> sum2 := ClassSumCentralizer(rho, class, orth_basis);;
gap> # Should be the same:
> sum1 = sum2;

6.2-2 ClassSumCentralizerNC
‣ ClassSumCentralizerNC( rho, class, cent_basis )( function )

The same as ClassSumCentralizer (6.2-1), but does not check the basis for orthonormality or the representation for unitarity.

gap> # The very same as the above, but with no checks on orthonormality.
> sum3 := ClassSumCentralizerNC(rho, class, orth_basis);;
gap> sum1 = sum3;
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 Ind

generated by GAPDoc2HTML