GAP is well-equipped to deal with finite cosets. However, if a coset is infinite, methods may not be available, may be faulty, or may run forever. The TwistedConjugacyClone package provides additional methods for existing functions that can deal with infinite cosets of PcpGroups.
The only completely new functions are DoubleCosetIndex
(7.2-7) and its NC
version.
Calculating the intersection of two right cosets Hx and Ky can be reduced to calculating the intersection H \cap K and verifying whether xy^{-1} \in HK (see \in
(7.2-1)).
‣ Intersection ( C1, C2, ... ) | ( function ) |
‣ Intersection ( L ) | ( function ) |
Returns: the intersection of the right cosets C1, C2, ...
Alternatively, this function also accepts a single list of right cosets L as argument.
This intersection is always a right coset, or the empty list.
gap> G := ExamplesOfSomePcpGroups( 5 );; gap> H := Subgroup( G, [ G.1*G.2^-1*G.3^-1*G.4^-1, G.2^-1*G.3*G.4^-2 ] );; gap> K := Subgroup( G, [ G.1*G.3^-2*G.4^2, G.1*G.4^4 ] );; gap> x := G.1*G.3^-1;; gap> y := G.1*G.2^-1*G.3^-2*G.4^-1;; gap> z := G.1*G.2*G.3*G.4^2;; gap> Hx := RightCoset( H, x );; gap> Ky := RightCoset( K, y );; gap> Intersection( Hx, Ky ); RightCoset(<group with 2 generators>,<object>) gap> Kz := RightCoset( K, z );; gap> Intersection( Hx, Kz ); [ ]
Algorithms designed for computing with twisted conjugacy classes can be leveraged to do computations involving double cosets, see [Ter25, Sec. 9] for a description on this. When the TwistedConjugacyClone package is loaded, it does this automatically, and the functions below should then work for PcpGroups, even if they are infinite.
‣ \in ( g, D ) | ( operation ) |
Returns: true
if g is an element of D, otherwise false
.
‣ Size ( D ) | ( operation ) |
Returns: the number of elements in D.
‣ List ( D ) | ( function ) |
Returns: a list containing the elements of D.
If D is infinite, this will run forever. It is recommended to first test the finiteness of D using Size
(7.2-2).
‣ \= ( C, D ) | ( operation ) |
Returns: true
if C and D are the same double coset, otherwise false
.
‣ DoubleCosets ( G, H, K ) | ( function ) |
‣ DoubleCosetsNC ( G, H, K ) | ( operation ) |
Returns: a duplicate-free list of all (H,K)
-double cosets in G if there are finitely many, otherwise fail
.
The groups H and K must be subgroups of the group G. The NC
version does not check whether this is the case.
‣ DoubleCosetRepsAndSizes ( G, H, K ) | ( operation ) |
Returns: a list containing pairs of the form [ r, n ]
, where r
is a representative and n
is the size of a double coset.
While for finite groups this function is supposed to be faster than DoubleCosetsNC
(7.2-5), for PcpGroups it is usually slower.
‣ DoubleCosetIndex ( G, H, K ) | ( function ) |
‣ DoubleCosetIndexNC ( G, H, K ) | ( operation ) |
Returns: the double coset index of the pair (H,K).
The groups H and K must be subgroups of the group G. The NC
version does not check whether this is the case.
gap> HxK := DoubleCoset( H, x, K );; gap> HyK := DoubleCoset( H, y, K );; gap> HzK := DoubleCoset( H, z, K );; gap> y in HxK; true gap> z in HxK; false gap> HxK = HyK; true gap> HxK = HzK; false gap> DoubleCosets( G, H, K ); [ DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>), DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>) ] gap> DoubleCosetIndex( G, H, K ); 2
generated by GAPDoc2HTML