Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/twistedconjugacy/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 12.9.2025 mit Größe 88 kB image not shown  

Quelle  TwistedConjugacy.tex   Sprache: Latech

 
% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[a4paper,11pt]{report}

\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
\definecolor{Black}{rgb}{0.0,0.0,0.0}

\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}

%%  for a long time these were red and blue by default,
%%  now black, but keep variables to overwrite
\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}


\usepackage{fancyvrb}

\usepackage{mathptmx,helvet}
\usepackage[T1]{fontenc}
\usepackage{textcomp}


\usepackage[
            pdftex=true,
            bookmarks=true,        
            a4paper=true,
            pdftitle={Written with GAPDoc},
            pdfcreator={LaTeX with hyperref package / GAPDoc},
            colorlinks=true,
            backref=page,
            breaklinks=true,
            linkcolor=linkColor,
            citecolor=citeColor,
            filecolor=fileColor,
            urlcolor=urlColor,
            pdfpagemode={UseNone}, 
           ]{hyperref}

\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}

% write page numbers to a .pnr log file for online help
\newwrite\pagenrlog
\immediate\openout\pagenrlog =\jobname.pnr
\immediate\write\pagenrlog{PAGENRS := [}
\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
%% were never documented, give conflicts with some additional packages

\newcommand{\GAP}{\textsf{GAP}}

%% nicer description environments, allows long labels
\usepackage{enumitem}
\setdescription{style=nextline}

%% depth of toc
\setcounter{tocdepth}{1}

\usepackage{amsmath}



%% command for ColorPrompt style examples
\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}


\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\mbox{}\vfill

\begin{center}{\maintitlesize \textbf{ TwistedConjugacy \mbox{}}}\\
\vfill

\hypersetup{pdftitle= TwistedConjugacy }
\markright{\scriptsize \mbox{}\hfill  TwistedConjugacy  \hfill\mbox{}}
{\Huge \textbf{ Computation with twisted conjugacy classes \mbox{}}}\\
\vfill

{\Huge  3.1.1 \mbox{}}\\[1cm]
{ 12 October 2025 \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{ Sam Tertooy\\
    \mbox{}}}\\
\hypersetup{pdfauthor= Sam Tertooy\\
    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Sam Tertooy\\
    }  Email: \href{mailto://sam.tertooy@kuleuven.be} {\texttt{sam.tertooy@kuleuven.be}}\\
  Homepage: \href{https://stertooy.github.io/} {\texttt{https://stertooy.github.io/}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Wiskunde\\
 KU Leuven, Kulak Kortrijk Campus\\
 Etienne Sabbelaan 53\\
 8500 Kortrijk\\
 Belgium\\
 \\
 \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Abstract}
\logpage{[ 0, 0, 1 ]}
 The \textsf{TwistedConjugacy} package provides methods for solving the twisted conjugacy problem (including
the "search" and "multiple" variants) and for computing Reidemeister classes,
numbers, spectra, and zeta functions. It also includes utility functions for
working with (double) cosets, group homomorphisms, and group derivations. 

 These methods are primarily designed for use with finite groups and with
PcpGroups (finite or infinite) provided by the \textsf{Polycyclic} package. \mbox{}}\\[1cm]
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 2 ]}
 {\copyright} 2020{\textendash}2025 Sam Tertooy 

 The \textsf{TwistedConjugacy} package is free software, it may be redistributed and/or modified under the
terms and conditions of the \hrefhttps://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html} {GNU Public License Version 2} or (at your option) any later version. \mbox{}}\\[1cm]
{\small 
\section*{Acknowledgements}
\logpage{[ 0, 0, 3 ]}
 This documentation was created using the \textsf{GAPDoc} and \textsf{AutoDoc} packages. \mbox{}}\\[1cm]
\newpage

\def\contentsname{Contents\logpage{[ 0, 0, 4 ]}}

\tableofcontents
\newpage

     
\chapter{\textcolor{Chapter }{The TwistedConjugacy package}}\label{Chapter_The_PackageName_package}
\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X78FCE1F07D997CB7}{}
{
  This is the manual for the \textsf{GAP} 4 package \textsf{TwistedConjugacy} version 3.1.1, developed by Sam Tertooy. 
\section{\textcolor{Chapter }{Installation}}\label{Chapter_The_PackageName_package_Section_Installation}
\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X8360C04082558A12}{}
{
  If you are using \textsf{GAP} version 4.15.0 or newer, then \textsf{TwistedConjugacy} should be installed by default. 

 If this is not the case, but the \textsf{PackageManager} package is installed and loaded, you can install \textsf{TwistedConjugacy} from within a \textsf{GAP} session using \texttt{InstallPackage} (\textbf{PackageManager: InstallPackage}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@InstallPackage( "TwistedConjugacy" );|
  ...
  true
\end{Verbatim}
 

 Alternatively, you can download \textsf{TwistedConjugacy} as a .tar.gz archive \href{https://github.com/stertooy/TwistedConjugacy/releases/download/v3.1.1/TwistedConjugacy-3.1.1.tar.gz} {here}. After extracting, you should place it in a suitable \texttt{pkg} folder. For example, on a Debian\texttt{\symbol{45}}based Linux distribution
(e.g. Ubuntu, Mint), you can place it in \texttt{\$HOME/.gap/pkg} (recommended) which makes it available for just yourself, or in the \textsf{GAP} installation directory (\texttt{gap\texttt{\symbol{45}}X.Y.Z/pkg}) which makes it available for all users. 

 You can use the following command to efficiently install the package for
yourself: 
\begin{Verbatim}[commandchars=!@A,fontsize=\small,frame=single,label=Command]
  wget -qO - https://[...].tar.gz | tar xzf - --one-top-level=$HOME/.gap/pkg
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Loading}}\label{Chapter_The_PackageName_package_Section_Loading}
\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X861ED1338181C66D}{}
{
  Once installed, loading \textsf{TwistedConjugacy} can be done by using \texttt{LoadPackage} (\textbf{Reference: LoadPackage}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@LoadPackage( "TwistedConjugacy" );|
  ...
  true
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Citing}}\label{Chapter_The_PackageName_package_Section_Citing}
\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X7A178B0587668C3E}{}
{
  If you use the \textsf{TwistedConjugacy} package in your research, we would love to hear about your work via an email
to the address \href{mailto://sam.tertooy@kuleuven.be} {\texttt{sam.tertooy@kuleuven.be}}. If you have used the \textsf{TwistedConjugacy} package in the preparation of a paper and wish to refer to it, please cite it
as described below. 

 In Bib{\TeX}: 
\begin{Verbatim}[commandchars=!|B,fontsize=\small,frame=single,label=BibTeX]
  @misc{TC3.1.1,
      author =       {Tertooy, Sam},
      title =        {{TwistedConjugacy,
                      Computation with twisted conjugacy classes,
                      Version 3.1.1}},
      note =         {GAP package},
      year =         {2025},
      howpublished = {\url{https://stertooy.github.io/TwistedConjugacy}}
  }
\end{Verbatim}


 In Bib{\LaTeX}: 
\begin{Verbatim}[commandchars=!|B,fontsize=\small,frame=single,label=BibLaTeX]
  @software{TC3.1.1,
      author =   {Tertooy, Sam},
      title =    {TwistedConjugacy},
      subtitle = {Computation with twisted conjugacy classes},
      version =  {3.1.1},
      note =     {GAP package},
      year =     {2025},
      url =      {https://stertooy.github.io/TwistedConjugacy}
  }
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Support}}\label{Chapter_The_PackageName_package_Section_Support}
\logpage{[ 1, 4, 0 ]}
\hyperdef{L}{X7B689C0284AC4296}{}
{
  If you encounter any problems, please submit them to the \href{https://github.com/stertooy/TwistedConjugacy/issues} {issue tracker}. If you have any questions on the usage or functionality of \textsf{TwistedConjugacy}, you may contact me via email at \href{mailto://sam.tertooy@kuleuven.be} {\texttt{sam.tertooy@kuleuven.be}}. 

 Bugs in \textsf{GAP}, in this package, or in any other package used directly or indirectly, may
cause functions provided by \textsf{TwistedConjugacy} to produce errors or incorrect results. To help detect such issues, you can
enable internal checks by setting the variable \texttt{TWC.ASSERT} to \texttt{true}. Note that this will come at the cost of reduced performance. 

 For additional safety, you can enable \textsf{GAP}'s built\texttt{\symbol{45}}in assertion features by calling \texttt{SetAssertionLevel( \mbox{\texttt{\mdseries\slshape lev}} )} (we recommend setting \mbox{\texttt{\mdseries\slshape lev}} to \texttt{2}) and, when working with PcpGroups, setting the variables \texttt{CHECK{\textunderscore}CENT@Polycyclic}, \texttt{CHECK{\textunderscore}IGS@Polycyclic} and \texttt{CHECK{\textunderscore}INTSTAB@Polycyclic} to \texttt{true}. }

 }

   
\chapter{\textcolor{Chapter }{Mathematical background}}\label{Chapter_Mathematical_background}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X7EF1B6708069B0C7}{}
{
  Let $G$ and $H$ be groups and let $\varphi$ and $\psi$ be group homomorphisms from $H$ to $G$. The pair $(\varphi,\psi)$ induces a (right) group action of $H$ on $G$ given by the map 
\[\times H \to G \colon (g,h) \mapsto \varphi(h)^{-1} g\,\psi(h).\]
 This group action is called \emph{$(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugation}. The orbits are called \emph{Reidemeister classes} or \emph{twisted conjugacy classes}, and the number of Reidemeister classes is called the \emph{Reidemeister number} $R(\varphi,\psi)$ of the pair $(\varphi,\psi)$. The stabiliser of the identity $1_G$ under the $(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugacy action of $H$ is exactly the \emph{coincidence group} 
\[\operatorname{Coin}(\varphi,\psi) = \left\{\, h \in H \mid \varphi(h) =
\psi(h) \, \right\}.\]
 Generalising this, the stabiliser of any $g \in G$ is the coincidence group $\operatorname{Coin}(\iota_g\varphi,\psi)$, with $\iota_g$ the inner automorphism of $G$ that conjugates by $g$. 

 Twisted conjugacy originates in Reidemeister\texttt{\symbol{45}}Nielsen fixed
point and coincidence theory, where it serves as a tool for studying fixed and
coincidence points of continuous maps between topological spaces. Below, we
briefly illustrate how and where this algebraic notion arises when studying
coincidence points. Let $X$ and $Y$ be topological spaces with universal covers $p \colon \tilde{X} \to X$ and $q \colon \tilde{Y} \to Y$ and let $\mathcal{D}(X), \mathcal{D}(Y)$ be their covering transformations groups. Let $f,g \colon X \to Y$ be continuous maps with lifts $\tilde{f}, \tilde{g} \colon \tilde{X} \to \tilde{Y}$. By $f_*\colon \mathcal{D}(X) \to \mathcal{D}(Y)$, denote the group homomorphism defined by $\tilde{f} \circ \gamma = f_*(\gamma\circ \tilde{f}$ for all $\gamma \in \mathcal{D}(X)$, and let $g_*$ be defined similarly. The set of coincidence points $\operatorname{Coin}(f,g)$ equals the union 
\[\operatorname{Coin}(f,g) = \bigcup_{\alpha \in \mathcal{D}(Y)}
p(\operatorname{Coin}(\tilde{f}, \alpha \tilde{g})).\]
 For any two elements $\alpha\beta \in \mathcal{D}(Y)$, the sets $p(\operatorname{Coin}(\tilde{f}, \alpha \tilde{g}))$ and $p(\operatorname{Coin}(\tilde{f}, \beta \tilde{g}))$ are either disjoint or equal. Moreover, they are equal if and only if there
exists some $\gamma \in \mathcal{D}(X)$ such that $\alpha = f_*(\gamma)^{-1} \circ \beta \circ g_*(\gamma)$, which is exactly the same as saying that $\alpha$ and $\beta$ are $(f_*,g_*)$\texttt{\symbol{45}}twisted conjugate. Thus, 
\[\operatorname{Coin}(f,g) = \bigsqcup_{[\alpha]}
p(\operatorname{Coin}(\tilde{f}, \alpha \tilde{g})),\]
 where $[\alpha]$ runs over the $(f_*,g_*)$\texttt{\symbol{45}}twisted conjugacy classes. For sufficiently
well\texttt{\symbol{45}}behaved spaces $X$ and $Y$ (e.g. nilmanifolds of equal dimension) we have that if $R(f_*,g_*) < \infty$, then 
\[R(f_*,g_*) \leq \left|\operatorname{Coin}(f,g)\right|,\]
 whereas if $R(f_*,g_*) = \infty$ there exist continuous maps $f'$ and $g'$ homotopic to $f$ and $g$ respectively such that $\operatorname{Coin}(f',g') = \varnothing$. }

   
\chapter{\textcolor{Chapter }{Twisted conjugacy}}\label{Chapter_Twisted_conjugacy}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X78DFA75A82655B7F}{}
{
  
\section{\textcolor{Chapter }{The twisted conjugation action}}\label{Chapter_Twisted_conjugacy_Section_The_twisted_conjugation_action}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X86BE54A080E991A8}{}
{
  Let $G$ and $H$ be groups and let $\varphi$ and $\psi$ be group homomorphisms from $H$ to $G$. The pair $(\varphi,\psi)$ induces a (right) group action of $H$ on $G$ given by the map 
\[\times H \to G \colon (g,h) \mapsto \varphi(h)^{-1} g\,\psi(h).\]
 This group action is called \emph{$(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugation}. 

 If $G = H$, $\varphi$ is an endomorphism of $G$ and $\psi = \operatorname{id}_G$, then the action is usually called \emph{$\varphi$\texttt{\symbol{45}}twisted conjugation}. In general, for the \textsf{TwistedConjugacy} package, many functions will take two homomorphisms \mbox{\texttt{\mdseries\slshape hom1}} and \mbox{\texttt{\mdseries\slshape hom2}} as arguments. However, if \mbox{\texttt{\mdseries\slshape hom1}} is an endomorphism, \mbox{\texttt{\mdseries\slshape hom2}} can be omitted, in which case it is automatically taken to be the identity
map. 

 Similarly, some functions will take two elements \mbox{\texttt{\mdseries\slshape g1}} and \mbox{\texttt{\mdseries\slshape g2}} as arguments. If \mbox{\texttt{\mdseries\slshape g2}} is omitted, it is automatically taken to be the identity element. 

\subsection{\textcolor{Chapter }{TwistedConjugation}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X79CF6BDA7851496D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TwistedConjugation({\mdseries\slshape hom1[, hom2]})\index{TwistedConjugation@\texttt{TwistedConjugation}}
\label{TwistedConjugation}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a function that maps the pair \texttt{(g,h)} to \mbox{\texttt{\mdseries\slshape hom1}}\texttt{(h){\textsuperscript-}{\textsuperscript1}} \texttt{g} \mbox{\texttt{\mdseries\slshape hom2}}\texttt{(h)}. 



 

 }

 }

 
\section{\textcolor{Chapter }{The twisted conjugacy (search) problem}}\label{Chapter_Twisted_conjugacy_Section_The_twisted_conjugacy_search_problem}
\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X7838A5A678158C68}{}
{
  Given groups $G$ and $H$, group homomorphisms $\varphi$ and $\psi$ from $H$ to $G$ and elements $g_1, g_2 \in G$, the \emph{twisted conjugacy problem} is the decision problem that asks whether $g_1$ and $g_2$ are $(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugate. The \emph{twisted conjugacy search problem} is the problem of determining an explicit $h$ such that $\varphi(h)^{-1}g_1\psi(h) = g_2$ (under the assumption that such $h$ exists). 

\subsection{\textcolor{Chapter }{IsTwistedConjugate}}
\logpage{[ 3, 2, 1 ]}\nobreak
\hyperdef{L}{X809D34107CFE8082}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsTwistedConjugate({\mdseries\slshape hom1[, hom2], g1[, g2]})\index{IsTwistedConjugate@\texttt{IsTwistedConjugate}}
\label{IsTwistedConjugate}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
\texttt{true} if \mbox{\texttt{\mdseries\slshape g1}} and \mbox{\texttt{\mdseries\slshape g2}} are \texttt{(\mbox{\texttt{\mdseries\slshape hom1}},\mbox{\texttt{\mdseries\slshape hom2}})}\texttt{\symbol{45}}twisted conjugate, otherwise \texttt{false}. 



 

 }

 

\subsection{\textcolor{Chapter }{RepresentativeTwistedConjugation}}
\logpage{[ 3, 2, 2 ]}\nobreak
\hyperdef{L}{X8493E3818276A562}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativeTwistedConjugation({\mdseries\slshape hom1[, hom2], g1[, g2]})\index{RepresentativeTwistedConjugation@\texttt{RepresentativeTwistedConjugation}}
\label{RepresentativeTwistedConjugation}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
an element that maps \mbox{\texttt{\mdseries\slshape g1}} to \mbox{\texttt{\mdseries\slshape g2}} under the \texttt{(\mbox{\texttt{\mdseries\slshape hom1}},\mbox{\texttt{\mdseries\slshape hom2}})}\texttt{\symbol{45}}twisted conjugacy action, or \texttt{fail} if no such element exists. 



 If the source group is finite, this function relies on
orbit\texttt{\symbol{45}}stabiliser algorithms provided by \textsf{GAP}. Otherwise, it relies on a mixture of the algorithms described in \cite[Thm. 3]{roma16-a}, \cite[Sec. 5.4]{bkl20-a}, \cite[Sec. 7]{roma21-a} and \cite{dt21-a}. }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G := AlternatingGroup( 6 );;|
  !gapprompt@gap>| !gapinput@H := SymmetricGroup( 5 );;|
  !gapprompt@gap>| !gapinput@phi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,4)(3,6), () ] );;|
  !gapprompt@gap>| !gapinput@psi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,2)(3,4), () ] );;|
  !gapprompt@gap>| !gapinput@tc := TwistedConjugation( phi, psi );;|
  !gapprompt@gap>| !gapinput@g1 := (4,6,5);;|
  !gapprompt@gap>| !gapinput@g2 := (1,6,4,2)(3,5);;|
  !gapprompt@gap>| !gapinput@IsTwistedConjugate( psi, phi, g1, g2 );|
  false
  !gapprompt@gap>| !gapinput@h := RepresentativeTwistedConjugation( phi, psi, g1, g2 );|
  (1,2)
  !gapprompt@gap>| !gapinput@tc( g1, h ) = g2;|
  true
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{The multiple twisted conjugacy (search) problem}}\label{Chapter_Twisted_conjugacy_Section_The_multiple_twisted_conjugacy_search_problem}
\logpage{[ 3, 3, 0 ]}
\hyperdef{L}{X8554A80A7A7430C4}{}
{
  Let $H$ and $G_1, \ldots, G_n$ be groups. For each $i \in \{1,\ldots,n\}$, let $g_i,g_i' \in G_i$ and let $\varphi_i,\psi_i\colon H \to G_i$ be group homomorphisms. The \emph{multiple twisted conjugacy problem} is the decision problem that asks whether there exists some $h \in H$ such that $\varphi_i(h)^{-1}g_i\psi_i(h) = g_i'$ for all $i \in \{1,\ldots,n\}$. The \emph{multiple twisted conjugacy search problem} is the problem of determining an explicit $h$ such that $\varphi_i(h)^{-1}g_i\psi_i(h) = g_i'$ for all $i \in \{1,\ldots,n\}$ (under the assumption that such $h$ exists).

 \texttt{IsTwistedConjugate} (\ref{IsTwistedConjugate}) and \texttt{RepresentativeTwistedConjugation} (\ref{RepresentativeTwistedConjugation}) can take lists instead of their usual arguments to solve these problems. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@H := SymmetricGroup( 5 );;|
  !gapprompt@gap>| !gapinput@G := AlternatingGroup( 6 );;|
  !gapprompt@gap>| !gapinput@phi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,4)(3,6), () ] );;|
  !gapprompt@gap>| !gapinput@psi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,2)(3,4), () ] );;|
  !gapprompt@gap>| !gapinput@tau := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,2)(3,6), () ] );;|
  !gapprompt@gap>| !gapinput@khi := GroupHomomorphismByImages( H, G, [ (1,2)(3,5,4), (2,3)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (1,3)(4,6), () ] );;|
  !gapprompt@gap>| !gapinput@IsTwistedConjugate( [ phi, psi ], [ khi, tau ],|
  !gapprompt@>| !gapinput@ [ (1,5)(4,6), (1,4)(3,5) ], [ (1,4,5,3,6), (2,4,5,6,3) ] );|
  true
  !gapprompt@gap>| !gapinput@RepresentativeTwistedConjugation( [ phi, psi ], [ khi, tau ],|
  !gapprompt@>| !gapinput@ [ (1,5)(4,6), (1,4)(3,5) ], [ (1,4,5,3,6), (2,4,5,6,3) ] );|
  (1,2)
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Twisted conjugacy classes}}\label{Chapter_Twisted_conjugacy_classes}
\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X78F9595B78DAC70D}{}
{
  The orbits of the $(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugacy action are called the \emph{$(\varphi,\psi)$\texttt{\symbol{45}}twisted conjugacy classes} or the \emph{Reidemeister classes of $(\varphi,\psi)$}. We denote the twisted conjugacy class of $g \in G$ by $[g]_{\varphi,\psi}$. 
\section{\textcolor{Chapter }{Creating a twisted conjugacy class}}\label{Chapter_Twisted_conjugacy_classes_Section_Creating_a_twisted_conjugacy_class}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X7CACD3337A7C90F0}{}
{
  

\subsection{\textcolor{Chapter }{TwistedConjugacyClass}}
\logpage{[ 4, 1, 1 ]}\nobreak
\label{AutoDoc_generated_group1}
\hyperdef{L}{X79690F4D7F2660B3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TwistedConjugacyClass({\mdseries\slshape hom1[, hom2], g})\index{TwistedConjugacyClass@\texttt{TwistedConjugacyClass}}
\label{TwistedConjugacyClass}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterClass({\mdseries\slshape hom1[, hom2], g})\index{ReidemeisterClass@\texttt{ReidemeisterClass}}
\label{ReidemeisterClass}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the \texttt{(\mbox{\texttt{\mdseries\slshape hom1}},\mbox{\texttt{\mdseries\slshape hom2}})}\texttt{\symbol{45}}twisted conjugacy class of \mbox{\texttt{\mdseries\slshape g}}. 



 

 }

 }

 
\section{\textcolor{Chapter }{Operations on twisted conjugacy classes}}\label{Chapter_Twisted_conjugacy_classes_Section_Operations_on_twisted_conjugacy_classes}
\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X7FA74F8E7BB7915D}{}
{
  
\subsection{\textcolor{Chapter }{Representative}}\label{AutoDoc_generated_group2}
\logpage{[ 4, 2, 1 ]}
\hyperdef{L}{X865507568182424E}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Representative({\mdseries\slshape tcc})\index{Representative@\texttt{Representative}!of a twisted conjugacy class}
\label{Representative:of a twisted conjugacy class}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:}
the group element that was used to construct \mbox{\texttt{\mdseries\slshape tcc}}. 



 

 }

 
\subsection{\textcolor{Chapter }{ActingDomain}}\label{AutoDoc_generated_group3}
\logpage{[ 4, 2, 2 ]}
\hyperdef{L}{X7B9DB15D80CE28B4}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ActingDomain({\mdseries\slshape tcc})\index{ActingDomain@\texttt{ActingDomain}!of a twisted conjugacy class}
\label{ActingDomain:of a twisted conjugacy class}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:}
the group whose twisted conjugacy action \mbox{\texttt{\mdseries\slshape tcc}} is an orbit of. 



 

 }

 
\subsection{\textcolor{Chapter }{FunctionAction}}\label{AutoDoc_generated_group4}
\logpage{[ 4, 2, 3 ]}
\hyperdef{L}{X86153CB087394DC1}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FunctionAction({\mdseries\slshape tcc})\index{FunctionAction@\texttt{FunctionAction}!of a twisted conjugacy class}
\label{FunctionAction:of a twisted conjugacy class}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:}
the twisted conjugacy action that \mbox{\texttt{\mdseries\slshape tcc}} is an orbit of. 



 

 }

 
\subsection{\textcolor{Chapter }{\texttt{\symbol{92}}in}}\label{AutoDoc_generated_group5}
\logpage{[ 4, 2, 4 ]}
\hyperdef{L}{X87BDB89B7AAFE8AD}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{\texttt{\symbol{92}}in({\mdseries\slshape g, tcc})\index{\texttt{\symbol{92}}in@\texttt{\texttt{\symbol{92}}in}!for an element and a twisted conjugacy class}
\label{bSlashin:for an element and a twisted conjugacy class}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
\texttt{true} if \mbox{\texttt{\mdseries\slshape g}} is an element of \mbox{\texttt{\mdseries\slshape tcc}}, otherwise \texttt{false}. 



 

 }

 
\subsection{\textcolor{Chapter }{Size}}\label{AutoDoc_generated_group6}
\logpage{[ 4, 2, 5 ]}
\hyperdef{L}{X858ADA3B7A684421}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Size({\mdseries\slshape tcc})\index{Size@\texttt{Size}!of a twisted conjugacy class}
\label{Size:of a twisted conjugacy class}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:}
the number of elements in \mbox{\texttt{\mdseries\slshape tcc}}. 



 This is calculated using the orbit\texttt{\symbol{45}}stabiliser theorem. }

 
\subsection{\textcolor{Chapter }{StabiliserOfExternalSet}}\label{AutoDoc_generated_group7}
\logpage{[ 4, 2, 6 ]}
\hyperdef{L}{X867840C67C990840}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{StabiliserOfExternalSet({\mdseries\slshape tcc})\index{StabiliserOfExternalSet@\texttt{StabiliserOfExternalSet}!of a twisted conjugacy class}
\label{StabiliserOfExternalSet:of a twisted conjugacy class}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:}
the stabiliser of \texttt{Representative(\mbox{\texttt{\mdseries\slshape tcc}})} under the action \texttt{FunctionAction(\mbox{\texttt{\mdseries\slshape tcc}})}. 



 

 }

 
\subsection{\textcolor{Chapter }{List}}\label{AutoDoc_generated_group8}
\logpage{[ 4, 2, 7 ]}
\hyperdef{L}{X7EBA57FC7CCF8449}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{List({\mdseries\slshape tcc})\index{List@\texttt{List}!of a twisted conjugacy class}
\label{List:of a twisted conjugacy class}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list containing the elements of \mbox{\texttt{\mdseries\slshape tcc}}. 



 If \mbox{\texttt{\mdseries\slshape tcc}} is infinite, this will run forever. It is recommended to first test the
finiteness of \mbox{\texttt{\mdseries\slshape tcc}} using \texttt{Size} (\ref{Size:of a twisted conjugacy class}). }

 
\subsection{\textcolor{Chapter }{Random}}\label{AutoDoc_generated_group9}
\logpage{[ 4, 2, 8 ]}
\hyperdef{L}{X79730D657AB219DB}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Random({\mdseries\slshape tcc})\index{Random@\texttt{Random}!in a twisted conjugacy class}
\label{Random:in a twisted conjugacy class}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
a random element in \mbox{\texttt{\mdseries\slshape tcc}}. 



 

 }

 
\subsection{\textcolor{Chapter }{\texttt{\symbol{92}}=}}\label{AutoDoc_generated_group10}
\logpage{[ 4, 2, 9 ]}
\hyperdef{L}{X806A4814806A4814}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{\texttt{\symbol{92}}=({\mdseries\slshape tcc1, tcc2})\index{\texttt{\symbol{92}}=@\texttt{\texttt{\symbol{92}}=}!for twisted conjugacy classes}
\label{bSlash=:for twisted conjugacy classes}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
\texttt{true} if \mbox{\texttt{\mdseries\slshape tcc1}} is equal to \mbox{\texttt{\mdseries\slshape tcc2}}, otherwise \texttt{false}. 



 

 }

 }

 
\section{\textcolor{Chapter }{Calculating all twisted conjugacy classes}}\label{Chapter_Twisted_conjugacy_classes_Section_Calculating_all_twisted_conjugacy_classes}
\logpage{[ 4, 3, 0 ]}
\hyperdef{L}{X8238998382FE372A}{}
{
  

\subsection{\textcolor{Chapter }{TwistedConjugacyClasses}}
\logpage{[ 4, 3, 1 ]}\nobreak
\label{AutoDoc_generated_group11}
\hyperdef{L}{X797192EA7D30C78F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TwistedConjugacyClasses({\mdseries\slshape hom1[, hom2][, N]})\index{TwistedConjugacyClasses@\texttt{TwistedConjugacyClasses}}
\label{TwistedConjugacyClasses}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterClasses({\mdseries\slshape hom1[, hom2][, N]})\index{ReidemeisterClasses@\texttt{ReidemeisterClasses}}
\label{ReidemeisterClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list containing the (\mbox{\texttt{\mdseries\slshape hom1}}, \mbox{\texttt{\mdseries\slshape hom2}})\texttt{\symbol{45}}twisted conjugacy classes if there are finitely many, or \texttt{fail} otherwise. 



 If the argument \mbox{\texttt{\mdseries\slshape N}} is provided, it must be a normal subgroup of \texttt{Range(\mbox{\texttt{\mdseries\slshape hom1}})}; the function will then only return the Reidemeister classes that intersect \mbox{\texttt{\mdseries\slshape N}} non\texttt{\symbol{45}}trivially. It is guaranteed that the Reidemeister class
of the identity is in the first position, and that the representatives of the
classes belong to \mbox{\texttt{\mdseries\slshape N}} if this argument is provided. 

 If $G$ and $H$ are finite, this function relies on an orbit\texttt{\symbol{45}}stabiliser
algorithm. Otherwise, it relies on the algorithms in \cite{dt21-a} and \cite{tert25-a}. 

 }

 

\subsection{\textcolor{Chapter }{RepresentativesTwistedConjugacyClasses}}
\logpage{[ 4, 3, 2 ]}\nobreak
\label{AutoDoc_generated_group12}
\hyperdef{L}{X862C49C0834E01D7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativesTwistedConjugacyClasses({\mdseries\slshape hom1[, hom2][, N]})\index{RepresentativesTwistedConjugacyClasses@\texttt{Representatives}\-\texttt{Twisted}\-\texttt{Conjugacy}\-\texttt{Classes}}
\label{RepresentativesTwistedConjugacyClasses}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativesReidemeisterClasses({\mdseries\slshape hom1[, hom2][, N]})\index{RepresentativesReidemeisterClasses@\texttt{RepresentativesReidemeisterClasses}}
\label{RepresentativesReidemeisterClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list containing representatives of the (\mbox{\texttt{\mdseries\slshape hom1}}, \mbox{\texttt{\mdseries\slshape hom2}})\texttt{\symbol{45}}twisted conjugacy classes if there are finitely many, or \texttt{fail} otherwise. 



 If the argument \mbox{\texttt{\mdseries\slshape N}} is provided, it must be a normal subgroup of \texttt{Range(\mbox{\texttt{\mdseries\slshape hom1}})}; the function will then only return the representatives of the twisted
conjugacy classes that intersect \mbox{\texttt{\mdseries\slshape N}} non\texttt{\symbol{45}}trivially. It is guaranteed that the identity is in the
first position, and that all elements belong to \mbox{\texttt{\mdseries\slshape N}} if this argument is provided. 

 }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@tcc := TwistedConjugacyClass( phi, psi, g1 );|
  (4,6,5)^G
  !gapprompt@gap>| !gapinput@Representative( tcc );|
  (4,6,5)
  !gapprompt@gap>| !gapinput@ActingDomain( tcc ) = H;|
  true
  !gapprompt@gap>| !gapinput@FunctionAction( tcc )( g1, h );|
  (1,6,4,2)(3,5)
  !gapprompt@gap>| !gapinput@List( tcc );|
  [ (4,6,5), (1,6,4,2)(3,5) ]
  !gapprompt@gap>| !gapinput@Size( tcc );|
  2
  !gapprompt@gap>| !gapinput@StabiliserOfExternalSet( tcc );|
  Group([ (1,2,3,4,5), (1,3,4,5,2) ])
  !gapprompt@gap>| !gapinput@TwistedConjugacyClasses( phi, psi ){[1..7]};|
  [ ()^G, (4,5,6)^G, (4,6,5)^G, (3,4)(5,6)^G, (3,4,5)^G, (3,4,6)^G, (3,5,4)^G ]
  !gapprompt@gap>| !gapinput@RepresentativesTwistedConjugacyClasses( phi, psi ){[1..7]};|
  [ (), (4,5,6), (4,6,5), (3,4)(5,6), (3,4,5), (3,4,6), (3,5,4) ]
  !gapprompt@gap>| !gapinput@NrTwistedConjugacyClasses( phi, psi );|
  184
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Reidemeister numbers and spectra}}\label{Chapter_Reidemeister_numbers_and_spectra}
\logpage{[ 5, 0, 0 ]}
\hyperdef{L}{X7B27E1F98083C837}{}
{
  
\section{\textcolor{Chapter }{Reidemeister numbers}}\label{Chapter_Reidemeister_numbers_and_spectra_Section_Reidemeister_numbers}
\logpage{[ 5, 1, 0 ]}
\hyperdef{L}{X7FE8086286A91524}{}
{
  The number of twisted conjugacy classes is called the Reidemeister number and
is always a positive integer or infinity. 

\subsection{\textcolor{Chapter }{ReidemeisterNumber}}
\logpage{[ 5, 1, 1 ]}\nobreak
\label{ReidemeisterNumberGroup}
\hyperdef{L}{X8330E244852075A7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterNumber({\mdseries\slshape hom1[, hom2]})\index{ReidemeisterNumber@\texttt{ReidemeisterNumber}}
\label{ReidemeisterNumber}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{NrTwistedConjugacyClasses({\mdseries\slshape hom1[, hom2]})\index{NrTwistedConjugacyClasses@\texttt{NrTwistedConjugacyClasses}}
\label{NrTwistedConjugacyClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the Reidemeister number of ( \mbox{\texttt{\mdseries\slshape hom1}}, \mbox{\texttt{\mdseries\slshape hom2}} ). 



 If $G$ is abelian, this function relies on (a generalisation of) \cite[Thm. 2.5]{jian83-a}. If $G = H$, $G$ is finite non\texttt{\symbol{45}}abelian and $\psi = \operatorname{id}_G$, it relies on \cite[Thm. 5]{fh94-a}. Otherwise, it simply calculates the twisted conjugacy classes and then
counts them. 

 }

 }

 
\section{\textcolor{Chapter }{Reidemeister spectra}}\label{Chapter_Reidemeister_numbers_and_spectra_Section_Reidemeister_spectra}
\logpage{[ 5, 2, 0 ]}
\hyperdef{L}{X7CED57E379712C3A}{}
{
  The set of all Reidemeister numbers of automorphisms is called the \emph{Reidemeister spectrum} and is denoted by $\operatorname{Spec}_R(G)$, i.e. 
\[\operatorname{Spec}_R(G) := \{\, R(\varphi\mid \varphi \in
\operatorname{Aut}(G) \,\}.\]
 The set of all Reidemeister numbers of endomorphisms is called the \emph{extended Reidemeister spectrum} and is denoted by $\operatorname{ESpec}_R(G)$, i.e. 
\[\operatorname{ESpec}_R(G) := \{\, R(\varphi\mid \varphi \in
\operatorname{End}(G) \,\}.\]
 The set of all Reidemeister numbers of pairs of homomorphisms from a group $H$ to a group $G$ is called the \emph{coincidence Reidemeister spectrum} of $H$ and $G$ and is denoted by $\operatorname{CSpec}_R(H,G)$, i.e. 
\[\operatorname{CSpec}_R(H,G) := \{\, R(\varphi\psi\mid \varphi,\psi \in
\operatorname{Hom}(H,G) \,\}.\]
 If \mbox{\texttt{\mdseries\slshape H}} = \mbox{\texttt{\mdseries\slshape G}} this is also denoted by $\operatorname{CSpec}_R(G)$. The set of all Reidemeister numbers of pairs of homomorphisms from every
group $H$ to a group $G$ is called the \emph{total Reidemeister spectrum} and is denoted by $\operatorname{TSpec}_R(G)$, i.e. 
\[\operatorname{TSpec}_R(G) := \bigcup_{H} \operatorname{CSpec}_R(H,G).\]
 

 Please note that the functions below are only implemented for finite groups. 

\subsection{\textcolor{Chapter }{ReidemeisterSpectrum}}
\logpage{[ 5, 2, 1 ]}\nobreak
\hyperdef{L}{X8777B3F77DBF01AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterSpectrum({\mdseries\slshape G})\index{ReidemeisterSpectrum@\texttt{ReidemeisterSpectrum}}
\label{ReidemeisterSpectrum}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the Reidemeister spectrum of \mbox{\texttt{\mdseries\slshape G}}. 



 If $G$ is abelian, this function relies on the results from \cite{send23-a}. Otherwise, it relies on \cite[Thm. 5]{fh94-a}. }

 

\subsection{\textcolor{Chapter }{ExtendedReidemeisterSpectrum}}
\logpage{[ 5, 2, 2 ]}\nobreak
\hyperdef{L}{X8122B246860C1617}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ExtendedReidemeisterSpectrum({\mdseries\slshape G})\index{ExtendedReidemeisterSpectrum@\texttt{ExtendedReidemeisterSpectrum}}
\label{ExtendedReidemeisterSpectrum}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the extended Reidemeister spectrum of \mbox{\texttt{\mdseries\slshape G}}. 



 If $G$ is abelian, this is just the set of all divisors of the order of \mbox{\texttt{\mdseries\slshape G}}. Otherwise, this function relies on \cite[Thm. 5]{fh94-a}. }

 

\subsection{\textcolor{Chapter }{CoincidenceReidemeisterSpectrum}}
\logpage{[ 5, 2, 3 ]}\nobreak
\hyperdef{L}{X78839C0886EBDB71}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{CoincidenceReidemeisterSpectrum({\mdseries\slshape [H, ]G})\index{CoincidenceReidemeisterSpectrum@\texttt{CoincidenceReidemeisterSpectrum}}
\label{CoincidenceReidemeisterSpectrum}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the coincidence Reidemeister spectrum of \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape G}}. 



 

 }

 

\subsection{\textcolor{Chapter }{TotalReidemeisterSpectrum}}
\logpage{[ 5, 2, 4 ]}\nobreak
\hyperdef{L}{X7DB417F182B155C5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TotalReidemeisterSpectrum({\mdseries\slshape G})\index{TotalReidemeisterSpectrum@\texttt{TotalReidemeisterSpectrum}}
\label{TotalReidemeisterSpectrum}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the total Reidemeister spectrum of \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape G}}. 



 

 }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Q := QuaternionGroup( 8 );;|
  !gapprompt@gap>| !gapinput@D := DihedralGroup( 8 );;|
  !gapprompt@gap>| !gapinput@ReidemeisterSpectrum( Q );|
  [ 2, 3, 5 ]
  !gapprompt@gap>| !gapinput@ExtendedReidemeisterSpectrum( Q );|
  [ 1, 2, 3, 5 ]
  !gapprompt@gap>| !gapinput@CoincidenceReidemeisterSpectrum( Q );|
  [ 1, 2, 3, 4, 5, 8 ]
  !gapprompt@gap>| !gapinput@CoincidenceReidemeisterSpectrum( D, Q );|
  [ 4, 8 ]
  !gapprompt@gap>| !gapinput@CoincidenceReidemeisterSpectrum( Q, D );|
  [ 2, 3, 4, 6, 8 ]
  !gapprompt@gap>| !gapinput@TotalReidemeisterSpectrum( Q );|
  [ 1, 2, 3, 4, 5, 6, 8 ]
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Reidemeister zeta functions}}\label{Chapter_Reidemeister_zeta_functions}
\logpage{[ 6, 0, 0 ]}
\hyperdef{L}{X862C248A828A2C4A}{}
{
  
\section{\textcolor{Chapter }{Reidemeister zeta functions}}\label{Chapter_Reidemeister_zeta_functions_Section_Reidemeister_zeta_functions}
\logpage{[ 6, 1, 0 ]}
\hyperdef{L}{X862C248A828A2C4A}{}
{
  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 \emph{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. 

\subsection{\textcolor{Chapter }{ReidemeisterZetaCoefficients}}
\logpage{[ 6, 1, 1 ]}\nobreak
\hyperdef{L}{X78F0CE5987B70AA2}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterZetaCoefficients({\mdseries\slshape endo1[, endo2]})\index{ReidemeisterZetaCoefficients@\texttt{ReidemeisterZetaCoefficients}}
\label{ReidemeisterZetaCoefficients}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
two lists of integers. 



 For a finite group, the sequence of Reidemeister numbers of the iterates of \mbox{\texttt{\mdseries\slshape endo1}} and \mbox{\texttt{\mdseries\slshape endo2}}, i.e. the sequence \texttt{R(\mbox{\texttt{\mdseries\slshape endo1}},\mbox{\texttt{\mdseries\slshape endo2}})}, \texttt{R(\mbox{\texttt{\mdseries\slshape endo1}}\texttt{\symbol{94}}2,\mbox{\texttt{\mdseries\slshape endo2}}\texttt{\symbol{94}}2)}, ..., is eventually periodic. Thus 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 two lists: the first list contains one period of the
sequence $(P_n)_{n \in \mathbb{N}}$, the second list contains $(Q_n)_{n \in \mathbb{N}}$ up to the part where it becomes the constant zero sequence. }

 

\subsection{\textcolor{Chapter }{IsRationalReidemeisterZeta}}
\logpage{[ 6, 1, 2 ]}\nobreak
\hyperdef{L}{X79A2CD257BA1E037}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsRationalReidemeisterZeta({\mdseries\slshape endo1[, endo2]})\index{IsRationalReidemeisterZeta@\texttt{IsRationalReidemeisterZeta}}
\label{IsRationalReidemeisterZeta}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
\texttt{true} if the Reidemeister zeta function of \mbox{\texttt{\mdseries\slshape endo1}} and \mbox{\texttt{\mdseries\slshape endo2}} is rational, otherwise \texttt{false}. 



 

 }

 

\subsection{\textcolor{Chapter }{ReidemeisterZeta}}
\logpage{[ 6, 1, 3 ]}\nobreak
\hyperdef{L}{X7959DBAF78CC4401}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ReidemeisterZeta({\mdseries\slshape endo1[, endo2]})\index{ReidemeisterZeta@\texttt{ReidemeisterZeta}}
\label{ReidemeisterZeta}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the Reidemeister zeta function of \mbox{\texttt{\mdseries\slshape endo1}} and \mbox{\texttt{\mdseries\slshape endo2}} if it is rational, otherwise \texttt{fail}. 



 

 }

 

\subsection{\textcolor{Chapter }{PrintReidemeisterZeta}}
\logpage{[ 6, 1, 4 ]}\nobreak
\hyperdef{L}{X829058F97A8858F1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{PrintReidemeisterZeta({\mdseries\slshape endo1[, endo2]})\index{PrintReidemeisterZeta@\texttt{PrintReidemeisterZeta}}
\label{PrintReidemeisterZeta}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a string describing the Reidemeister zeta function of \mbox{\texttt{\mdseries\slshape endo1}} and \mbox{\texttt{\mdseries\slshape endo2}}. 



 This is often more readable than evaluating \texttt{ReidemeisterZeta} (\ref{ReidemeisterZeta}) in an indeterminate, and does not require rationality. }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@khi := GroupHomomorphismByImages( G, G, [ (1,2,3,4,5), (4,5,6) ],|
  !gapprompt@>| !gapinput@ [ (1,2,6,3,5), (1,4,5) ] );;|
  !gapprompt@gap>| !gapinput@ReidemeisterZetaCoefficients( khi );|
  [ [ 7 ], [  ] ]
  !gapprompt@gap>| !gapinput@IsRationalReidemeisterZeta( khi );|
  true
  !gapprompt@gap>| !gapinput@ReidemeisterZeta( khi );|
  function( s ) ... end
  !gapprompt@gap>| !gapinput@s := Indeterminate( Rationals, "s" );;|
  !gapprompt@gap>| !gapinput@ReidemeisterZeta( khi )(s);|
  (1)/(-s^7+7*s^6-21*s^5+35*s^4-35*s^3+21*s^2-7*s+1)
  !gapprompt@gap>| !gapinput@PrintReidemeisterZeta( khi );|
  "(1-s)^(-7)"
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Cosets of PcpGroups}}\label{Chapter_Cosets_of_PcpGroups}
\logpage{[ 7, 0, 0 ]}
\hyperdef{L}{X86AB2EC37E2F6C19}{}
{
  \textsf{GAP} is well\texttt{\symbol{45}}equipped to deal with \emph{finite} cosets. However, if a coset is infinite, methods may not be available, may be
faulty, or may run forever. The \textsf{TwistedConjugacy} package provides additional methods for existing functions that can deal with
infinite cosets of PcpGroups. 

 The only completely new functions are \texttt{DoubleCosetIndex} (\ref{DoubleCosetIndex}) and its \texttt{NC} version. 
\section{\textcolor{Chapter }{Right cosets}}\label{Chapter_Cosets_of_PcpGroups_Section_Right_cosets}
\logpage{[ 7, 1, 0 ]}
\hyperdef{L}{X7A16782E7B3F98F6}{}
{
  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 \texttt{\texttt{\symbol{92}}in} (\ref{bSlashin:for an element and a double coset of a PcpGroup})). 

\subsection{\textcolor{Chapter }{Intersection (of right cosets of a PcpGroup)}}
\logpage{[ 7, 1, 1 ]}\nobreak
\label{AutoDoc_generated_group13}
\hyperdef{L}{X827675EB8157DF2D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Intersection({\mdseries\slshape C1, C2, ...})\index{Intersection@\texttt{Intersection}!of right cosets of a PcpGroup}
\label{Intersection:of right cosets of a PcpGroup}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Intersection({\mdseries\slshape L})\index{Intersection@\texttt{Intersection}!of a list of right cosets of a PcpGroup}
\label{Intersection:of a list of right cosets of a PcpGroup}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the intersection of the right cosets \mbox{\texttt{\mdseries\slshape C1}}, \mbox{\texttt{\mdseries\slshape C2}}, ... 



 Alternatively, this function also accepts a single list of right cosets \mbox{\texttt{\mdseries\slshape L}} as argument. 

 This intersection is always a right coset, or the empty list. 

 }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G := ExamplesOfSomePcpGroups( 5 );;|
  !gapprompt@gap>| !gapinput@H := Subgroup( G, [ G.1*G.2^-1*G.3^-1*G.4^-1, G.2^-1*G.3*G.4^-2 ] );;|
  !gapprompt@gap>| !gapinput@K := Subgroup( G, [ G.1*G.3^-2*G.4^2, G.1*G.4^4 ] );;|
  !gapprompt@gap>| !gapinput@x := G.1*G.3^-1;;|
  !gapprompt@gap>| !gapinput@y := G.1*G.2^-1*G.3^-2*G.4^-1;;|
  !gapprompt@gap>| !gapinput@z := G.1*G.2*G.3*G.4^2;;|
  !gapprompt@gap>| !gapinput@Hx := RightCoset( H, x );;|
  !gapprompt@gap>| !gapinput@Ky := RightCoset( K, y );;|
  !gapprompt@gap>| !gapinput@Intersection( Hx, Ky );|
  RightCoset(<group with 2 generators>,<object>)
  !gapprompt@gap>| !gapinput@Kz := RightCoset( K, z );;|
  !gapprompt@gap>| !gapinput@Intersection( Hx, Kz );|
  [  ]
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Double cosets}}\label{Chapter_Cosets_of_PcpGroups_Section_Double_cosets}
\logpage{[ 7, 2, 0 ]}
\hyperdef{L}{X78B98B257E981046}{}
{
  Algorithms designed for computing with twisted conjugacy classes can be
leveraged to do computations involving double cosets, see \cite[Sec. 9]{tert25-a} for a description on this. When the \textsf{TwistedConjugacy} package is loaded, it does this automatically, and the functions below should
then work for PcpGroups, even if they are infinite. 
\subsection{\textcolor{Chapter }{\texttt{\symbol{92}}in}}\label{AutoDoc_generated_group14}
\logpage{[ 7, 2, 1 ]}
\hyperdef{L}{X87BDB89B7AAFE8AD}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{\texttt{\symbol{92}}in({\mdseries\slshape g, D})\index{\texttt{\symbol{92}}in@\texttt{\texttt{\symbol{92}}in}!for an element and a double coset of a PcpGroup}
\label{bSlashin:for an element and a double coset of a PcpGroup}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
\texttt{true} if \mbox{\texttt{\mdseries\slshape g}} is an element of \mbox{\texttt{\mdseries\slshape D}}, otherwise \texttt{false}. 



 

 }

 
\subsection{\textcolor{Chapter }{Size}}\label{AutoDoc_generated_group15}
\logpage{[ 7, 2, 2 ]}
\hyperdef{L}{X858ADA3B7A684421}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Size({\mdseries\slshape D})\index{Size@\texttt{Size}!of a double coset of a PcpGroup}
\label{Size:of a double coset of a PcpGroup}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
the number of elements in \mbox{\texttt{\mdseries\slshape D}}. 



 

 }

 
\subsection{\textcolor{Chapter }{List}}\label{AutoDoc_generated_group16}
\logpage{[ 7, 2, 3 ]}
\hyperdef{L}{X7EBA57FC7CCF8449}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{List({\mdseries\slshape D})\index{List@\texttt{List}!of a double coset of a PcpGroup}
\label{List:of a double coset of a PcpGroup}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list containing the elements of \mbox{\texttt{\mdseries\slshape D}}. 



 If \mbox{\texttt{\mdseries\slshape D}} is infinite, this will run forever. It is recommended to first test the
finiteness of \mbox{\texttt{\mdseries\slshape D}} using \texttt{Size} (\ref{Size:of a double coset of a PcpGroup}). }

 
\subsection{\textcolor{Chapter }{\texttt{\symbol{92}}=}}\label{AutoDoc_generated_group17}
\logpage{[ 7, 2, 4 ]}
\hyperdef{L}{X806A4814806A4814}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{\texttt{\symbol{92}}=({\mdseries\slshape C, D})\index{\texttt{\symbol{92}}=@\texttt{\texttt{\symbol{92}}=}!for double cosets of a PcpGroup}
\label{bSlash=:for double cosets of a PcpGroup}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
\texttt{true} if \mbox{\texttt{\mdseries\slshape C}} and \mbox{\texttt{\mdseries\slshape D}} are the same double coset, otherwise \texttt{false}. 



 

 }

 
\subsection{\textcolor{Chapter }{DoubleCosets}}\label{AutoDoc_generated_group18}
\logpage{[ 7, 2, 5 ]}
\hyperdef{L}{X7A5EFABB86E6D4D5}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DoubleCosets({\mdseries\slshape G, H, K})\index{DoubleCosets@\texttt{DoubleCosets}!for PcpGroups}
\label{DoubleCosets:for PcpGroups}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DoubleCosetsNC({\mdseries\slshape G, H, K})\index{DoubleCosetsNC@\texttt{DoubleCosetsNC}!for PcpGroups}
\label{DoubleCosetsNC:for PcpGroups}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
a duplicate\texttt{\symbol{45}}free list of all \texttt{(\mbox{\texttt{\mdseries\slshape H}},\mbox{\texttt{\mdseries\slshape K}})}\texttt{\symbol{45}}double cosets in \mbox{\texttt{\mdseries\slshape G}} if there are finitely many, otherwise \texttt{fail}. 



 The groups \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape K}} must be subgroups of the group \mbox{\texttt{\mdseries\slshape G}}. The \texttt{NC} version does not check whether this is the case. 

 }

 
\subsection{\textcolor{Chapter }{DoubleCosetRepsAndSizes}}\label{AutoDoc_generated_group19}
\logpage{[ 7, 2, 6 ]}
\hyperdef{L}{X7A25B1C886CF8C6A}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DoubleCosetRepsAndSizes({\mdseries\slshape G, H, K})\index{DoubleCosetRepsAndSizes@\texttt{DoubleCosetRepsAndSizes}!for PcpGroups}
\label{DoubleCosetRepsAndSizes:for PcpGroups}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
a list containing pairs of the form \texttt{[ r, n ]}, where \texttt{r} is a representative and \texttt{n} is the size of a double coset. 



 While for finite groups this function is supposed to be faster than \texttt{DoubleCosetsNC} (\ref{DoubleCosetsNC:for PcpGroups}), for PcpGroups it is usually \emph{slower}. }

 
\subsection{\textcolor{Chapter }{DoubleCosetIndex}}\label{AutoDoc_generated_group20}
\logpage{[ 7, 2, 7 ]}
\hyperdef{L}{X805F0F1E803BE255}{}
{
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DoubleCosetIndex({\mdseries\slshape G, H, K})\index{DoubleCosetIndex@\texttt{DoubleCosetIndex}}
\label{DoubleCosetIndex}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DoubleCosetIndexNC({\mdseries\slshape G, H, K})\index{DoubleCosetIndexNC@\texttt{DoubleCosetIndexNC}}
\label{DoubleCosetIndexNC}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
the double coset index of the pair (\mbox{\texttt{\mdseries\slshape H}},\mbox{\texttt{\mdseries\slshape K}}). 



 The groups \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape K}} must be subgroups of the group \mbox{\texttt{\mdseries\slshape G}}. The \texttt{NC} version does not check whether this is the case. 

 }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@HxK := DoubleCoset( H, x, K );;|
  !gapprompt@gap>| !gapinput@HyK := DoubleCoset( H, y, K );;|
  !gapprompt@gap>| !gapinput@HzK := DoubleCoset( H, z, K );;|
  !gapprompt@gap>| !gapinput@y in HxK;|
  true
  !gapprompt@gap>| !gapinput@z in HxK;|
  false
  !gapprompt@gap>| !gapinput@HxK = HyK;|
  true
  !gapprompt@gap>| !gapinput@HxK = HzK;|
  false
  !gapprompt@gap>| !gapinput@DoubleCosets( G, H, K );|
  [ DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>),
    DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>) ]
  !gapprompt@gap>| !gapinput@DoubleCosetIndex( G, H, K );|
  2
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Group homomorphisms}}\label{Chapter_Group_homomorphisms}
\logpage{[ 8, 0, 0 ]}
\hyperdef{L}{X83702FC27B3C3098}{}
{
  
\section{\textcolor{Chapter }{Representatives of homomorphisms between groups}}\label{Chapter_Group_homomorphisms_Section_Representatives_of_homomorphisms_between_groups}
\logpage{[ 8, 1, 0 ]}
\hyperdef{L}{X80DDEC8C82E2A4F1}{}
{
  Please note that the functions below are only implemented for finite groups. 

\subsection{\textcolor{Chapter }{RepresentativesAutomorphismClasses}}
\logpage{[ 8, 1, 1 ]}\nobreak
\hyperdef{L}{X78ADEE0C83819159}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativesAutomorphismClasses({\mdseries\slshape G})\index{RepresentativesAutomorphismClasses@\texttt{RepresentativesAutomorphismClasses}}
\label{RepresentativesAutomorphismClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list of the automorphisms of \mbox{\texttt{\mdseries\slshape G}} up to composition with inner automorphisms. 



 

 }

 

\subsection{\textcolor{Chapter }{RepresentativesEndomorphismClasses}}
\logpage{[ 8, 1, 2 ]}\nobreak
\hyperdef{L}{X7A7935B286050886}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativesEndomorphismClasses({\mdseries\slshape G})\index{RepresentativesEndomorphismClasses@\texttt{RepresentativesEndomorphismClasses}}
\label{RepresentativesEndomorphismClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list of the endomorphisms of \mbox{\texttt{\mdseries\slshape G}} up to composition with inner automorphisms. 



 This does the same as calling \texttt{AllHomomorphismClasses(\mbox{\texttt{\mdseries\slshape G}},\mbox{\texttt{\mdseries\slshape G}})}, but should be faster for abelian and
non\texttt{\symbol{45}}2\texttt{\symbol{45}}generated groups. For
2\texttt{\symbol{45}}generated groups, this function behaves nearly identical
to \texttt{AllHomomorphismClasses} (\textbf{Reference: AllHomomorphismClasses}). }

 

\subsection{\textcolor{Chapter }{RepresentativesHomomorphismClasses}}
\logpage{[ 8, 1, 3 ]}\nobreak
\hyperdef{L}{X81E5CF92816BF199}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RepresentativesHomomorphismClasses({\mdseries\slshape H, G})\index{RepresentativesHomomorphismClasses@\texttt{RepresentativesHomomorphismClasses}}
\label{RepresentativesHomomorphismClasses}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
a list of the homomorphisms from \mbox{\texttt{\mdseries\slshape H}} to \mbox{\texttt{\mdseries\slshape G}}, up to composition with inner automorphisms of \mbox{\texttt{\mdseries\slshape G}}. 



 This does the same as calling \texttt{AllHomomorphismClasses(\mbox{\texttt{\mdseries\slshape H}},\mbox{\texttt{\mdseries\slshape G}})}, but should be faster for abelian and
non\texttt{\symbol{45}}2\texttt{\symbol{45}}generated groups. For
2\texttt{\symbol{45}}generated groups, this function behaves nearly identical
to \texttt{AllHomomorphismClasses} (\textbf{Reference: AllHomomorphismClasses}). }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G := SymmetricGroup( 6 );;|
  !gapprompt@gap>| !gapinput@Auts := RepresentativesAutomorphismClasses( G );;|
  !gapprompt@gap>| !gapinput@Size( Auts );|
  2
  !gapprompt@gap>| !gapinput@ForAll( Auts, IsGroupHomomorphism and IsEndoMapping and IsBijective );|
  true
  !gapprompt@gap>| !gapinput@Ends := RepresentativesEndomorphismClasses( G );;|
  !gapprompt@gap>| !gapinput@Size( Ends );|
  6
  !gapprompt@gap>| !gapinput@ForAll( Ends, IsGroupHomomorphism and IsEndoMapping );|
  true
  !gapprompt@gap>| !gapinput@H := SymmetricGroup( 5 );;|
  !gapprompt@gap>| !gapinput@Homs := RepresentativesHomomorphismClasses( H, G );;|
  !gapprompt@gap>| !gapinput@Size( Homs );|
  6
  !gapprompt@gap>| !gapinput@ForAll( Homs, IsGroupHomomorphism );|
  true
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Coincidence and fixed point groups}}\label{Chapter_Group_homomorphisms_Section_Coincidence_and_fixed_point_groups}
\logpage{[ 8, 2, 0 ]}
\hyperdef{L}{X8164A34A86155DFB}{}
{
  

\subsection{\textcolor{Chapter }{FixedPointGroup}}
\logpage{[ 8, 2, 1 ]}\nobreak
\hyperdef{L}{X799546928394FF8B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FixedPointGroup({\mdseries\slshape endo})\index{FixedPointGroup@\texttt{FixedPointGroup}}
\label{FixedPointGroup}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the subgroup of \texttt{Source(\mbox{\texttt{\mdseries\slshape endo}})} consisting of the elements fixed under the endomorphism \mbox{\texttt{\mdseries\slshape endo}}. 



 

 }

 

\subsection{\textcolor{Chapter }{CoincidenceGroup}}
\logpage{[ 8, 2, 2 ]}\nobreak
\hyperdef{L}{X780DF6247E3E9190}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{CoincidenceGroup({\mdseries\slshape hom1, hom2[, ...]})\index{CoincidenceGroup@\texttt{CoincidenceGroup}}
\label{CoincidenceGroup}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the subgroup of \texttt{Source(\mbox{\texttt{\mdseries\slshape hom1}})} consisting of the elements \texttt{h} for which \texttt{h\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape hom1}}} = \texttt{h\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape hom2}}} = ... 



 For infinite non\texttt{\symbol{45}}abelian groups, this function relies on a
mixture of the algorithms described in \cite[Thm. 2]{roma16-a}, \cite[Sec. 5.4]{bkl20-a} and \cite[Sec. 7]{roma21-a}. }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@phi := GroupHomomorphismByImages( G, G, [ (1,2,5,6,4), (1,2)(3,6)(4,5) ],|
  !gapprompt@>| !gapinput@ [ (2,3,4,5,6), (1,2) ] );;|
  !gapprompt@gap>| !gapinput@Set( FixedPointGroup( phi ) );|
  [ (), (1,2,3,6,5), (1,3,5,2,6), (1,5,6,3,2), (1,6,2,5,3) ]
  !gapprompt@gap>| !gapinput@psi := GroupHomomorphismByImages( H, G, [ (1,2,3,4,5), (1,2) ],|
  !gapprompt@>| !gapinput@ [ (), (1,2) ] );;|
  !gapprompt@gap>| !gapinput@khi := GroupHomomorphismByImages( H, G, [ (1,2,3,4,5), (1,2) ],|
  !gapprompt@>| !gapinput@ [ (), (1,2)(3,4) ] );;|
  !gapprompt@gap>| !gapinput@CoincidenceGroup( psi, khi ) = AlternatingGroup( 5 );|
  true
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Induced and restricted group homomorphisms}}\label{Chapter_Group_homomorphisms_Section_Induced_and_restricted_group_homomorphisms}
\logpage{[ 8, 3, 0 ]}
\hyperdef{L}{X8084A06782AE362E}{}
{
  

\subsection{\textcolor{Chapter }{InducedHomomorphism}}
\logpage{[ 8, 3, 1 ]}\nobreak
\hyperdef{L}{X7F6D0625837B7B94}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{InducedHomomorphism({\mdseries\slshape epi1, epi2, hom})\index{InducedHomomorphism@\texttt{InducedHomomorphism}}
\label{InducedHomomorphism}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the homomorphism induced by \mbox{\texttt{\mdseries\slshape hom}} between the images of \mbox{\texttt{\mdseries\slshape epi1}} and \mbox{\texttt{\mdseries\slshape epi2}}. 



 Let \mbox{\texttt{\mdseries\slshape hom}} be a group homomorphism from a group \texttt{H} to a group \texttt{G}, let \mbox{\texttt{\mdseries\slshape epi1}} be an epimorphism from \texttt{H} to a group \texttt{Q} and let \mbox{\texttt{\mdseries\slshape epi2}} be an epimorphism from \texttt{G} to a group \texttt{P} such that the kernel of \mbox{\texttt{\mdseries\slshape epi1}} is mapped into the kernel of \mbox{\texttt{\mdseries\slshape epi2}} by \mbox{\texttt{\mdseries\slshape hom}}. This command returns the homomorphism from \texttt{Q} to \texttt{P} that maps \texttt{h\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape epi1}}} to \texttt{(h\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape hom}})\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape epi2}}}, for any element \texttt{h} of \texttt{H}. This function generalises \texttt{InducedAutomorphism} (\textbf{Reference: InducedAutomorphism}) to homomorphisms. }

 

\subsection{\textcolor{Chapter }{RestrictedHomomorphism}}
\logpage{[ 8, 3, 2 ]}\nobreak
\hyperdef{L}{X7DBA352982923900}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RestrictedHomomorphism({\mdseries\slshape hom, N, M})\index{RestrictedHomomorphism@\texttt{RestrictedHomomorphism}}
\label{RestrictedHomomorphism}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the homomorphism \mbox{\texttt{\mdseries\slshape hom}}, but restricted as a map from \mbox{\texttt{\mdseries\slshape N}} to \mbox{\texttt{\mdseries\slshape M}}. 



 Let \mbox{\texttt{\mdseries\slshape hom}} be a group homomorphism from a group \texttt{H} to a group \texttt{G}, and let \mbox{\texttt{\mdseries\slshape N}} be subgroup of \texttt{H} such that its image under \mbox{\texttt{\mdseries\slshape hom}} is a subgroup of \mbox{\texttt{\mdseries\slshape M}}. This command returns the homomorphism from \mbox{\texttt{\mdseries\slshape N}} to \mbox{\texttt{\mdseries\slshape M}} that maps \texttt{n} to \texttt{n\texttt{\symbol{94}}\mbox{\texttt{\mdseries\slshape hom}}} for any element \texttt{n} of \mbox{\texttt{\mdseries\slshape N}}. No checks are made to verify that \mbox{\texttt{\mdseries\slshape hom}} maps \mbox{\texttt{\mdseries\slshape N}} into \mbox{\texttt{\mdseries\slshape M}}. This function is similar to \texttt{RestrictedMapping} (\textbf{Reference: RestrictedMapping}), but its range is explicitly set to \mbox{\texttt{\mdseries\slshape M}}. }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G := PcGroupCode( 1018013, 28 );;|
  !gapprompt@gap>| !gapinput@phi := GroupHomomorphismByImages( G, G, [ G.1, G.3 ],|
  !gapprompt@>| !gapinput@ [ G.1*G.2*G.3^2, G.3^4 ] );;|
  !gapprompt@gap>| !gapinput@N := DerivedSubgroup( G );;|
  !gapprompt@gap>| !gapinput@p := NaturalHomomorphismByNormalSubgroup( G, N );|
  [ f1, f2, f3 ] -> [ f1, f2, <identity> of ... ]
  !gapprompt@gap>| !gapinput@ind := InducedHomomorphism( p, p, phi );|
  [ f1 ] -> [ f1*f2 ]
  !gapprompt@gap>| !gapinput@Source( ind ) = Range( p ) and Range( ind ) = Range( p );|
  true
  !gapprompt@gap>| !gapinput@res := RestrictedHomomorphism( phi, N, N );|
  [ f3 ] -> [ f3^4 ]
  !gapprompt@gap>| !gapinput@Source( res ) = N and Range( res ) = N;|
  true
\end{Verbatim}
 }

 }

   
\chapter{\textcolor{Chapter }{Group derivations}}\label{Chapter_Group_derivations}
\logpage{[ 9, 0, 0 ]}
\hyperdef{L}{X7B8C20A9826087E1}{}
{
  Let $G$ and $H$ be groups and let $H$ act on $G$ via automorphisms, i.e. there is a group homomorphism 
\[\alpha \colon H \to \operatorname{Aut}(G) \colon h \mapsto \alpha_h\]
 such that $g^h = \alpha_h(g)$ for all $g \in G$ and $h \in H$. A \emph{group derivation} $\delta \colon H \to G$ is a map such that 
\[\delta(h_1h_2) = \delta(h_1)^{h_2}\delta(h_2).\]
 Note that we do not require $G$ to be abelian. 

 Algorithms designed for computing with twisted conjugacy classes can be
leveraged to do computations involving group derivations, see \cite[Sec. 10]{tert25-a} for a description on this. 

 Please note that the functions in this chapter require $G$ and $H$ to either both be finite, or both be PcpGroups. 
\section{\textcolor{Chapter }{Creating group derivations}}\label{Chapter_Group_derivations_Section_Creating_group_derivations}
\logpage{[ 9, 1, 0 ]}
\hyperdef{L}{X7AAB25B587D3DF70}{}
{
  

\subsection{\textcolor{Chapter }{GroupDerivationByImages}}
\logpage{[ 9, 1, 1 ]}\nobreak
\label{AutoDoc_generated_group21}
\hyperdef{L}{X8303ADE37FFAA109}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GroupDerivationByImages({\mdseries\slshape H, G[[, gens], imgs], act})\index{GroupDerivationByImages@\texttt{GroupDerivationByImages}}
\label{GroupDerivationByImages}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GroupDerivationByImagesNC({\mdseries\slshape H, G[[, gens], imgs], act})\index{GroupDerivationByImagesNC@\texttt{GroupDerivationByImagesNC}}
\label{GroupDerivationByImagesNC}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
the specified group derivation, or \texttt{fail} if the given arguments do not define a derivation. 



 This works in the same vein as \texttt{GroupHomomorphismByImages} (\textbf{Reference: GroupHomomorphismByImages}). The group \mbox{\texttt{\mdseries\slshape H}} acts on the group \mbox{\texttt{\mdseries\slshape G}} via \mbox{\texttt{\mdseries\slshape act}}, which must be a homomorphism from \mbox{\texttt{\mdseries\slshape H}} into a group of automorphisms o\mbox{\texttt{\mdseries\slshape G}}. This command then returns the group derivation defined by mapping the list \mbox{\texttt{\mdseries\slshape gens}} of generators of \mbox{\texttt{\mdseries\slshape H}} to the list \mbox{\texttt{\mdseries\slshape imgs}} of images in \mbox{\texttt{\mdseries\slshape G}}. 

 If omitted, the arguments \mbox{\texttt{\mdseries\slshape gens}} and \mbox{\texttt{\mdseries\slshape imgs}} default to the \texttt{GeneratorsOfGroup} value of \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape G}} respectively. 

--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5
C=84 H=99 G=91

¤ Dauer der Verarbeitung: 0.58 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.