...

Commits (2)
 ... ... @@ -26,7 +26,7 @@ DeclareAttribute( "BlockDiagonalBasis", IsGroupHomomorphism ); #! and put $\rho$ into a nice form. DeclareAttribute( "BlockDiagonalRepresentation", IsGroupHomomorphism ); #! @Arguments rho[, irreps, F] #! @Arguments rho[, irreps] #! @Returns A record ... ... @@ -40,11 +40,6 @@ DeclareAttribute( "BlockDiagonalRepresentation", IsGroupHomomorphism ); #! default (running Dixon's algorithm) is too expensive, or e.g. you #! don't want representations over Cyclotomics. #! F is the field your representations are over. The default is #! Cyclotomics, but if you know your representation (and irreps) is #! over e.g. Rationals or some finite extension, you can avoid #! Cyclotomics entirely by saying what your field is. #! The return value of this function is a record with fields: #! * basis: same as BlockDiagonalBasis ... ... @@ -53,6 +48,8 @@ DeclareAttribute( "BlockDiagonalRepresentation", IsGroupHomomorphism ); #! * decomposition: same as IrreducibleDecompositionCollected #! * centralizer_basis: same as RepresentationCentralizerBlocks #! When I say "the same", I mean up to reordering and isomorphism as #! representations. DeclareGlobalFunction( "BlockDiagonalRepresentationFast" );
 ... ... @@ -2,7 +2,7 @@ #! @Section Finding explicit isomorphisms #! @Arguments rho, tau #! @Arguments rho, tau[, rho_cent_basis, tau_cent_basis] #! @Returns A matrix $A$ or fail ... ... @@ -10,10 +10,12 @@ #! there exists a linear map $A : V \to W$ such that for all $g \in #! G$, $\tau(g)A = A\rho(g)$, this function returns one such $A$. $A$ #! is the isomorphism between the representations. If the #! representations are not isomorphic, then fail is returned. The #! method used involves solving linear systems (size depending on the #! degree of the reps), and depends on the size of $G$ as little as #! possible. #! representations are not isomorphic, then fail is returned. #! If no bases for the centralizers are given, we have no option but #! to sum over $G$ to perform this calculation. If bases for the #! centralizers are given, we can use them to calculate class/group #! sums and thus avoid summing over $G$. DeclareGlobalFunction( "LinearRepresentationIsomorphism" ); #! @Arguments rho, tau ... ... @@ -22,9 +24,9 @@ DeclareGlobalFunction( "LinearRepresentationIsomorphism" ); #! @Description The same as , but this function uses a #! simpler method which involves summing over $G$. This is slow for #! large $G$, but might be fast in the special case of a very large #! group and very small degree representation. #! simpler method which always involves summing over $G$. This is slow #! for large $G$, but might be fast in the special case of a very #! large group and very small degree representation. DeclareGlobalFunction( "LinearRepresentationIsomorphismSlow" ); #! @Arguments rho, tau ... ...
 ... ... @@ -16,8 +16,6 @@ end; # Converts rho to a matrix representation if necessary ConvertRhoIfNeeded@ := function(rho) local gens, ims, high, new_ims, new_range, new_rho, G; # We want rho to be a homomorphism to a matrix group since this # algorithm works on matrices. We convert a permutation group into # an isomorphic matrix group so that this is the case. If we don't ... ... @@ -28,13 +26,7 @@ ConvertRhoIfNeeded@ := function(rho) fi; if IsFiniteGroupPermutationRepresentation(rho) then G := Source(rho); gens := GeneratorsOfGroup(G); ims := List(gens, g -> Image(rho, g)); high := LargestMovedPoint(ims); new_ims := List(ims, i -> PermutationMat(i, high)); new_range := Group(new_ims); return GroupHomomorphismByImagesNC(G, new_range, gens, new_ims); return PermToLinearRep(rho); fi; return fail; ... ...
 ... ... @@ -42,3 +42,9 @@ DeclareGlobalFunction( "DirectSumRepList" ); #! $\mbox{Tr}(\rho(e_G))$, where $e_G$ is the identity of the group #! $G$ that rho has as domain. DeclareGlobalFunction( "DegreeOfRepresentation" ); #! @Arguments rho #! @Returns Linear representation $\rho$ isomorphic to the permutation #! representation rho. DeclareGlobalFunction( "PermToLinearRep" );
 ... ... @@ -214,3 +214,15 @@ OrbitalMatrix@ := function(G, representative) return orbital; end; InstallGlobalFunction( PermToLinearRep, function(rho) local n; if not IsPermGroup(Range(rho)) then return fail; fi; n := DegreeOfRepresentation(rho); return ComposeHomFunction(rho, perm -> PermutationMat(perm, n)); end );