Let G, H be groups and \varphi,\psi\colon H \to G group homomorphisms. Then the pair (\varphi,\psi) induces a (right) group action on G given by
G \times H \to G\colon (g,h) \mapsto g \cdot h := \psi(h)^{-1} g\varphi(h).
This group action is called (\varphi,\psi)-twisted conjugation, and induces an equivalence relation on the group G. We say that g_1, g_2 \in G are (\varphi,\psi)-twisted conjugate, denoted by g_1 \sim_{\varphi,\psi} g_2, if and only if there exists some element h \in H such that g_1 \cdot h = g_2, or equivalently g_1 = \psi(h) g_2 \varphi(h)^{-1}.
If \varphi\colon G \to G is an endomorphism of a group G, then by \varphi-twisted conjugacy we mean (\varphi,\mathrm{id}_G)-twisted conjugacy. Most functions in this package will allow you to input a single endomorphism instead of a pair of homomorphisms. The "missing" endomorphism will automatically be assumed to be the identity mapping. Similarly, if a single group element is given instead of two, the second will be assumed to be the identity.
‣ TwistedConjugation ( hom1[, hom2] ) | ( function ) |
Implements the twisted conjugation (right) group action induced by the pair of homomorphisms ( hom1, hom2 ) as a function.
‣ IsTwistedConjugate ( hom1[, hom2], g1[, g2] ) | ( function ) |
Tests whether the elements g1 and g2 are twisted conjugate under the twisted conjugacy action of the pair of homomorphisms ( hom1, hom2 ).
This function relies on the output of RepresentativeTwistedConjugation
.
‣ RepresentativeTwistedConjugation ( hom1[, hom2], g1[, g2] ) | ( function ) |
Computes an element that maps g1 to g2 under the twisted conjugacy action of the pair of homomorphisms ( hom1, hom2 ) or returns fail
if no such element exists.
If G is abelian, this function relies on (a generalisation of) [DT21, Algorithm 4]. If H is finite, it relies on a stabiliser-orbit algorithm. Otherwise, it relies on a mixture of the algorithms described in [Rom16, Theorem 3], [BKL+20, Section 5.4], [Rom21, Section 7] and [DT21, Algorithm 6].
gap> G := AlternatingGroup( 6 );; gap> H := SymmetricGroup( 5 );; gap> phi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ], > [ (1,2)(3,4), () ] );; gap> psi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ], > [ (1,4)(3,6), () ] );; gap> tc := TwistedConjugation( phi, psi );; gap> g1 := (4,6,5);; gap> g2 := (1,6,4,2)(3,5);; gap> IsTwistedConjugate( psi, phi, g1, g2 ); false gap> h := RepresentativeTwistedConjugation( phi, psi, g1, g2 ); (1,2) gap> tc( g1, h ) = g2; true
The equivalence classes of the equivalence relation \sim_{\varphi,\psi} are called the Reidemeister classes of (\varphi,\psi) or the (\varphi,\psi)-twisted conjugacy classes. We denote the Reidemeister class of g \in G by [g]_{\varphi,\psi}. The number of Reidemeister classes is called the Reidemeisternumber R(\varphi,\psi) and is always a positive integer or infinity.
‣ ReidemeisterClass ( hom1[, hom2], g ) | ( function ) |
‣ TwistedConjugacyClass ( hom1[, hom2], g ) | ( function ) |
If hom1 and hom2 are group homomorphisms from a group H to a group G, this method creates the Reidemeister class of the pair (hom1, hom2) with representative g. The following attributes and operations are available:
Representative
, which returns g,
GroupHomomorphismsOfReidemeisterClass
, which returns the list [ hom1, hom2 ],
ActingDomain
, which returns the group H,
FunctionAction
, which returns the twisted conjugacy action on G,
Random
, which returns a random element belonging to the Reidemeister class,
\in
, which can be used to test if an element belongs to the Reidemeister class,
List
, which lists all elements in the Reidemeister class if there are finitely many, otherwise returns fail
,
Size
, which gives the number of elements in the Reidemeister class,
StabiliserOfExternalSet
, which gives the stabiliser of the Reidemeister class under the twisted conjugacy action.
‣ ReidemeisterClasses ( hom1[, hom2] ) | ( function ) |
‣ TwistedConjugacyClasses ( hom1[, hom2] ) | ( function ) |
Returns a list containing the Reidemeister classes of ( hom1, hom2 ) if the Reidemeister number R( hom1, hom2 ) is finite, or returns fail
otherwise. It is guaranteed that the Reidemeister class of the identity is in the first position.
If G is abelian, this function relies on (a generalisation of) [DT21, Algorithm 5]. If G and H are finite and G is not abelian, it relies on an orbit-stabiliser algorithm. Otherwise, it relies on (variants of) [DT21, Algorithm 7].
This function is only guaranteed to produce a result if either G = H or G is nilpotent-by-finite.
‣ ReidemeisterNumber ( hom1[, hom2] ) | ( function ) |
‣ NrTwistedConjugacyClasses ( hom1[, hom2] ) | ( function ) |
Returns the Reidemeister number of ( hom1, hom2 ), i.e. the number of Reidemeister classes.
If G is abelian, this function relies on (a generalisation of) [Jia83, Theorem 2.5]. If G = H, G is finite non-abelian and \psi = \mathrm{id}_G, it relies on [FH94, Theorem 5]. Otherwise, it uses the output of ReidemeisterClasses
.
This function is only guaranteed to produce a result if either G = H or G is nilpotent-by-finite.
gap> tcc := ReidemeisterClass( phi, psi, g1 ); (4,6,5)^G gap> Representative( tcc ); (4,6,5) gap> GroupHomomorphismsOfReidemeisterClass( tcc ); [ [ (1,2)(3,5,4), (2,3)(4,5) ] -> [ (1,2)(3,4), () ], [ (1,2)(3,5,4), (2,3)(4,5) ] -> [ (1,4)(3,6), () ] ] gap> ActingDomain( tcc ) = H; true gap> FunctionAction( tcc )( g1, h ); (1,6,4,2)(3,5) gap> Random( tcc ) in tcc; true gap> List( tcc ); [ (4,6,5), (1,6,4,2)(3,5) ] gap> Size( tcc ); 2 gap> StabiliserOfExternalSet( tcc ); Group([ (1,2,3,4,5), (1,3,4,5,2) ]) gap> ReidemeisterClasses( phi, psi ){[1..3]}; [ ()^G, (4,5,6)^G, (4,6,5)^G ] gap> NrTwistedConjugacyClasses( phi, psi ); 184
The set of all Reidemeister numbers of automorphisms is called the Reidemeister spectrum and is denoted by \mathrm{Spec}_R(G), i.e.
\mathrm{Spec}_R(G) := \{ R(\varphi) \mid \varphi \in \mathrm{Aut}(G)\}.
The set of all Reidemeister numbers of endomorphisms is called the extended Reidemeister spectrum and is denoted by \mathrm{ESpec}_R(G), i.e.
\mathrm{ESpec}_R(G) := \{ R(\varphi) \mid \varphi \in \mathrm{End}(G)\}.
The set of all Reidemeister numbers of pairs of homomorphisms from a group H to a group G is called the coincidence Reidemeister spectrum of H and G and is denoted by \mathrm{CSpec}_R(H,G), i.e.
\mathrm{CSpec}_R(H,G) := \{ R(\varphi, \psi) \mid \varphi,\psi \in \mathrm{Hom}(H,G)\}.
If H = G this is also denoted by \mathrm{CSpec}_R(G).
Please note that the functions below are only implemented for finite groups.
‣ ReidemeisterSpectrum ( G ) | ( function ) |
Returns the Reidemeister spectrum of G.
If G is abelian, this function relies on the results from [Sen23].
‣ ExtendedReidemeisterSpectrum ( G ) | ( function ) |
Returns the extended Reidemeister spectrum of G.
‣ CoincidenceReidemeisterSpectrum ( [H, ]G ) | ( function ) |
Returns the coincidence Reidemeister spectrum of H and G.
gap> ReidemeisterSpectrum( G ); [ 3, 5, 7 ] gap> ExtendedReidemeisterSpectrum( G ); [ 1, 3, 5, 7 ] gap> CoincidenceReidemeisterSpectrum( G ); [ 1, 3, 5, 7, 360 ] gap> CoincidenceReidemeisterSpectrum( H ); [ 1, 2, 7, 60, 64, 66, 120 ] gap> CoincidenceReidemeisterSpectrum( H, G ); [ 180, 184, 360 ] gap> CoincidenceReidemeisterSpectrum( G, H ); [ 120 ]
Let \varphi,\psi\colon G \to G be endomorphisms such that R(\varphi^n,\psi^n) < \infty for all n \in \mathbb{N}. Then the Reidemeister zeta function Z_{\varphi,\psi}(s) of the pair (\varphi,\psi) is defined as
Z_{\varphi,\psi}(s) := \exp \sum_{n=1}^\infty \frac{R(\varphi^n,\psi^n)}{n} s^n.
Please note that the functions below are only implemented for endomorphisms of finite groups.
‣ ReidemeisterZetaCoefficients ( endo1[, endo2] ) | ( function ) |
For a finite group, the sequence of Reidemeister numbers of the iterates of endo1 and endo2, i.e. the sequence R(endo1,endo2), R(endo1^2,endo2^2), ..., is eventually periodic, i.e. there exist a periodic sequence (P_n)_{n \in \mathbb{N}} and an eventually zero sequence (Q_n)_{n \in \mathbb{N}} such that
\forall n \in \mathbb{N}: R(\varphi^n,\psi^n) = P_n + Q_n.
This function returns a list containing two sublists: the first sublist contains one period of the sequence (P_n)_{n \in \mathbb{N}}, the second sublist contains (Q_n)_{n \in \mathbb{N}} up to the part where it becomes the constant zero sequence.
‣ IsRationalReidemeisterZeta ( endo1[, endo2] ) | ( function ) |
Returns true
if the Reidemeister zeta function of endo1 and endo2 is rational, and false
otherwise.
‣ ReidemeisterZeta ( endo1[, endo2] ) | ( function ) |
Returns the Reidemeister zeta function of endo1 and endo2 if it is rational, and fail
otherwise.
‣ PrintReidemeisterZeta ( endo1[, endo2] ) | ( function ) |
Returns a string describing the Reidemeister zeta function of endo1 and endo2. This is often more readable than evaluating ReidemeisterZeta
in an indeterminate, and does not require rationality.
gap> khi := GroupHomomorphismByImages( G, G, [ (1,2,3,4,5), (4,5,6) ], > [ (1,2,6,3,5), (1,4,5) ] );; gap> ReidemeisterZetaCoefficients( khi ); [ [ 7 ], [ ] ] gap> IsRationalReidemeisterZeta( khi ); true gap> ReidemeisterZeta( khi ); function( s ) ... end gap> s := Indeterminate( Rationals, "s" );; gap> ReidemeisterZeta( khi )(s); (1)/(-s^7+7*s^6-21*s^5+35*s^4-35*s^3+21*s^2-7*s+1) gap> PrintReidemeisterZeta( khi ); "(1-s)^(-7)"
generated by GAPDoc2HTML