...

Commits (2)
 ... ... @@ -99,12 +99,13 @@ InstallGlobalFunction( BlockDiagonalRepresentationFast, function(rho, args...) # We don't know the basis that the new_rho(g) are written in, but # since the representations are isomorphic, there is a basis # change matrix A such that new_rho(g) = A^-1 * rho(g) * A # change matrix A such that new_rho(g) = A^-1 * rho(g) * A for all g. # # This is an intertwining operator for rho and new_rho, or # representation isomorphism. # To calculate A, we use a random element of G g := G.1; basis_change := BasisChangeMatrixSimilar@(Image(new_rho, g), Image(rho, g)); # Note: this is where the heavy lifting of the function is basis_change := LinearRepresentationIsomorphismSlow(new_rho, rho); basis := TransposedMat(basis_change); ... ...
 ... ... @@ -10,8 +10,22 @@ #! 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. DeclareGlobalFunction( "RepresentationIsomorphism" ); #! 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. DeclareGlobalFunction( "LinearRepresentationIsomorphism" ); #! @Arguments rho, tau #! @Returns A matrix $A$ or fail #! @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. DeclareGlobalFunction( "LinearRepresentationIsomorphismSlow" ); #! @Arguments rho, tau ... ...
 ... ... @@ -3,13 +3,13 @@ # Finds the fixed point space of the map A -> tau(gen)*A*rho(gen^-1) FixedSpace@ := function(rho, tau, gen) return fail; end; # Picks a random (nonzero) vector in the intersection of some vector # spaces over C RandomVectorIntersection@ := function(spaces) return fail; end; # Wraps an n^2 long list into a n long list of n long lists ... ... @@ -17,8 +17,8 @@ WrapMatrix@ := function(vec, n) return List([0..n-1], i -> vec{[1+n*i..n*(i+1)]}); end; InstallGlobalFunction( RepresentationIsomorphism, function(rho, tau) local G; InstallGlobalFunction( LinearRepresentationIsomorphism, function(rho, tau) local G, n, gens, fixed_spaces, A_cand; if not AreRepsIsomorphic(rho, tau) then return fail; ... ... @@ -46,6 +46,52 @@ InstallGlobalFunction( RepresentationIsomorphism, function(rho, tau) return A_cand; end ); # checks if it is the case that for all g in G, tau(g)*A = A*rho(g) IsRepresentationIsomorphism@ := function(rho, tau, A) local G, gens, n; G := Source(rho); n := DegreeOfRepresentation(rho); # we only need to check the property for the generators gens := GeneratorsOfGroup(G); # need bijection and G-action preserving return RankMat(A) = n and ForAll(gens, g -> Image(tau, g) * A = A * Image(rho, g)); end; # calculates an isomorphism between rho and tau by summing over G # (slow, but works) # TODO: can I use a trick to sum over the generators instead of G? InstallGlobalFunction( LinearRepresentationIsomorphismSlow, function(rho, tau, args...) local G, n, candidate, tries; G := Source(rho); n := DegreeOfRepresentation(rho); if not AreRepsIsomorphic(rho, tau) then return fail; fi; # we just pick random invertible matrices and sum over the group # until we actually get a representation isomorphism. This almost # always happens, so we "should" get one almost always on the # first time. candidate := NullMat(n, n); tries := 0; repeat candidate := RandomInvertibleMat(n); candidate := Sum(G, g -> Image(tau, g) * candidate * Image(rho, g^-1)); tries := tries + 1; until IsRepresentationIsomorphism@(rho, tau, candidate); if Length(args) > 0 and args[1] = "print tries" then Print(tries, " tries\n"); fi; return candidate; end ); # Tells you if two representations of the same group are isomorphic by # examining characters InstallGlobalFunction( AreRepsIsomorphic, function(rep1, rep2) ... ...
 ... ... @@ -15,7 +15,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -83,38 +83,46 @@
3.1-2 IsFiniteGroupPermutationRepresentation
4 Computing decompositions of representations
4.1 Algorithms due to Serre
 ... ... @@ -18,7 +18,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -86,38 +86,46 @@
3.1-2 IsFiniteGroupPermutationRepresentation
4 Computing decompositions of representations
4.1 Algorithms due to Serre
 ... ... @@ -15,7 +15,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -84,7 +84,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -18,7 +18,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -87,7 +87,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -15,7 +15,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -76,7 +76,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -18,7 +18,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -79,7 +79,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -15,7 +15,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -58,7 +58,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -18,7 +18,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind
... ... @@ -61,7 +61,7 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -5,7 +5,7 @@ GAP (RepnDecomp) - Chapter 4: Computing decompositions of representations GAP (RepnDecomp) - Chapter 4: Isomorphisms between representations ... ... @@ -15,62 +15,60 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

4 Computing decompositions of representations
4.1 Algorithms due to Serre

4 Computing decompositions of representations

4 Isomorphisms between representations

4.1 Algorithms due to Serre

4.1 Finding explicit isomorphisms

These operations compute various decompositions of a representation \rho : G \to GL(V) where G is finite and V is a finite-dimensional \mathbb{C}-vector space. The terms used here are taken from Serre's Linear Representations of Finite Groups.

4.1-1 LinearRepresentationIsomorphism
4.1-1 CanonicalDecomposition
‣ LinearRepresentationIsomorphism( rho, tau )( function )

Returns: A matrix A or fail

‣ CanonicalDecomposition( rho )( attribute )

Returns: List of vector spaces V_i, each G-invariant and a direct sum of isomorphic irreducibles. That is, for each i, V_i \cong \oplus_j W_i (as representations) where W_i is an irreducible G-invariant vector space.

Let \rho : G \to GL(V) and \tau : G \to GL(W). If 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.

Computes the canonical decomposition of V into \oplus_i\;V_i using the formulas for projections V \to V_i due to Serre.

4.1-2 LinearRepresentationIsomorphismSlow
4.1-2 IrreducibleDecomposition
‣ LinearRepresentationIsomorphismSlow( rho, tau )( function )

Returns: A matrix A or fail

‣ IrreducibleDecomposition( rho )( attribute )

Returns: List of vector spaces W_j such that V = \oplus_j W_j and each W_j is an irreducible G-invariant vector space.

The same as LinearRepresentationIsomorphism (4.1-1), 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.

Computes the decomposition of V into irreducible subprepresentations.

4.1-3 AreRepsIsomorphic
4.1-3 IrreducibleDecompositionCollected
‣ AreRepsIsomorphic( rho, tau )( function )

Returns: true if rho and tau are isomorphic as representations, false otherwise.

‣ IrreducibleDecompositionCollected( rho )( attribute )

Returns: List of lists V_i of vector spaces V_{ij} such that V = \oplus_i \oplus_j V_{ij} and V_{ik} \cong V_{il} for all i, k and l (as representations).

Computes the decomposition of V into irreducible subrepresentations, grouping together the isomorphic subrepresentations.

Note that two representations are isomorphic iff they give similar matrices, also iff they have the same irreducible decomposition. We use characters to determine the latter: the first is expensive to check for large degree representations.

Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
This diff is collapsed.
 ... ... @@ -5,7 +5,7 @@ GAP (RepnDecomp) - Chapter 5: Paralellised functions GAP (RepnDecomp) - Chapter 5: Computing decompositions of representations ... ... @@ -15,50 +15,62 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

5 Paralellised functions
5.1 Decompositions

5 Paralellised functions

5 Computing decompositions of representations

5.1 Decompositions

5.1 Algorithms due to Serre

These functions are copies of other functions in the package, but made to run in parallel. Usually, the trick is to rearrange the formulas so that we can run independent calculations per irrep in the list of (relevant) irreps of our group G.

These operations compute various decompositions of a representation \rho : G \to GL(V) where G is finite and V is a finite-dimensional \mathbb{C}-vector space. The terms used here are taken from Serre's Linear Representations of Finite Groups.

5.1-1 IrreducibleDecompositionCollectedParallel
5.1-1 CanonicalDecomposition
‣ IrreducibleDecompositionCollectedParallel( rho, num_jobs[, irreps] )( function )

Returns: List of lists V_i of vector spaces V_{ij} such that V = \oplus_i \oplus_j V_{ij} and V_{ik} \cong V_{il} for all i, k and l (as representations).

‣ CanonicalDecomposition( rho )( attribute )

Returns: List of vector spaces V_i, each G-invariant and a direct sum of isomorphic irreducibles. That is, for each i, V_i \cong \oplus_j W_i (as representations) where W_i is an irreducible G-invariant vector space.

Computes the canonical decomposition of V into \oplus_i\;V_i using the formulas for projections V \to V_i due to Serre.

5.1-2 IrreducibleDecomposition

This function uses the same algorithm as IrreducibleDecompositionCollectedHybrid (???), but runs the per-irrep calculation to break down the canonical summands in parallel. Uses irreps as the list of relevant irreps, if given.

‣ IrreducibleDecomposition( rho )( attribute )

Returns: List of vector spaces W_j such that V = \oplus_j W_j and each W_j is an irreducible G-invariant vector space.

Computes the decomposition of V into irreducible subprepresentations.

5.1-2 BlockDiagonalRepresentationParallel

5.1-3 IrreducibleDecompositionCollected
‣ IrreducibleDecompositionCollected( rho )( attribute )

Returns: List of lists V_i of vector spaces V_{ij} such that V = \oplus_i \oplus_j V_{ij} and V_{ik} \cong V_{il} for all i, k and l (as representations).

‣ BlockDiagonalRepresentationParallel( rho, num_jobs[, irreps] )( function )

Returns: The same result as BlockDiagonalRepresentationFast (1.1-3).

Computes the decomposition of V into irreducible subrepresentations, grouping together the isomorphic subrepresentations.

Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -8,7 +8,7 @@ GAP (RepnDecomp) - Chapter 5: Paralellised functions GAP (RepnDecomp) - Chapter 5: Computing decompositions of representations ... ... @@ -18,50 +18,62 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

5 Paralellised functions
5.1 Decompositions

5 Paralellised functions

5 Computing decompositions of representations

5.1 Decompositions

5.1 Algorithms due to Serre

These functions are copies of other functions in the package, but made to run in parallel. Usually, the trick is to rearrange the formulas so that we can run independent calculations per irrep in the list of (relevant) irreps of our group $$G$$.

These operations compute various decompositions of a representation $$\rho : G \to GL(V)$$ where $$G$$ is finite and $$V$$ is a finite-dimensional $$\mathbb{C}$$-vector space. The terms used here are taken from Serre's Linear Representations of Finite Groups.

5.1-1 IrreducibleDecompositionCollectedParallel
5.1-1 CanonicalDecomposition
‣ IrreducibleDecompositionCollectedParallel( rho, num_jobs[, irreps] )( function )

Returns: List of lists $$V_i$$ of vector spaces $$V_{ij}$$ such that $$V = \oplus_i \oplus_j V_{ij}$$ and $$V_{ik} \cong V_{il}$$ for all $$i$$, $$k$$ and $$l$$ (as representations).

‣ CanonicalDecomposition( rho )( attribute )

Returns: List of vector spaces $$V_i$$, each $$G$$-invariant and a direct sum of isomorphic irreducibles. That is, for each $$i$$, $$V_i \cong \oplus_j W_i$$ (as representations) where $$W_i$$ is an irreducible $$G$$-invariant vector space.

Computes the canonical decomposition of $$V$$ into $$\oplus_i\;V_i$$ using the formulas for projections $$V \to V_i$$ due to Serre.

5.1-2 IrreducibleDecomposition

This function uses the same algorithm as IrreducibleDecompositionCollectedHybrid (???), but runs the per-irrep calculation to break down the canonical summands in parallel. Uses irreps as the list of relevant irreps, if given.

‣ IrreducibleDecomposition( rho )( attribute )

Returns: List of vector spaces $$W_j$$ such that $$V = \oplus_j W_j$$ and each $$W_j$$ is an irreducible $$G$$-invariant vector space.

Computes the decomposition of $$V$$ into irreducible subprepresentations.

5.1-2 BlockDiagonalRepresentationParallel

5.1-3 IrreducibleDecompositionCollected
‣ IrreducibleDecompositionCollected( rho )( attribute )

Returns: List of lists $$V_i$$ of vector spaces $$V_{ij}$$ such that $$V = \oplus_i \oplus_j V_{ij}$$ and $$V_{ik} \cong V_{il}$$ for all $$i$$, $$k$$ and $$l$$ (as representations).

‣ BlockDiagonalRepresentationParallel( rho, num_jobs[, irreps] )( function )

Returns: The same result as BlockDiagonalRepresentationFast (1.1-3).

Computes the decomposition of $$V$$ into irreducible subrepresentations, grouping together the isomorphic subrepresentations.

Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
This diff is collapsed.
This diff is collapsed.
public/chap7.html 0 → 100644
 GAP (RepnDecomp) - Chapter 7: Utility functions
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

7 Utility functions

7.1 Miscellaneous

7.1-1 BlockDiagonalMatrix
‣ BlockDiagonalMatrix( blocks )( function )

Returns: Matrix given by putting the given matrix blocks on the diagonal

7.1-2 ComposeHomFunction
‣ ComposeHomFunction( hom, func )( function )

Returns: Homomorphism g given by g(x) = func(hom(x)).

This is mainly for convenience, since it handles all GAP accounting issues regarding the range, ByImages vs ByFunction, etc.

7.1-3 Replicate
‣ Replicate( elem, n )( function )

Returns: List of n copies of elem

7.2 Representation theoretic functions

7.2-1 TensorProductRepLists
‣ TensorProductRepLists( list1, list2 )( function )

Returns: All possible tensor products given by \rho \otimes \tau where \rho is taken from list1 and \tau is taken from list2.

7.2-2 DirectSumRepList
‣ DirectSumRepList( list )( function )

Returns: Direct sum of the list of representations list

7.2-3 DegreeOfRepresentation
‣ DegreeOfRepresentation( rho )( function )

Returns: Degree of the representation rho. That is, \mbox{Tr}(\rho(e_G)), where e_G is the identity of the group G that rho has as domain.

Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

 GAP (RepnDecomp) - Chapter 7: Utility functions
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

7 Utility functions

7.1 Miscellaneous

7.1-1 BlockDiagonalMatrix
‣ BlockDiagonalMatrix( blocks )( function )

Returns: Matrix given by putting the given matrix blocks on the diagonal

7.1-2 ComposeHomFunction
‣ ComposeHomFunction( hom, func )( function )

Returns: Homomorphism g given by g(x) = func(hom(x)).

This is mainly for convenience, since it handles all GAP accounting issues regarding the range, ByImages vs ByFunction, etc.

7.1-3 Replicate
‣ Replicate( elem, n )( function )

Returns: List of n copies of elem

7.2 Representation theoretic functions

7.2-1 TensorProductRepLists
‣ TensorProductRepLists( list1, list2 )( function )

Returns: All possible tensor products given by $$\rho \otimes \tau$$ where $$\rho$$ is taken from list1 and $$\tau$$ is taken from list2.

7.2-2 DirectSumRepList
‣ DirectSumRepList( list )( function )

Returns: Direct sum of the list of representations list

7.2-3 DegreeOfRepresentation
‣ DegreeOfRepresentation( rho )( function )

Returns: Degree of the representation rho. That is, $$\mbox{Tr}(\rho(e_G))$$, where $$e_G$$ is the identity of the group $$G$$ that rho has as domain.

Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

 ... ... @@ -15,9 +15,9 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

... ... @@ -25,33 +25,35 @@

Index

AreRepsIsomorphic 6.2-3
AreRepsIsomorphic 4.1-3
BlockDiagonalBasis, for IsGroupHomomorphism 1.1-1
BlockDiagonalMatrix 6.1-1
BlockDiagonalMatrix 7.1-1
BlockDiagonalRepresentation, for IsGroupHomomorphism 1.1-2
BlockDiagonalRepresentationFast 1.1-3
BlockDiagonalRepresentationParallel 5.1-2
CanonicalDecomposition, for IsGroupHomomorphism 4.1-1
BlockDiagonalRepresentationParallel 6.1-2
CanonicalDecomposition, for IsGroupHomomorphism 5.1-1
ClassSumCentralizer 2.2-2
ComposeHomFunction 6.1-2
DegreeOfRepresentation 6.2-4
DirectSumRepList 6.2-2
IrreducibleDecomposition, for IsGroupHomomorphism 4.1-2
IrreducibleDecompositionCollected, for IsGroupHomomorphism 4.1-3
IrreducibleDecompositionCollectedParallel 5.1-1
ComposeHomFunction 7.1-2
DegreeOfRepresentation 7.2-3
DirectSumRepList 7.2-2
IrreducibleDecomposition, for IsGroupHomomorphism 5.1-2
IrreducibleDecompositionCollected, for IsGroupHomomorphism 5.1-3
IrreducibleDecompositionCollectedParallel 6.1-1
IsFiniteGroupLinearRepresentation, for IsGroupHomomorphism 3.1-1
IsFiniteGroupPermutationRepresentation, for IsGroupHomomorphism 3.1-2
Replicate 6.1-3
LinearRepresentationIsomorphism 4.1-1
LinearRepresentationIsomorphismSlow 4.1-2
Replicate 7.1-3
RepresentationCentralizer 2.2-1
RepresentationCentralizerBlocks 2.1-1
TensorProductRepLists 6.2-1
TensorProductRepLists 7.2-1

Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...
 ... ... @@ -18,9 +18,9 @@
Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

... ... @@ -28,33 +28,35 @@

Index

AreRepsIsomorphic 6.2-3
AreRepsIsomorphic 4.1-3
BlockDiagonalBasis, for IsGroupHomomorphism 1.1-1
BlockDiagonalMatrix 6.1-1
BlockDiagonalMatrix 7.1-1
BlockDiagonalRepresentation, for IsGroupHomomorphism 1.1-2
BlockDiagonalRepresentationFast 1.1-3
BlockDiagonalRepresentationParallel 5.1-2
CanonicalDecomposition, for IsGroupHomomorphism 4.1-1
BlockDiagonalRepresentationParallel 6.1-2
CanonicalDecomposition, for IsGroupHomomorphism 5.1-1
ClassSumCentralizer 2.2-2
ComposeHomFunction 6.1-2
DegreeOfRepresentation 6.2-4
DirectSumRepList 6.2-2
IrreducibleDecomposition, for IsGroupHomomorphism 4.1-2
IrreducibleDecompositionCollected, for IsGroupHomomorphism 4.1-3
IrreducibleDecompositionCollectedParallel 5.1-1
ComposeHomFunction 7.1-2
DegreeOfRepresentation 7.2-3
DirectSumRepList 7.2-2
IrreducibleDecomposition, for IsGroupHomomorphism 5.1-2
IrreducibleDecompositionCollected, for IsGroupHomomorphism 5.1-3
IrreducibleDecompositionCollectedParallel 6.1-1
IsFiniteGroupLinearRepresentation, for IsGroupHomomorphism 3.1-1
IsFiniteGroupPermutationRepresentation, for IsGroupHomomorphism 3.1-2
Replicate 6.1-3
LinearRepresentationIsomorphism 4.1-1
LinearRepresentationIsomorphismSlow 4.1-2
Replicate 7.1-3
RepresentationCentralizer 2.2-1
RepresentationCentralizerBlocks 2.1-1
TensorProductRepLists 6.2-1
TensorProductRepLists 7.2-1

Goto Chapter: Top 1 2 3 4 5 6 Ind
Goto Chapter: Top 1 2 3 4 5 6 7 Ind

generated by GAPDoc2HTML

... ...