`‣ 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; true

`‣ 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))); true

`‣ 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); true 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; true

`‣ 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; true

generated by GAPDoc2HTML