‣ 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