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

\usepackage{a4wide}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[latin1]{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}





%% 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{\textsf{PERMUT}\mbox{}}}\\
\vfill

\hypersetup{pdftitle=\textsf{PERMUT}}
\markright{\scriptsize \mbox{}\hfill \textsf{PERMUT} \hfill\mbox{}}
{\Huge \textbf{A \textsf{GAP}4 package to deal with permutability\mbox{}}}\\
\vfill

{\Huge Version 1.03\mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{Adolfo Ballester-Bolinches  \mbox{}}}\\
{\Large \textbf{Enric Cosme-Ll{\a'o}pez   \mbox{}}}\\
{\Large \textbf{Ram{\a'o}n Esteban-Romero \mbox{}}}\\
\hypersetup{pdfauthor=Adolfo Ballester-Bolinches  ; Enric Cosme-Ll{\a'o}pez   ; Ram{\a'o}n Esteban-Romero }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{Adolfo Ballester-Bolinches  }  Email: \href{mailto://Adolfo.Balester@uv.es} {\texttt{Adolfo.Balester@uv.es}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
Departament d'{\a`A}lgebra, Universitat de Val{\a`e}ncia\end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Enric Cosme-Ll{\a'o}pez   }  Email: \href{mailto://Enric.Cosme@uv.es} {\texttt{Enric.Cosme@uv.es}}\\
  Homepage: \href{http://www.uv.es/coslloen/} {\texttt{http://www.uv.es/coslloen/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
Departament d'{\a`A}lgebra, Universitat de Val{\a`e}ncia\end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Ram{\a'o}n Esteban-Romero }  Email: \href{mailto://Ramon.Esteban@uv.es} {\texttt{Ramon.Esteban@uv.es}}\\
  Homepage: \href{http://www.uv.es/estebanr/} {\texttt{http://www.uv.es/estebanr/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
Departament d'{\a`A}lgebra, Universitat de Val{\a`e}ncia. Permanent: Institut
Universitari de Matem{\a`a}tica Pura i Aplicada, Universitat Polit{\a`e}cnica
de Val{\a`e}ncia\end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
\newpage

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

\tableofcontents
\newpage

 
\chapter{\textcolor{Chapter }{Introduction to the \textsf{PERMUT} Package}}\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X7CFD56687E07E513}{}
{
 \emph{All functions defined in this package deal only with finite groups.} Moreover, some of the functions assume that the orders of all subgroups are
easily computable and that the decomposition of the order of a group as a
product of prime numbers can be done in a reasonable time. 

 The package \textsf{PERMUT} contains some functions to deal with permutability in finite groups. It
includes functions to test some subgroup embedding properties related to
permutability, like permutability or Sylow permutability. It also includes
some functions to check whether a group belongs to the classes of T-groups,
PT-groups, and PST-groups, which are the classes of groups in which normality,
permutability, and Sylow permutability, respectively, are transitive. These
properties and classes of groups have been widely studied during the last
years. Most of them are described in \cite{BallesterEstebanAsaad10}. 

 The algorithms for T-groups, PT-groups, and PST-groups of this package use
some interesting local descriptions of groups in these classes, that is, given
in terms of some information related to the primes $p$ dividing their order, usually by looking at $p$-subgroups or $p$-chief factors. These characterisations show that the only difference between
all three classes of groups in the soluble universe corresponds to the Sylow
structure. Nevertheless, for the sake of completeness, we also provide
functions that use directly the definition of these classes. In the case of
T-groups and PST-groups, as well as for soluble PT-groups, we reduce the test
to subnormal subgroups of defect{\nobreakspace}$2$ (see \cite{BallesterEstebanRagland07}, \cite{BallesterEstebanRagland09}, and \cite{BallesterBeidlemanCosseyEstebanRaglandSchmidt09}). Of course, to do this we must introduce some functions to check whether two
subgroups permute and whether a subgroup is permutable or S-permutable. 

 Some of the definitions of group-related concepts appear more than once in
this manual, in the description of different functions. Although these
repetitions may seem unnecessary when reading the whole manual, we hope that
they benefit users who read the online help in \textsf{GAP}. 

 In order to obtain easily counterexamples which show that a group or a
subgroup does not satisfy a certain property, we have introduced what we have
called ``One'' functions, which store such counterexamples. In some cases, the property can
be checked by proving that these counterexamples do not exist. 

 This package requires the \textsf{Format} package by B. Eick and C. R. B. Wright (see \cite{EickWright03-FORMAT}), because it uses the functions \texttt{PResidual} (\textbf{FORMAT: PResidual}) and \texttt{SystemNormalizer} (\textbf{FORMAT: SystemNormalizer}), which are defined there. Some of the examples in this manual use the library
of groups of small order. 

 The mathematical foundations of the algorithms presented in this package have
been described in \cite{BallesterCosmeEsteban13-cejm}. 

 The authors acknowledge the support of the grants MTM2010-19938-C03-01 and
MTM2014-54707-C3-1-P from the \emph{Ministerio de Econom{\a'\i}a y Competitividad}, Spanish Government (all authors), the grant 11271085 from National Natural
Science Foundation of China (A. Ballester-Bolinches) and the predoctoral grant
AP2010-2764 from the \emph{Ministerio de Educaci{\a'o}n}, Spanish Government (E. Cosme-Ll{\a'o}pez). The authors are also indebted to
the members of the \textsf{GAP} council, especially Leonard Soicher, Alice Niemeyer, and Alexander Konovalov,
as well as to the anonymous referees, for their comments which have helped us
to improve the package and its documentation. 

 }

 
\chapter{\textcolor{Chapter }{Installation and Help of the \textsf{PERMUT} Package}}\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X7AD658FC8472E37B}{}
{
 Since all functions of this package are written in the \textsf{GAP} language, it is enough to unpack the archive file in a directory in the \texttt{pkg} hierarchy of your \textsf{GAP} 4 distribution. It has been tested on version 4.7.4 of \textsf{GAP}. 

 The \textsf{PERMUT} package requires that the package \textsf{Format} \cite{EickWright03-FORMAT} be installed on the system, because it uses the functions \texttt{PResidual} (\textbf{FORMAT: PResidual}) and \texttt{SystemNormalizer} (\textbf{FORMAT: SystemNormalizer}) which are defined there. The \textsf{Format} package can be downloaded from the \textsf{GAP} web page (\href{http://www.gap-system.org} {\texttt{http://www.gap-system.org}}). 

 The \textsf{PERMUT} package can be loaded with 
\begin{Verbatim}[commandchars=!|D,fontsize=\small,frame=single,label=Example]
  !gapprompt|gap>D !gapinput|LoadPackage("permut");D
  -----------------------------------------------------------------------------
  Loading  FORMAT 1.3 (Formations of Finite Soluble Groups)
  by Bettina Eick (http://www-public.tu-bs.de:8080/~beick) and
     Charles R.B. Wright (http://www.uoregon.edu/~wright).
  -----------------------------------------------------------------------------
  #I --------------------------------------------------------
  #I Loading the GAP package ``permut'' in version 1.03
  #I (a package to deal with permutability in finite groups)
  #I by Adolfo Ballester-Bolinches <Adolfo.Ballester@uv.es>,
  #I    Enric Cosme-Ll\'opez <Enric.Cosme@uv.es>,
  #I    and Ramon Esteban-Romero <Ramon.Esteban@uv.es> /
  #I                             <resteban@mat.upv.es>.
  #I
  #I    Use ``?permut:'' for help.
  #I --------------------------------------------------------
  
  true
\end{Verbatim}
 

 Suggestions, comments, and bug reports can be sent to the email address \href{mailto://Ramon.Esteban@uv.es} {\texttt{Ramon.Esteban@uv.es}}. }

 
\chapter{\textcolor{Chapter }{Permutability of Subgroups in Finite Groups}}\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X7B87CECD83EA77DF}{}
{
 This chapter describes functions to check permutability of subgroups in a
given group. First we present a function to check whether a subgroup permutes
with another one, then we present functions to test whether a subgroup
permutes with the members of a given family of subgroups, and finally we
introduce some other subgroup embedding properties related to permutability. 

 
\section{\textcolor{Chapter }{Permutability functions}}\label{permut-functions}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X834D77E17960C0B7}{}
{
 

\subsection{\textcolor{Chapter }{ArePermutableSubgroups}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X862727A87C26B10B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ArePermutableSubgroups({\mdseries\slshape [G, ]U, V})\index{ArePermutableSubgroups@\texttt{ArePermutableSubgroups}}
\label{ArePermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape U}} and \mbox{\texttt{\mdseries\slshape V}} permute in \mbox{\texttt{\mdseries\slshape G}}. The groups \mbox{\texttt{\mdseries\slshape U}} and \mbox{\texttt{\mdseries\slshape V}} must be subgroups of \mbox{\texttt{\mdseries\slshape G}}. The subgroups $U$ and $V$ \emph{permute} when $UV = VU$. This is equivalent to affirming that $UV$ is a subgroup of{\nobreakspace}$G$. 

 This is done by checking that the order of $\langle U, V \rangle$ is the order of their Frobenius product $UV$, that is, $|U||V|/|U \cap V|$. Hence the performance of this function depends strongly on the existence of
good algorithms to compute the intersection of two subgroups and, of course,
the order of a subgroup. Shorthands are provided for the cases in which one of \mbox{\texttt{\mdseries\slshape U}} and \mbox{\texttt{\mdseries\slshape V}} is a subgroup of the other one or \mbox{\texttt{\mdseries\slshape U}} or \mbox{\texttt{\mdseries\slshape V}} are permutable in a common supergroup. 

 In the version with two arguments, \mbox{\texttt{\mdseries\slshape U}} and \mbox{\texttt{\mdseries\slshape V}} must have a common parent or \texttt{ClosureGroup( U, V )} (see \texttt{ClosureGroup} (\textbf{Reference: ClosureGroup})) is called to construct a common supergroup for \mbox{\texttt{\mdseries\slshape U}} and \mbox{\texttt{\mdseries\slshape V}}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2)(3,4)]);|
  Group([ (1,2)(3,4) ])
  !gapprompt@gap>| !gapinput@b:=Subgroup(g,[(1,2,3)]);|
  Group([ (1,2,3) ])
  !gapprompt@gap>| !gapinput@c:=Subgroup(g,[(1,2)]);|
  Group([ (1,2) ])
  !gapprompt@gap>| !gapinput@ArePermutableSubgroups(g,a,b);|
  false
  !gapprompt@gap>| !gapinput@ArePermutableSubgroups(g,a,c);|
  true
  !gapprompt@gap>| !gapinput@ArePermutableSubgroups(g,b,c);|
  true
  !gapprompt@gap>| !gapinput@ArePermutableSubgroups(b,c);|
  true
  !gapprompt@gap>| !gapinput@ArePermutableSubgroups(b,a);|
  false
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Embedding properties related to permutability}}\label{permut-embedding-properties}
\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X875BEB9B7D0DBC9A}{}
{
 In the following we describe some functions which allow us to test whether a
subgroup permutes with the members of some families of subgroups. We pay
special attention to the families of all subgroups and all Sylow subgroups of
the group. In some cases, we have introduced some ``One'' functions, which give an element or a subgroup in the relevant family of
subgroups of the group which shows that the given property fails, or \texttt{fail} otherwise. 

 

\subsection{\textcolor{Chapter }{PermutMaxTries}}
\logpage{[ 3, 2, 1 ]}\nobreak
\hyperdef{L}{X85CFBEBB83245E3A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PermutMaxTries\index{PermutMaxTries@\texttt{PermutMaxTries}}
\label{PermutMaxTries}
}\hfill{\scriptsize (global variable)}}\\


 This variable contains the maximum number of random attempts of permutability
checks before trying general deterministic methods in the functions \texttt{IsPermutable} (\ref{IsPermutable}) and \texttt{IsIwasawaSylow} (\ref{IsIwasawaSylow}). Its default value is $10$. }

 

\subsection{\textcolor{Chapter }{IsPermutable}}
\logpage{[ 3, 2, 2 ]}\nobreak
\hyperdef{L}{X80C15D427EC11A5F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPermutable({\mdseries\slshape G, H})\index{IsPermutable@\texttt{IsPermutable}}
\label{IsPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPermutableInParent({\mdseries\slshape H})\index{IsPermutableInParent@\texttt{IsPermutableInParent}}
\label{IsPermutableInParent}
}\hfill{\scriptsize (property)}}\\


 This property returns \texttt{true} if the subgroup \mbox{\texttt{\mdseries\slshape H}} is permutable in \mbox{\texttt{\mdseries\slshape G}}, otherwise it returns \texttt{false}. We say that a subgroup $H$ of a group $G$ is \emph{permutable} in $G$ if $H$ permutes with all subgroups of{\nobreakspace}$G$. 

 If the attribute \texttt{OneSubgroupNotPermutingWithInParent} (\ref{OneSubgroupNotPermutingWithInParent}) has been set, it is used if possible. Otherwise, the algorithm checks looks
for a cyclic subgroup not permuting with \mbox{\texttt{\mdseries\slshape H}}. The number of such cyclic subgroups is controlled by the variable \texttt{PermutMaxTries} (\ref{PermutMaxTries}), by default, $10$. If \mbox{\texttt{\mdseries\slshape H}} permutes with all these subgroups, then the algorithm checks whether \mbox{\texttt{\mdseries\slshape H}} is hypercentrally embedded in \mbox{\texttt{\mdseries\slshape G}} and that the Sylow $p$-subgroups of $H/H_G$ permute with all cyclic $p$-subgroups of $G/H_G$ for each prime $p$ dividing the order of $G/H_G$. This is a sufficient condition for permutability. }

 

\subsection{\textcolor{Chapter }{OneSubgroupNotPermutingWith}}
\logpage{[ 3, 2, 3 ]}\nobreak
\hyperdef{L}{X8244918D7D1C2703}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupNotPermutingWith({\mdseries\slshape G, H})\index{OneSubgroupNotPermutingWith@\texttt{OneSubgroupNotPermutingWith}}
\label{OneSubgroupNotPermutingWith}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupNotPermutingWithInParent({\mdseries\slshape H})\index{OneSubgroupNotPermutingWithInParent@\texttt{OneSubgroupNotPermutingWithInParent}}
\label{OneSubgroupNotPermutingWithInParent}
}\hfill{\scriptsize (attribute)}}\\


 This attribute finds a cyclic subgroup of \mbox{\texttt{\mdseries\slshape G}} which does not permute with \mbox{\texttt{\mdseries\slshape H}}, that is, a subgroup which shows that \mbox{\texttt{\mdseries\slshape H}} is not permutable in \mbox{\texttt{\mdseries\slshape G}}. Recall that a subgroup $H$ of a group $G$ is \emph{permutable} in $G$ if $H$ permutes with all subgroups of{\nobreakspace}$G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2)(3,4)]);|
  Group([ (1,2)(3,4) ])
  !gapprompt@gap>| !gapinput@b:=Subgroup(g,[(1,2,3)]);|
  Group([ (1,2,3) ])
  !gapprompt@gap>| !gapinput@c:=Subgroup(g,[(1,2)]);|
  Group([ (1,2) ])
  !gapprompt@gap>| !gapinput@IsPermutable(g,a);|
  false
  !gapprompt@gap>| !gapinput@IsPermutable(g,b);|
  false
  !gapprompt@gap>| !gapinput@IsPermutable(g,c);|
  false
  !gapprompt@gap>| !gapinput@OneSubgroupNotPermutingWith(g,b);|
  Group([ (1,3,4) ])
  !gapprompt@gap>| !gapinput@v:=Subgroup(g,[(1,2)(3,4),(1,3)(2,4)]);|
  Group([ (1,2)(3,4), (1,3)(2,4) ])
  !gapprompt@gap>| !gapinput@OneSubgroupNotPermutingWith(g,v);|
  fail
  !gapprompt@gap>| !gapinput@IsPermutable(g,b);|
  false
  !gapprompt@gap>| !gapinput@IsPermutable(g,v);|
  true
\end{Verbatim}
 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(16,6);|
  <pc group of size 16 with 4 generators>
  !gapprompt@gap>| !gapinput@h:=Subgroup(g,[g.2]);|
  Group([ f2 ])
  !gapprompt@gap>| !gapinput@IsNormal(g,h);|
  false
  !gapprompt@gap>| !gapinput@IsPermutable(g,h);|
  true
\end{Verbatim}
 }

 Sometimes one does not require a subgroup to permute with all subgroups of the
group, but only with a selected family of subgroups of the group. The general
case is the following. 

 

\subsection{\textcolor{Chapter }{IsFPermutable}}
\logpage{[ 3, 2, 4 ]}\nobreak
\hyperdef{L}{X865C7F81823FFA10}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsFPermutable({\mdseries\slshape G, H, f})\index{IsFPermutable@\texttt{IsFPermutable}}
\label{IsFPermutable}
}\hfill{\scriptsize (function)}}\\


 In this function, \mbox{\texttt{\mdseries\slshape H}} is a subgroup of \mbox{\texttt{\mdseries\slshape G}} and \mbox{\texttt{\mdseries\slshape f}} must be a list of subgroups of \mbox{\texttt{\mdseries\slshape G}}. It returns \texttt{true} if \mbox{\texttt{\mdseries\slshape H}} permutes with all members of \mbox{\texttt{\mdseries\slshape f}} and \texttt{false} otherwise. 

 This function uses the function \texttt{OneFSubgroupNotPermutingWith} (\ref{OneFSubgroupNotPermutingWith}). Hence it tries to use the values of \texttt{IsPermutableInParent} (\ref{IsPermutableInParent}) and \texttt{OneSubgroupNotPermutingWithInParent} (\ref{OneSubgroupNotPermutingWithInParent}) if one of them is set, and if it returns \texttt{false} it tries to set the values of \texttt{IsPermutableInParent} (\ref{IsPermutableInParent}) and \texttt{OneSubgroupNotPermutingWithInParent} (\ref{OneSubgroupNotPermutingWithInParent}). }

 

\subsection{\textcolor{Chapter }{OneFSubgroupNotPermutingWith}}
\logpage{[ 3, 2, 5 ]}\nobreak
\hyperdef{L}{X826D28757824F83E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneFSubgroupNotPermutingWith({\mdseries\slshape G, H, f})\index{OneFSubgroupNotPermutingWith@\texttt{OneFSubgroupNotPermutingWith}}
\label{OneFSubgroupNotPermutingWith}
}\hfill{\scriptsize (operation)}}\\


 In this operation, \mbox{\texttt{\mdseries\slshape H}} is a subgroup of \mbox{\texttt{\mdseries\slshape G}} and \mbox{\texttt{\mdseries\slshape f}} must be a list of subgroups of \mbox{\texttt{\mdseries\slshape G}}. It returns a subgroup in \mbox{\texttt{\mdseries\slshape f}} not permuting with \mbox{\texttt{\mdseries\slshape H}} if such a subgroup exists, and \texttt{fail} otherwise. 

 This function tries to use the values of \texttt{IsPermutableInParent} (\ref{IsPermutableInParent}) and \texttt{OneSubgroupNotPermutingWithInParent} (\ref{OneSubgroupNotPermutingWithInParent}) if one of them is set. If it returns \texttt{fail}, then it tries to set the value of \texttt{IsPermutableInParent} (\ref{IsPermutableInParent}) and \texttt{OneSubgroupNotPermutingWithInParent} (\ref{OneSubgroupNotPermutingWithInParent}). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2,3,4),(1,3)]);|
  Group([ (1,2,3,4), (1,3) ])
  !gapprompt@gap>| !gapinput@Size(a);|
  8
  !gapprompt@gap>| !gapinput@OneFSubgroupNotPermutingWith(g,a,MaximalSubgroups(g));|
  Group([ (1,2), (3,4), (1,3)(2,4) ])
  !gapprompt@gap>| !gapinput@IsFPermutable(g,a,MaximalSubgroups(g));|
  false
  !gapprompt@gap>| !gapinput@HasIsPermutableInParent(a);|
  true
  !gapprompt@gap>| !gapinput@IsPermutableInParent(a);|
  false
  !gapprompt@gap>| !gapinput@HasOneSubgroupNotPermutingWithInParent(a);|
  true
  !gapprompt@gap>| !gapinput@OneSubgroupNotPermutingWithInParent(a);|
  Group([ (1,2), (3,4), (1,3)(2,4) ])
  !gapprompt@gap>| !gapinput@IsFPermutable(g,a,AllSubnormalSubgroups(g));|
  true
  !gapprompt@gap>| !gapinput@OneFSubgroupNotPermutingWith(g,a,AllSubnormalSubgroups(g));|
  fail
  !gapprompt@gap>| !gapinput@sylows:=g->Union(List(SylowSubgroups(g),|
  !gapprompt@>| !gapinput@          t->ConjugacyClassSubgroups(g,t)));|
  function( g ) ... end
  !gapprompt@gap>| !gapinput@OneFSubgroupNotPermutingWith(g,a,sylows(g));|
  Group([ (3,4), (1,4)(2,3), (1,3)(2,4) ])
\end{Verbatim}
 }

 The following functions can be considered as particular cases of the previous
function for some subgroup embedding functors. However, they can be stored as ``in parent'' attributes or properties and in some cases we have tried to give more
efficient code. 

 

\subsection{\textcolor{Chapter }{IsSPermutable}}
\logpage{[ 3, 2, 6 ]}\nobreak
\hyperdef{L}{X7BA6690983912C09}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSPermutable({\mdseries\slshape G, H})\index{IsSPermutable@\texttt{IsSPermutable}}
\label{IsSPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSPermutableInParent({\mdseries\slshape H})\index{IsSPermutableInParent@\texttt{IsSPermutableInParent}}
\label{IsSPermutableInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if a subgroup \mbox{\texttt{\mdseries\slshape H}} of \mbox{\texttt{\mdseries\slshape G}} is S-permutable in \mbox{\texttt{\mdseries\slshape G}}, that is, \mbox{\texttt{\mdseries\slshape H}} permutes with all Sylow subgroups of \mbox{\texttt{\mdseries\slshape G}}, and returns \texttt{false} otherwise. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(8,3);|
  <pc group of size 8 with 3 generators>
  !gapprompt@gap>| !gapinput@IsSPermutable(g,Subgroup(g,[g.1]));|
  true
  !gapprompt@gap>| !gapinput@IsPermutable(g,Subgroup(g,[g.1]));|
  false
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneSylowSubgroupNotPermutingWith}}
\logpage{[ 3, 2, 7 ]}\nobreak
\hyperdef{L}{X83E103AF7C3DC9B7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSylowSubgroupNotPermutingWith({\mdseries\slshape G, H})\index{OneSylowSubgroupNotPermutingWith@\texttt{OneSylowSubgroupNotPermutingWith}}
\label{OneSylowSubgroupNotPermutingWith}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSylowSubgroupNotPermutingWithInParent({\mdseries\slshape H})\index{OneSylowSubgroupNotPermutingWithInParent@\texttt{One}\-\texttt{Sylow}\-\texttt{Subgroup}\-\texttt{Not}\-\texttt{Permuting}\-\texttt{With}\-\texttt{In}\-\texttt{Parent}}
\label{OneSylowSubgroupNotPermutingWithInParent}
}\hfill{\scriptsize (attribute)}}\\


 The argument \mbox{\texttt{\mdseries\slshape H}} must be a subgroup of \mbox{\texttt{\mdseries\slshape G}}. If \mbox{\texttt{\mdseries\slshape H}} is S-permutable in \mbox{\texttt{\mdseries\slshape G}}, then it returns \texttt{fail}. Otherwise, it returns a Sylow subgroup of \mbox{\texttt{\mdseries\slshape G}} which does not permute with \mbox{\texttt{\mdseries\slshape H}}. We say that a subgroup $H$ of a group $G$ is S-permutable in $G$ if $H$ permutes with all Sylow subgroups of{\nobreakspace}$G$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);;|
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2)(3,4)]);;|
  !gapprompt@gap>| !gapinput@OneSylowSubgroupNotPermutingWith(g,a);|
  Group([ (2,4,3) ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSNPermutable}}
\logpage{[ 3, 2, 8 ]}\nobreak
\hyperdef{L}{X86A62A52831BE00E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSNPermutable({\mdseries\slshape G, H})\index{IsSNPermutable@\texttt{IsSNPermutable}}
\label{IsSNPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSNPermutableInParent({\mdseries\slshape H})\index{IsSNPermutableInParent@\texttt{IsSNPermutableInParent}}
\label{IsSNPermutableInParent}
}\hfill{\scriptsize (attribute)}}\\


 This operation returns \texttt{true} if \mbox{\texttt{\mdseries\slshape H}} permutes with all system normalisers of \mbox{\texttt{\mdseries\slshape G}}, and \texttt{false} otherwise. Here \mbox{\texttt{\mdseries\slshape G}} must be a soluble group and \mbox{\texttt{\mdseries\slshape H}} must be a subgroup of \mbox{\texttt{\mdseries\slshape G}}. If the function is applied to an insoluble group, it gives an error. }

 

\subsection{\textcolor{Chapter }{OneSystemNormaliserNotPermutingWith}}
\logpage{[ 3, 2, 9 ]}\nobreak
\hyperdef{L}{X83D1BF5778D6790A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSystemNormaliserNotPermutingWith({\mdseries\slshape G, H})\index{OneSystemNormaliserNotPermutingWith@\texttt{OneSystemNormaliserNotPermutingWith}}
\label{OneSystemNormaliserNotPermutingWith}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSystemNormaliserNotPermutingWithInParent({\mdseries\slshape H})\index{OneSystemNormaliserNotPermutingWithInParent@\texttt{One}\-\texttt{System}\-\texttt{Normaliser}\-\texttt{Not}\-\texttt{Permuting}\-\texttt{With}\-\texttt{In}\-\texttt{Parent}}
\label{OneSystemNormaliserNotPermutingWithInParent}
}\hfill{\scriptsize (attribute)}}\\


 Here \mbox{\texttt{\mdseries\slshape G}} must be a soluble group and \mbox{\texttt{\mdseries\slshape H}} must be a subgroup of \mbox{\texttt{\mdseries\slshape G}}. If \mbox{\texttt{\mdseries\slshape H}} permutes with all system normalisers of \mbox{\texttt{\mdseries\slshape G}}, then this operation returns \texttt{fail}. Otherwise, it returns a system normaliser $D$ of $G$ such that $H$ does not permute with $D$. If the group \mbox{\texttt{\mdseries\slshape G}} is not soluble, then it gives an error. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=Group((1,2,3),(4,5,6),(1,2));|
  Group([ (1,2,3), (4,5,6), (1,2) ])
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2,3)(4,5,6)]);|
  Group([ (1,2,3)(4,5,6) ])
  !gapprompt@gap>| !gapinput@IsSNPermutable(g,a);|
  true
  !gapprompt@gap>| !gapinput@IsSPermutable(g,a);|
  false
\end{Verbatim}
 }

 

 The next functions are not particular cases of \texttt{IsFPermutable} (\ref{IsFPermutable}) or \texttt{OneFSubgroupNotPermutingWith} (\ref{OneFSubgroupNotPermutingWith}), but we include them in the package because every subgroup permuting with all
its conjugates is subnormal (see \cite{Foguel97}). 

 

\subsection{\textcolor{Chapter }{IsConjugatePermutable}}
\logpage{[ 3, 2, 10 ]}\nobreak
\hyperdef{L}{X7B2E052E7F9C4251}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsConjugatePermutable({\mdseries\slshape G, H})\index{IsConjugatePermutable@\texttt{IsConjugatePermutable}}
\label{IsConjugatePermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsConjugatePermutableInParent({\mdseries\slshape H})\index{IsConjugatePermutableInParent@\texttt{IsConjugatePermutableInParent}}
\label{IsConjugatePermutableInParent}
}\hfill{\scriptsize (property)}}\\


 This operation takes the value \texttt{true} if \mbox{\texttt{\mdseries\slshape H}} permutes with all its conjugates, and the value \texttt{false} otherwise. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[(1,2)(3,4)]);|
  Group([ (1,2)(3,4) ])
  !gapprompt@gap>| !gapinput@IsPermutable(g,a);|
  false
  !gapprompt@gap>| !gapinput@IsConjugatePermutable(g,a);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneConjugateSubgroupNotPermutingWith}}
\logpage{[ 3, 2, 11 ]}\nobreak
\hyperdef{L}{X809E1C8E8384ADE8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneConjugateSubgroupNotPermutingWith({\mdseries\slshape G, H})\index{OneConjugateSubgroupNotPermutingWith@\texttt{One}\-\texttt{Conjugate}\-\texttt{Subgroup}\-\texttt{Not}\-\texttt{Permuting}\-\texttt{With}}
\label{OneConjugateSubgroupNotPermutingWith}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneConjugateSubgroupNotPermutingWithInParent({\mdseries\slshape H})\index{OneConjugateSubgroupNotPermutingWithInParent@\texttt{One}\-\texttt{Conjugate}\-\texttt{Subgroup}\-\texttt{Not}\-\texttt{Permuting}\-\texttt{With}\-\texttt{In}\-\texttt{Parent}}
\label{OneConjugateSubgroupNotPermutingWithInParent}
}\hfill{\scriptsize (attribute)}}\\


 This operation finds a conjugate subgroup of \mbox{\texttt{\mdseries\slshape H}} which does not permute with \mbox{\texttt{\mdseries\slshape H}} if such a subgroup exists. If \mbox{\texttt{\mdseries\slshape H}} permutes with all its conjugates, then this operation returns \texttt{fail}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(16,7);|
  <pc group of size 16 with 4 generators>
  !gapprompt@gap>| !gapinput@h:=Subgroup(g,[g.1*g.4]);|
  Group([ f1*f4 ])
  !gapprompt@gap>| !gapinput@IsConjugatePermutable(g,h);|
  false
  !gapprompt@gap>| !gapinput@OneConjugateSubgroupNotPermutingWith(g,h);|
  Group([ f1*f3 ])
\end{Verbatim}
 }

 

 Next we introduce some subgroup embedding functions related to permutability
which have proved to be useful in some characterisations of soluble T-groups,
PT-groups, and PST-groups. The ``One'' functions return a value which proves that the corresponding subgroup
embedding property is false. 

 

\subsection{\textcolor{Chapter }{IsWeaklySPermutable}}
\logpage{[ 3, 2, 12 ]}\nobreak
\hyperdef{L}{X7AC58CFF87770C6C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklySPermutable({\mdseries\slshape G, H})\index{IsWeaklySPermutable@\texttt{IsWeaklySPermutable}}
\label{IsWeaklySPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklySPermutableInParent({\mdseries\slshape H})\index{IsWeaklySPermutableInParent@\texttt{IsWeaklySPermutableInParent}}
\label{IsWeaklySPermutableInParent}
}\hfill{\scriptsize (property)}}\\


 The value returned by this operation is \texttt{true} when \mbox{\texttt{\mdseries\slshape H}} is a \emph{weakly S-permutable} subgroup of \mbox{\texttt{\mdseries\slshape G}}, that is, $H$ is S-permutable in $\langle H, H^g \rangle$ implies that $H$ is S-permutable in $\langle H, g \rangle$, and \texttt{false} otherwise. }

 

\subsection{\textcolor{Chapter }{OneElementShowingNotWeaklySPermutable}}
\logpage{[ 3, 2, 13 ]}\nobreak
\hyperdef{L}{X870923B4798E5097}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklySPermutable({\mdseries\slshape G, H})\index{OneElementShowingNotWeaklySPermutable@\texttt{One}\-\texttt{Element}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Weakly}\-\texttt{S}\-\texttt{Permutable}}
\label{OneElementShowingNotWeaklySPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklySPermutableInParent({\mdseries\slshape H})\index{OneElementShowingNotWeaklySPermutableInParent@\texttt{One}\-\texttt{Element}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Weakly}\-\texttt{S}\-\texttt{Permutable}\-\texttt{In}\-\texttt{Parent}}
\label{OneElementShowingNotWeaklySPermutableInParent}
}\hfill{\scriptsize (attribute)}}\\


 If \mbox{\texttt{\mdseries\slshape H}} is a weakly S-permutable subgroup of \mbox{\texttt{\mdseries\slshape G}}, then this operation returns \texttt{fail}. Otherwise, the value returned by this operation is an element $g \in G$ such that \mbox{\texttt{\mdseries\slshape H}} is S-permutable in $\langle H, H^g \rangle$, but $H$ is not S-permutable in $\langle H, g \rangle$. A subgroup $H$ of a group $G$ is said to be weakly S-permutable if $H$ is S-permutable in $\langle H, H^g \rangle$ implies that $H$ is S-permutable in $\langle H, g \rangle$. }

 

\subsection{\textcolor{Chapter }{IsWeaklyPermutable}}
\logpage{[ 3, 2, 14 ]}\nobreak
\hyperdef{L}{X85E85FBF78DAB08E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklyPermutable({\mdseries\slshape G, H})\index{IsWeaklyPermutable@\texttt{IsWeaklyPermutable}}
\label{IsWeaklyPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklyPermutableInParent({\mdseries\slshape H})\index{IsWeaklyPermutableInParent@\texttt{IsWeaklyPermutableInParent}}
\label{IsWeaklyPermutableInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if \mbox{\texttt{\mdseries\slshape H}} is weakly permutable in \mbox{\texttt{\mdseries\slshape G}}, and \texttt{false} otherwise. A subgroup $H$ of $G$ is \emph{weakly permutable} if the fact that $H$ is S-permutable in $\langle H, H^g \rangle$, implies that $H$ is S-permutable in $\langle H, g \rangle$. }

 

\subsection{\textcolor{Chapter }{OneElementShowingNotWeaklyPermutable}}
\logpage{[ 3, 2, 15 ]}\nobreak
\hyperdef{L}{X8427C8DD78732D56}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklyPermutable({\mdseries\slshape G, H})\index{OneElementShowingNotWeaklyPermutable@\texttt{One}\-\texttt{Element}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Weakly}\-\texttt{Permutable}}
\label{OneElementShowingNotWeaklyPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklyPermutableInParent({\mdseries\slshape H})\index{OneElementShowingNotWeaklyPermutableInParent@\texttt{One}\-\texttt{Element}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Weakly}\-\texttt{Permutable}\-\texttt{In}\-\texttt{Parent}}
\label{OneElementShowingNotWeaklyPermutableInParent}
}\hfill{\scriptsize (attribute)}}\\


 If \mbox{\texttt{\mdseries\slshape H}} is a weakly permutable subgroup of \mbox{\texttt{\mdseries\slshape G}}, then this operation returns \texttt{fail}. Otherwise, the value returned by this operation is an element $g \in G$ such that \mbox{\texttt{\mdseries\slshape H}} is permutable in $\langle H, H^g \rangle$, but $H$ is not permutable in $\langle H, g \rangle$. A subgroup $H$ of a group $G$ is said to be \emph{weakly permutable} if the fact that $H$ is permutable in $\langle H, H^g \rangle$ implies that $H$ is permutable in $\langle H, g \rangle$. }

 

\subsection{\textcolor{Chapter }{IsWeaklyNormal}}
\logpage{[ 3, 2, 16 ]}\nobreak
\hyperdef{L}{X84BE89EF8140D2C0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklyNormal({\mdseries\slshape G, H})\index{IsWeaklyNormal@\texttt{IsWeaklyNormal}}
\label{IsWeaklyNormal}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWeaklyNormalInParent({\mdseries\slshape H})\index{IsWeaklyNormalInParent@\texttt{IsWeaklyNormalInParent}}
\label{IsWeaklyNormalInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if \mbox{\texttt{\mdseries\slshape H}} is weakly normal in \mbox{\texttt{\mdseries\slshape G}}, and \texttt{false} otherwise. A subgroup $H$ of $G$ is \emph{weakly normal} whenever if $H^g \leq {\rm N}_G(H)$, then $g \in {\rm N}_G(H)$. }

 

\subsection{\textcolor{Chapter }{OneElementShowingNotWeaklyNormal}}
\logpage{[ 3, 2, 17 ]}\nobreak
\hyperdef{L}{X82C8AE027E578ACF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklyNormal({\mdseries\slshape G, H})\index{OneElementShowingNotWeaklyNormal@\texttt{OneElementShowingNotWeaklyNormal}}
\label{OneElementShowingNotWeaklyNormal}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneElementShowingNotWeaklyNormalInParent({\mdseries\slshape H})\index{OneElementShowingNotWeaklyNormalInParent@\texttt{One}\-\texttt{Element}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Weakly}\-\texttt{Normal}\-\texttt{In}\-\texttt{Parent}}
\label{OneElementShowingNotWeaklyNormalInParent}
}\hfill{\scriptsize (attribute)}}\\


 If \mbox{\texttt{\mdseries\slshape H}} is a weakly normal subgruop of \mbox{\texttt{\mdseries\slshape G}}, then this function returns \texttt{fail}. Otherwise, the value returned by this operation is an element $g$ such that $H^g\leq {\rm N}_G(H)$ is a subgroup of ${\rm N}_G(H)$ but $g \notin{\rm N}_G(H)$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=DihedralGroup(8);|
  <pc group of size 8 with 3 generators>
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[g.1]);|
  Group([ f1 ])
  !gapprompt@gap>| !gapinput@IsWeaklySPermutable(g,a);|
  true
  !gapprompt@gap>| !gapinput@IsWeaklyPermutable(g,a);|
  false
  !gapprompt@gap>| !gapinput@x:=OneElementShowingNotWeaklyPermutable(g,a);|
  f2
  !gapprompt@gap>| !gapinput@IsSubgroup(Normalizer(g,a),ConjugateSubgroup(a,x));|
  true
  !gapprompt@gap>| !gapinput@x in Normalizer(g,a);|
  false
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsWithSubnormalizerCondition}}
\logpage{[ 3, 2, 18 ]}\nobreak
\hyperdef{L}{X872EA72A7CEC3E65}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubnormalizerCondition({\mdseries\slshape G, H})\index{IsWithSubnormalizerCondition@\texttt{IsWithSubnormalizerCondition}}
\label{IsWithSubnormalizerCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubnormalizerConditionInParent({\mdseries\slshape H})\index{IsWithSubnormalizerConditionInParent@\texttt{IsWith}\-\texttt{Subnormalizer}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSubnormalizerConditionInParent}
}\hfill{\scriptsize (property)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubnormaliserCondition({\mdseries\slshape G, H})\index{IsWithSubnormaliserCondition@\texttt{IsWithSubnormaliserCondition}}
\label{IsWithSubnormaliserCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubnormaliserConditionInParent({\mdseries\slshape H})\index{IsWithSubnormaliserConditionInParent@\texttt{IsWith}\-\texttt{Subnormaliser}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSubnormaliserConditionInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if the subgroup $H$ satisfies the subnormaliser condition in $G$, and \texttt{false} otherwise. 

 A subgroup $H$ is said to \emph{satisfy the subnormaliser condition} in $G$ if the condition that $H$ is subnormal in a subgroup $K$ of $G$ implies that $H$ is normal in{\nobreakspace}$K$. }

 

\subsection{\textcolor{Chapter }{OneSubgroupInWhichSubnormalNotNormal}}
\logpage{[ 3, 2, 19 ]}\nobreak
\hyperdef{L}{X7FBEC9DD7C8AED52}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotNormal({\mdseries\slshape G, H})\index{OneSubgroupInWhichSubnormalNotNormal@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{Normal}}
\label{OneSubgroupInWhichSubnormalNotNormal}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotNormalInParent({\mdseries\slshape H})\index{OneSubgroupInWhichSubnormalNotNormalInParent@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{Normal}\-\texttt{In}\-\texttt{Parent}}
\label{OneSubgroupInWhichSubnormalNotNormalInParent}
}\hfill{\scriptsize (attribute)}}\\


 This function returns a subgroup $K$ of $G$ such that $H$ is subnormal in $K$ and $H$ is not normal in{\nobreakspace}$K$, if this subgroup exists; otherwise, it returns \texttt{fail}. }

 

\subsection{\textcolor{Chapter }{IsWithSubpermutizerCondition}}
\logpage{[ 3, 2, 20 ]}\nobreak
\hyperdef{L}{X87CA542C7E1FEEF3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubpermutizerCondition({\mdseries\slshape G, H})\index{IsWithSubpermutizerCondition@\texttt{IsWithSubpermutizerCondition}}
\label{IsWithSubpermutizerCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubpermutizerConditionInParent({\mdseries\slshape H})\index{IsWithSubpermutizerConditionInParent@\texttt{IsWith}\-\texttt{Subpermutizer}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSubpermutizerConditionInParent}
}\hfill{\scriptsize (property)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubpermutiserCondition({\mdseries\slshape G, H})\index{IsWithSubpermutiserCondition@\texttt{IsWithSubpermutiserCondition}}
\label{IsWithSubpermutiserCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSubpermutiserConditionInParent({\mdseries\slshape H})\index{IsWithSubpermutiserConditionInParent@\texttt{IsWith}\-\texttt{Subpermutiser}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSubpermutiserConditionInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if the subgroup $H$ satisfies the subpermutiser condition in $G$, and \texttt{false} otherwise. 

 A subgroup $H$ is said to \emph{satisfy the subpermutiser condition} in $G$ if the condition that $H$ is subnormal in a subgroup $K$ of $G$ implies that $H$ is permutable in{\nobreakspace}$K$. }

 

\subsection{\textcolor{Chapter }{OneSubgroupInWhichSubnormalNotPermutable}}
\logpage{[ 3, 2, 21 ]}\nobreak
\hyperdef{L}{X79648B4F8758E187}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotPermutable({\mdseries\slshape G, H})\index{OneSubgroupInWhichSubnormalNotPermutable@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{Permutable}}
\label{OneSubgroupInWhichSubnormalNotPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotPermutableInParent({\mdseries\slshape H})\index{OneSubgroupInWhichSubnormalNotPermutableInParent@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{Permutable}\-\texttt{In}\-\texttt{Parent}}
\label{OneSubgroupInWhichSubnormalNotPermutableInParent}
}\hfill{\scriptsize (attribute)}}\\


 This function returns a subgroup $K$ of $G$ such that $H$ is subnormal in $K$ and $H$ is not permutable in{\nobreakspace}$K$ if this subgroup exists; otherwise it returns \texttt{fail}. }

 

\subsection{\textcolor{Chapter }{IsWithSSubpermutizerCondition}}
\logpage{[ 3, 2, 22 ]}\nobreak
\hyperdef{L}{X831F5B8787BB111F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSSubpermutizerCondition({\mdseries\slshape G, H})\index{IsWithSSubpermutizerCondition@\texttt{IsWithSSubpermutizerCondition}}
\label{IsWithSSubpermutizerCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSSubpermutizerConditionInParent({\mdseries\slshape H})\index{IsWithSSubpermutizerConditionInParent@\texttt{IsWith}\-\texttt{S}\-\texttt{Subpermutizer}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSSubpermutizerConditionInParent}
}\hfill{\scriptsize (property)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSSubpermutiserCondition({\mdseries\slshape G, H})\index{IsWithSSubpermutiserCondition@\texttt{IsWithSSubpermutiserCondition}}
\label{IsWithSSubpermutiserCondition}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsWithSSubpermutiserConditionInParent({\mdseries\slshape H})\index{IsWithSSubpermutiserConditionInParent@\texttt{IsWith}\-\texttt{S}\-\texttt{Subpermutiser}\-\texttt{Condition}\-\texttt{In}\-\texttt{Parent}}
\label{IsWithSSubpermutiserConditionInParent}
}\hfill{\scriptsize (property)}}\\


 This operation returns \texttt{true} if the subgroup $H$ satisfies the S-subpermutiser condition in $G$, and \texttt{false} otherwise. 

 A subgroup $H$ is said to \emph{satisfy the S-subpermutiser condition} in $G$ if the condition that $H$ is subnormal in a subgroup $K$ of $G$ implies that $H$ is S-permutable in{\nobreakspace}$K$. }

 

\subsection{\textcolor{Chapter }{OneSubgroupInWhichSubnormalNotSPermutable}}
\logpage{[ 3, 2, 23 ]}\nobreak
\hyperdef{L}{X7AC9002B7D5AB2DA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotSPermutable({\mdseries\slshape G, H})\index{OneSubgroupInWhichSubnormalNotSPermutable@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{S}\-\texttt{Permutable}}
\label{OneSubgroupInWhichSubnormalNotSPermutable}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubgroupInWhichSubnormalNotSPermutableInParent({\mdseries\slshape H})\index{OneSubgroupInWhichSubnormalNotSPermutableInParent@\texttt{One}\-\texttt{Subgroup}\-\texttt{In}\-\texttt{Which}\-\texttt{Subnormal}\-\texttt{Not}\-\texttt{S}\-\texttt{Permutable}\-\texttt{In}\-\texttt{Parent}}
\label{OneSubgroupInWhichSubnormalNotSPermutableInParent}
}\hfill{\scriptsize (attribute)}}\\


 This function returns a subgroup $K$ of $G$ such that $H$ is subnormal in $K$ and $H$ is not S-permutable in{\nobreakspace}$K$ if such a subgroup exists; otherwise it returns \texttt{fail}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(324,160);|
  <pc group of size 324 with 6 generators>
  !gapprompt@gap>| !gapinput@a:=Subgroup(g,[g.3,g.5]);|
  Group([ f3, f5 ])
  !gapprompt@gap>| !gapinput@IsWithSubnormalizerCondition(g,a);|
  true
  !gapprompt@gap>| !gapinput@IsWeaklyNormal(g,a);|
  false
  !gapprompt@gap>| !gapinput@IsWeaklySPermutable(g,a);|
  false
  !gapprompt@gap>| !gapinput@x:=OneElementShowingNotWeaklyNormal(g,a);|
  f1
  !gapprompt@gap>| !gapinput@ConjugateSubgroup(a,x)=a;|
  false
  !gapprompt@gap>| !gapinput@IsSubset(Normalizer(g,a),ConjugateSubgroup(a,x));|
  true
\end{Verbatim}
 }

 }

 }

 
\chapter{\textcolor{Chapter }{T-groups, PT-groups, and PST-groups}}\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X7E7EFDD1878F599D}{}
{
 This chapter explains the functions to check whether a given group is a
T-group, a PT-group, or a PST-group. 

 Recall that a group $G$ is: 
\begin{description}
\item[{a T-group}] when every subnormal subgroup of $G$ is normal,
\item[{a PT-group}] when every subnormal subgroup of $G$ is permutable,
\item[{a PST-group}]  when every subnormal subgroup of $G$ is S-permutable.
\end{description}
 

 We also present functions to identify groups in other classes related to these
ones. 

 The ``One'' functions are defined to provide examples of subgroups or elements showing
that a group theoretical property for a group or for a subgroup is false. 

 
\section{\textcolor{Chapter }{``One'' functions}}\label{permut-embedding-properties-one}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X86666B808617161E}{}
{
 

\subsection{\textcolor{Chapter }{OneSubnormalNonNormalSubgroup}}
\logpage{[ 4, 1, 1 ]}\nobreak
\hyperdef{L}{X7E15C5F778535A28}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubnormalNonNormalSubgroup({\mdseries\slshape G})\index{OneSubnormalNonNormalSubgroup@\texttt{OneSubnormalNonNormalSubgroup}}
\label{OneSubnormalNonNormalSubgroup}
}\hfill{\scriptsize (attribute)}}\\


 \texttt{OneSubnormalNonNormalSubgroup} returns a subnormal subgroup of defect{\nobreakspace}$2$ which is not normal in the group \mbox{\texttt{\mdseries\slshape G}}, if such a subgroup exists. If such a subgroup does not exist because the
group is a T-group, it returns \texttt{fail}. 

 A T-group is a group in which normality is transitive, that is, if $H$ is a normal subgroup of $K$ and $K$ is a normal subgroup of $G$, then $H$ is a normal subgroup of{\nobreakspace}$G$. Finite T-groups are the groups in which every subnormal subgroup is normal. 

 This function tries to set the property \texttt{IsTGroup} (\ref{IsTGroup}) to \texttt{true} or \texttt{false} according to its result. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(320,152);|
  <pc group of size 320 with 7 generators>
  !gapprompt@gap>| !gapinput@x:=OneSubnormalNonNormalSubgroup(g);|
  Group([ f2, f3, f5, f7 ])
  !gapprompt@gap>| !gapinput@IsNormal(g,x);|
  false
  !gapprompt@gap>| !gapinput@IsSubnormal(g,x);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneSubnormalNonPermutableSubgroup}}
\logpage{[ 4, 1, 2 ]}\nobreak
\hyperdef{L}{X7F5EE21F85A8D14F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubnormalNonPermutableSubgroup({\mdseries\slshape G})\index{OneSubnormalNonPermutableSubgroup@\texttt{OneSubnormalNonPermutableSubgroup}}
\label{OneSubnormalNonPermutableSubgroup}
}\hfill{\scriptsize (attribute)}}\\


 \texttt{OneSubnormalNonPermutableSubgroup} returns a subnormal subgroup which is not permutable in the group \mbox{\texttt{\mdseries\slshape G}}, if such a subgroup exists. If such a subgroup does not exist because the
group is a PT-group, it returns \texttt{fail}. 

 A group $G$ is a PT-group when permutability is a transitive relation in $G$, that is, if $H$ is a permutable subgroup of $K$ and $K$ is a permutable subgroup of $G$, then $H$ is a permutable subgroupof{\nobreakspace}$G$. This is equivalent in finite groups to affirming that every subnormal
subgroup of $G$ is permutable. 

 This function tries to set the property \texttt{IsPTGroup} (\ref{IsPTGroup}) to \texttt{true} or \texttt{false} according to its result. 

 Since this function checks all subnormal subgroups for permutability, it may
take a long time if there are many subnormal subgroups. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(320,152);|
  <pc group of size 320 with 7 generators>
  !gapprompt@gap>| !gapinput@OneSubnormalNonPermutableSubgroup(g);|
  fail
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@g:=SmallGroup(8,3);|
  <pc group of size 8 with 3 generators>
  !gapprompt@gap>| !gapinput@OneSubnormalNonPermutableSubgroup(g);|
  Group([ f1*f3 ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneSubnormalNonSPermutableSubgroup}}
\logpage{[ 4, 1, 3 ]}\nobreak
\hyperdef{L}{X7D7717657B9C7BEB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubnormalNonSPermutableSubgroup({\mdseries\slshape G})\index{OneSubnormalNonSPermutableSubgroup@\texttt{OneSubnormalNonSPermutableSubgroup}}
\label{OneSubnormalNonSPermutableSubgroup}
}\hfill{\scriptsize (attribute)}}\\


 \texttt{OneSubnormalNonSPermutableSubgroup} returns a subnormal subgroup of defect{\nobreakspace}$2$ which is not S-permutable in \mbox{\texttt{\mdseries\slshape G}}, if such a subgroup exists. If such a subgroup does not exist because the
group is a PST-group, it returns \texttt{fail}. 

 A group $G$ is a PST-group when S-permutability (Sylow permutability) is a transitive
relation in $G$, that is, if $H$ is an S-permutable subgroup of $K$ and $K$ is an S-permutable subgroup of $G$, then $H$ is an S-permutable subgroup of{\nobreakspace}$G$. This is equivalent in finite groups to affirming that every subnormal
subgroup of $G$ is S-permutable. By a result of Ballester-Bolinches, Esteban-Romero, and
Ragland \cite{BallesterEstebanRagland07}, it is enough to check this last condition for all subnormal subgroups of
defect{\nobreakspace}$2$. 

 This function tries to set the property \texttt{IsPSTGroup} (\ref{IsPSTGroup}) to \texttt{true} or \texttt{false} according to its result. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=AlternatingGroup(4);|
  Alt( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@OneSubnormalNonSPermutableSubgroup(g);|
  Group([ (1,2)(3,4) ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneSubnormalNonConjugatePermutableSubgroup}}
\logpage{[ 4, 1, 4 ]}\nobreak
\hyperdef{L}{X7878496C869CB90C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubnormalNonConjugatePermutableSubgroup({\mdseries\slshape G})\index{OneSubnormalNonConjugatePermutableSubgroup@\texttt{One}\-\texttt{Subnormal}\-\texttt{Non}\-\texttt{Conjugate}\-\texttt{Permutable}\-\texttt{Subgroup}}
\label{OneSubnormalNonConjugatePermutableSubgroup}
}\hfill{\scriptsize (attribute)}}\\


 This function finds a subnormal subgroup $H$ which does not permute with all its conjugates, if such a subgroup exist;
otherwise, it returns \texttt{fail}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=AlternatingGroup(4);|
  Alt( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@OneSubnormalNonConjugatePermutableSubgroup(g);|
  fail
  !gapprompt@gap>| !gapinput@g:=DihedralGroup(16);|
  <pc group of size 16 with 4 generators>
  !gapprompt@gap>| !gapinput@OneSubnormalNonConjugatePermutableSubgroup(g);|
  Group([ f1*f4 ])
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@OneSubnormalNonConjugatePermutableSubgroup(g);|
  fail
  !gapprompt@gap>| !gapinput@OneSubnormalNonPermutableSubgroup(g);|
  Group([ (1,2)(3,4) ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OneSubnormalNonSNPermutableSubgroup}}
\logpage{[ 4, 1, 5 ]}\nobreak
\hyperdef{L}{X7B23E3857CA178FE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OneSubnormalNonSNPermutableSubgroup({\mdseries\slshape G})\index{OneSubnormalNonSNPermutableSubgroup@\texttt{OneSubnormalNonSNPermutableSubgroup}}
\label{OneSubnormalNonSNPermutableSubgroup}
}\hfill{\scriptsize (attribute)}}\\


 This attribute returns a subnormal subgroup $H$ of the soluble group $G$ such that $H$ does not permute with a system normaliser if such a subgroup exists;
otherwise, it returns \texttt{fail}. This system normaliser is obtained with the function \texttt{SystemNormalizer} (\textbf{FORMAT: SystemNormalizer}) of the \textsf{Format} package. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@OneSubnormalNonSNPermutableSubgroup(g);|
  Group([ (1,3)(2,4) ])
  !gapprompt@gap>| !gapinput@g:=Group((1,2,3)(4,5,6),(1,2));|
  Group([ (1,2,3)(4,5,6), (1,2) ])
  !gapprompt@gap>| !gapinput@OneSubnormalNonSNPermutableSubgroup(g);|
  fail
  !gapprompt@gap>| !gapinput@OneSubnormalNonSPermutableSubgroup(g); |
  Group([ (1,2,3)(4,6,5) ])
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Group properties related to permutability}}\label{T-properties}
\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X7B13DA0A800D8635}{}
{
 The next function names correspond to properties. 

 

\subsection{\textcolor{Chapter }{IsTGroup}}
\logpage{[ 4, 2, 1 ]}\nobreak
\hyperdef{L}{X7930E5AD817BE4B3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsTGroup({\mdseries\slshape G})\index{IsTGroup@\texttt{IsTGroup}}
\label{IsTGroup}
}\hfill{\scriptsize (property)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} is a T-group, and \texttt{false} otherwise. 

 T-groups are the groups in which normality is a transitive relation, that is,
if $H$ is a subgroup of $K$ and $K$ is a subgroup of $G$, then $H$ is a subgroup of{\nobreakspace}$G$. In the finite case, they are the groups in which every subnormal subgroup is
normal. 

 For soluble groups, the algorithm checks that for every prime $p$ dividing its order, $G$ is $p$-nilpotent and has a Dedekind Sylow $p$-subgroup or $G$ has an abelian Sylow $p$-subgroup $P$ and every subgroup of $P$ is normal in ${\rm N}_G(P)$. 

 For insoluble groups, the function checks whether the group is an SC-group
with the function \texttt{IsSCGroup} (\ref{IsSCGroup}), because PT-groups are SC-groups. Since the methods for insoluble groups
depend on the computation of a chief series with the function \texttt{ChiefSeries} (\textbf{Reference: ChiefSeries}), they might not be available if the group is not given as a permutation
group. Then it is checked that every subnormal subgroup of
defect{\nobreakspace}$2$ is normal with the help of the function \texttt{OneSubnormalNonNormalSubgroup} (\ref{OneSubnormalNonNormalSubgroup}). The methods based on the ideas of \cite{BallesterBeidlemanHeineken03-illinois}, \cite{BallesterBeidlemanHeineken03-commalg}, and \cite{BeidlemanHeineken03-jgt} have not been implemented so far because they require the computation of
quotients by all normal subgroups, which could be a time-consuming task. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(40,4);|
  <pc group of size 40 with 4 generators>
  !gapprompt@gap>| !gapinput@IsTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(3);|
  Sym( [ 1 .. 3 ] )
  !gapprompt@gap>| !gapinput@IsTGroup(g);|
  true
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{IsPTGroup}}
\logpage{[ 4, 2, 2 ]}\nobreak
\hyperdef{L}{X7CF2634F84EC572B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPTGroup({\mdseries\slshape G})\index{IsPTGroup@\texttt{IsPTGroup}}
\label{IsPTGroup}
}\hfill{\scriptsize (property)}}\\


 This property takes the value \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} is a PT-group, and the value \texttt{false} otherwise. 

 For a soluble group $G$, the function checks whether for all primes $p$, $G$ is $p$-nilpotent and has an Iwasawa Sylow $p$-subgroup or $G$ has an abelian Sylow $p$-subgroup and it satisfies the property ${\cal C}_p$ (that is, every subgroup of a Sylow $p$-subgroup $P$ of $G$ is normal in the Sylow normaliser ${\rm N}_G(P)$). 

 For insoluble groups, the function checks that the group is an SC-group with
the function \texttt{IsSCGroup} (\ref{IsSCGroup}), because PT-groups are SC-groups. Since the methods for insoluble groups
depend on the computation of a chief series with the function \texttt{ChiefSeries} (\textbf{Reference: ChiefSeries}), they might not be available if the group is not given as a permutation
group. Then it uses the function \texttt{OneSubnormalNonPermutableSubgroup} (\ref{OneSubnormalNonPermutableSubgroup}) to check whether or not every subnormal subgroup is permutable. The methods
based on the ideas of \cite{BallesterBeidlemanHeineken03-illinois}, \cite{BallesterBeidlemanHeineken03-commalg}, and \cite{BeidlemanHeineken03-jgt} have not been implemented so far because they require the computation of
quotients by all normal subgroups, which could be a time-consuming task. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(1323,37);|
  <pc group of size 1323 with 5 generators>
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@OneSubnormalNonNormalSubgroup(g);|
  Group([ f2*f3, f4, f5 ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsPSTGroup}}
\logpage{[ 4, 2, 3 ]}\nobreak
\hyperdef{L}{X7BB4D5A782FF5B0E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPSTGroup({\mdseries\slshape G})\index{IsPSTGroup@\texttt{IsPSTGroup}}
\label{IsPSTGroup}
}\hfill{\scriptsize (property)}}\\


 This function returns true if the group \mbox{\texttt{\mdseries\slshape G}} is a PST-group, and false otherwise. 

 A finite group $G$ is a PST-group if S-permutability (Sylow-permutability) is a transitive
relation in $G$, that is, if $H$ is S-permutable in $K$ and $K$ is S-permutable in $G$, then $H$ is S-permutable in{\nobreakspace}$G$. This is equivalent to affirming that every subnormal subgroup of $G$ is S-permutable in{\nobreakspace}$G$. 

 For a soluble group $G$, the function checks whether for all primes $p$, $G$ is $p$-nilpotent, or $G$ has an abelian Sylow $p$-subgroup and $G$ satisfies the property ${\cal C}_p$ (that is, every subgroup of a Sylow $p$-subgroup $P$ of $G$ is normal in the Sylow normaliser ${\rm N}_G(P)$) 

 For insoluble groups, the function checks whether the group is an SC-group
with the function \texttt{IsSCGroup} (\ref{IsSCGroup}), because PST-groups are SC-groups. Since the methods for insoluble groups
depend on the computation of a chief series with the function \texttt{ChiefSeries} (\textbf{Reference: ChiefSeries}), they might not be available if the group is not given as a permutation
group. Then it uses the function \texttt{OneSubnormalNonSPermutableSubgroup} (\ref{OneSubnormalNonSPermutableSubgroup}) to check whether or not every subnormal subgroup of defect{\nobreakspace}$2$ is S-permutable. The methods based on the ideas of \cite{BallesterBeidlemanHeineken03-illinois}, \cite{BallesterBeidlemanHeineken03-commalg}, and \cite{BeidlemanHeineken03-jgt} have not been implemented so far because they require the computation of
quotients by all normal subgroups, which could be a time-consuming task. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(24,6);|
  <pc group of size 24 with 4 generators>
  !gapprompt@gap>| !gapinput@IsPSTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@OneSubnormalNonPermutableSubgroup(g);|
  Group([ f1*f3, f4 ])
  !gapprompt@gap>| !gapinput@g:=SmallGroup(24,6);|
  <pc group of size 24 with 4 generators>
  !gapprompt@gap>| !gapinput@IsPSTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@OneSubnormalNonPermutableSubgroup(g);|
  Group([ f1*f3, f4 ])
  !gapprompt@gap>| !gapinput@OneSubgroupNotPermutingWith(g,last);|
  Group([ f1*f2 ])
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsCPTGroup}}
\logpage{[ 4, 2, 4 ]}\nobreak
\hyperdef{L}{X8789176282320022}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsCPTGroup({\mdseries\slshape G})\index{IsCPTGroup@\texttt{IsCPTGroup}}
\label{IsCPTGroup}
}\hfill{\scriptsize (property)}}\\


 This property returns true if every subnormal subgroup of \mbox{\texttt{\mdseries\slshape G}} permutes with all its conjugates, and false otherwise. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@IsCPTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@IsPSTGroup(g);|
  false
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsPSNTGroup}}
\logpage{[ 4, 2, 5 ]}\nobreak
\hyperdef{L}{X7B9EBEA07DBE246F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPSNTGroup({\mdseries\slshape G})\index{IsPSNTGroup@\texttt{IsPSNTGroup}}
\label{IsPSNTGroup}
}\hfill{\scriptsize (property)}}\\


 This property takes the value \texttt{true} if every subnormal subgroup of the soluble group $G$ permutes with every system normaliser of $G$, and \texttt{false} otherwise. If the function is applied to an insoluble group, it gives an
error. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=Group((1,2,3)(4,5,6),(1,3));|
  Group([ (1,2,3)(4,5,6), (1,3) ])
  !gapprompt@gap>| !gapinput@IsPSTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@IsPSNTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsCPTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@g:=SmallGroup(16,7);|
  <pc group of size 16 with 4 generators>
  !gapprompt@gap>| !gapinput@IsPSTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsCPTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@IsPSNTGroup(g);|
  false
  !gapprompt@gap>| !gapinput@IsCPTGroup(g);|
  true
\end{Verbatim}
 }

 }

 }

 
\chapter{\textcolor{Chapter }{Local Functions in the \textsf{PERMUT} Package}}\logpage{[ 5, 0, 0 ]}
\hyperdef{L}{X8785816E84A9751E}{}
{
 In the study of permutability, the usage of local characterisations has become
a useful tool to describe the classes of T-groups, PT-groups, and PST-groups.
In this chapter we present some local characterisations of these classes and
some functions which allow to check whether or not a group given in \textsf{GAP} satisfies these conditions. 

 A \emph{local} description of group-theoretical property consists of expressing it as the
conjunction of some properties depending on a prime $p$, usually related to the behaviour of $p$-elements, $p$-subgroups, or $p$-chief factors, for all primes $p$. 

 
\section{\textcolor{Chapter }{A Local Function for Supersolubility}}\label{solvable}
\logpage{[ 5, 1, 0 ]}
\hyperdef{L}{X7E8389FD7DE9769C}{}
{
 The \textsf{GAP} library does not contain methods to check whether a group $G$ is $p$-supersoluble, where $p$ is a prime number. We include such a function in the \textsf{PERMUT} package. 

\subsection{\textcolor{Chapter }{IsPSupersolvable}}
\logpage{[ 5, 1, 1 ]}\nobreak
\hyperdef{L}{X7B9F19A37F4A5B35}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPSupersolvable({\mdseries\slshape G, p})\index{IsPSupersolvable@\texttt{IsPSupersolvable}}
\label{IsPSupersolvable}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsPSupersoluble({\mdseries\slshape G, p})\index{IsPSupersoluble@\texttt{IsPSupersoluble}}
\label{IsPSupersoluble}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the group \mbox{\texttt{\mdseries\slshape G}} is $p$-supersoluble, and \texttt{false} otherwise, where \mbox{\texttt{\mdseries\slshape p}} is a prime number. This function is not defined in \textsf{GAP}. The method we have implemented for finite groups includes checking whether
the group is supersoluble (in this case, it must return \texttt{true}). If the group is not soluble, it computes a chief series and checks whether
all chief factors have order $p$ or have order not divisible by{\nobreakspace}$p$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=Group((1,2,3,4,5,6,7), (8,9,10,11,12,13,14), (15,16,17,18,19,20,21),|
  !gapprompt@>| !gapinput@(22,23,24,25,26,27,28), (29,30,31,32,33,34,35),|
  !gapprompt@>| !gapinput@(1,8,15,22,29)(2,9,16,23,30)(3,10,17,24,31)(4,11,18,25,32)(5,12,19,26,|
  !gapprompt@>| !gapinput@    33)(6,13,20,27,34)(7,14,21,28,35),|
  !gapprompt@>| !gapinput@(1,8)(2,9)(3,10)(4,11)(5,12)(6,13)(7,14)); #C7 wr S5|
  <permutation group with 7 generators>
  !gapprompt@gap>| !gapinput@IsPSupersolvable(g,7);|
  false
  !gapprompt@gap>| !gapinput@IsPSupersolvable(g,11);|
  true
\end{Verbatim}
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=DirectProduct(PSL(2,7),|
  !gapprompt@>| !gapinput@    Group((1,2,3,4,5,6,7,8,9,10,11), (2,5,6,10,4)(3,9,11,8,7)));|
  Group([ (3,7,5)(4,8,6), (1,2,6)(3,4,8), (9,10,11,12,13,14,15,16,17,18,19),
    (10,13,14,18,12)(11,17,19,16,15) ])
  !gapprompt@gap>| !gapinput@IsPNilpotent(g,5);|
  true
  !gapprompt@gap>| !gapinput@IsPNilpotent(g,11);|
  false
  !gapprompt@gap>| !gapinput@IsPSupersolvable(g,11);|
  true
  !gapprompt@gap>| !gapinput@IsPNilpotent(g,3);|
  false
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Local functions for T-groups, PT-groups, and PST-groups}}\label{local-T-groups}
\logpage{[ 5, 2, 0 ]}
\hyperdef{L}{X7C4B2A9A7F2D7E0B}{}
{
 The following functions correspond to local description of the classes of
soluble T-groups, PT-groups, and PST-groups. Most of the known useful local
characterisations of these classes of groups can be seen to be equivalent to
one of them, either in the universe or all finite groups or in the universe of
all finite $p$-soluble groups. By a local characterisation of a group-theoretical property ${\cal R}$ we mean a group-theoretical property ${\cal R}_p$ for each prime $p$ such that a group satisfies ${\cal R}$ if and only if it satisfies ${\cal R}_p$ for all primes $p$. 

\subsection{\textcolor{Chapter }{IsCp}}
\logpage{[ 5, 2, 1 ]}\nobreak
\hyperdef{L}{X780657F179FFB7EE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsCp({\mdseries\slshape G, p})\index{IsCp@\texttt{IsCp}}
\label{IsCp}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the group \mbox{\texttt{\mdseries\slshape G}} satisfies the property ${\cal C}_p$, where $p$ is a prime number, and \texttt{false} otherwise. 

 A group $G$ satisfies ${\cal C}_p$ when every subgroup $H$ of a Sylow $p$-subgroup $P$ of $G$ is normal in the corresponding Sylow normaliser ${\rm N}_G(P)$. This property was introduced by Robinson in \cite{Robinson68}. A group $G$ is a soluble PST-group if and only if it satisfies ${\cal C}_p$ for all primes $p$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=AlternatingGroup(5);|
  Alt( [ 1 .. 5 ] )
  !gapprompt@gap>| !gapinput@IsCp(g,3);|
  true
  !gapprompt@gap>| !gapinput@IsCp(g,5);|
  true
  !gapprompt@gap>| !gapinput@IsCp(g,7);|
  true
  !gapprompt@gap>| !gapinput@IsCp(g,2);|
  false
  !gapprompt@gap>| !gapinput@g:=SmallGroup(200,44); # semidirect product of Q8 with C5xC5|
  <pc group of size 200 with 5 generators>
  !gapprompt@gap>| !gapinput@IsCp(g,5);|
  false
  !gapprompt@gap>| !gapinput@IsCp(g,2);|
  true
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{IsXp}}
\logpage{[ 5, 2, 2 ]}\nobreak
\hyperdef{L}{X82953B4878F88327}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsXp({\mdseries\slshape G, p})\index{IsXp@\texttt{IsXp}}
\label{IsXp}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} satisfies ${\cal X}_p$, where $p$ is a prime, and \texttt{false} otherwise. 

 A group $G$ satisfies ${\cal X}_p$ when for every subgroup $H$ of a Sylow $p$-subgroup $P$ of $G$, $H$ is permutable in ${\rm N}_G(P)$. This property was introduced by Beidleman, Brewster, and Robinson in \cite{BeidlemanBrewsterRobinson99}. A group $G$ is a soluble PT-group if and only if $G$ satisfies ${\cal X}_p$ for all primes $p$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(189,7);|
  <pc group of size 189 with 4 generators>
  !gapprompt@gap>| !gapinput@IsXp(g,3);|
  true
  !gapprompt@gap>| !gapinput@IsXp(g,7);|
  true
  !gapprompt@gap>| !gapinput@IsPTGroup(g);|
  true
  !gapprompt@gap>| !gapinput@IsCp(g,3);|
  false
  !gapprompt@gap>| !gapinput@IsTGroup(g);|
  false
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsYp}}
\logpage{[ 5, 2, 3 ]}\nobreak
\hyperdef{L}{X8304885C78E4A584}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsYp({\mdseries\slshape G, p})\index{IsYp@\texttt{IsYp}}
\label{IsYp}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} satisfies ${\cal Y}_p$, where $p$ is a prime, and \texttt{false} otherwise. 

 A group $G$ satisfies ${\cal X}_p$ when for every two subgroups $H$ and $K$ with $H\leq K$, $H$ is S-permutable in ${\rm N}_G(P)$. This property was introduced by Ballester-Bolinches and Esteban-Romero in \cite{BallesterEsteban02-sylper1}. A group $G$ is a soluble PST-group if and only if $G$ satisfies ${\cal Y}_p$ for all primes $p$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SmallGroup(200,43); # semidirect product of D8 with C5xC5|
  <pc group of size 200 with 5 generators>
  !gapprompt@gap>| !gapinput@IsCp(g,2);|
  false
  !gapprompt@gap>| !gapinput@IsXp(g,2);|
  false
  !gapprompt@gap>| !gapinput@IsYp(g,2);|
  true
  !gapprompt@gap>| !gapinput@g:=Group((1,2,3)(4,5,6),(1,2));|
  Group([ (1,2,3)(4,5,6), (1,2) ])
  !gapprompt@gap>| !gapinput@IsYp(g,3);|
  false
  !gapprompt@gap>| !gapinput@IsYp(g,2);|
  true
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Auxiliary Functions for T-groups, PT-groups, and PST-groups}}\label{aux-local}
\logpage{[ 5, 3, 0 ]}
\hyperdef{L}{X8540D4B679519F8B}{}
{
 The following functions are used to check whether or not a group is a soluble
T-group, PT-group, or PST-group. 

 

\subsection{\textcolor{Chapter }{IsAbCp}}
\logpage{[ 5, 3, 1 ]}\nobreak
\hyperdef{L}{X8775CAFD80D3FC02}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsAbCp({\mdseries\slshape G, p})\index{IsAbCp@\texttt{IsAbCp}}
\label{IsAbCp}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} has an abelian Sylow \mbox{\texttt{\mdseries\slshape p}}-subgroup \mbox{\texttt{\mdseries\slshape p}} such that every subgroup of $P$ is normal in the Sylow normaliser ${\rm N}_G(P)$, and \texttt{false} otherwise. 

 This function is used to characterise soluble PST-groups: a group $G$ is a soluble PST-group if and only if $G$ satisfies ${\cal Y}_p$ for all primes $p$, and a group $G$ satisfies ${\cal Y}_p$ if and only if $G$ is $p$-nilpotent or $G$ has an abelian Sylow $p$-subgroup and satisfies ${\cal C}_p$. A group $G$ satisfies ${\cal C}_p$ if and only if every subgroup of a Sylow $p$-subgroup $P$ of $G$ is normal in the Sylow normaliser ${\rm N}_G(P)$. Therefore this function checks whether $G$ has an abelian Sylow $p$-subgroup and $G$ satisfies ${\cal C}_p$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=AlternatingGroup(5);|
  Alt( [ 1 .. 5 ] )
  !gapprompt@gap>| !gapinput@IsAbCp(g,5);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsDedekindSylow}}
\logpage{[ 5, 3, 2 ]}\nobreak
\hyperdef{L}{X7A6372D3871E8E55}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsDedekindSylow({\mdseries\slshape G, p})\index{IsDedekindSylow@\texttt{IsDedekindSylow}}
\label{IsDedekindSylow}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if a Sylow \mbox{\texttt{\mdseries\slshape p}}-subgroup of \mbox{\texttt{\mdseries\slshape G}} is Dedekind, else it returns \texttt{false}. 

 A group $G$ is Dedekind when every subgroup of $G$ is normal. If $p$ is a prime, a Dedekind $p$-group (see for example 2.3.12 in \cite{Schmidt94}) is abelian or a direct product of a quaternion group of order $8$ and an elementary abelian $2$-group. Obviously, a $p$-group is Dedekind if and only if it is a T-group. 

 The algorithm used in this function to test whether a non-abelian $2$-group satisfies this condition checks that the Frattini subgroup of a Sylow $2$-subgroup $P$ of $G$ has order $2$ and that the centre of $P$ has exponent $2$ and index $4$. In this case, it computes the natural epimorphism from $P$ to $P/{\rm Z}(P)$ and it checks that the preimages of the generators of $P/{\rm Z}(P)$ under the natural epimorphism have order $4$. If all these conditions hold, then the Sylow $2$-subgroup is Dedekind, otherwise it is not. 

 This function tries to set the property \texttt{IsTGroup} (\ref{IsTGroup}) to \texttt{true} or \texttt{false} for the Sylow $p$-subgroup. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=DirectProduct(SmallGroup(8,4),CyclicGroup(5));|
  <pc group of size 40 with 4 generators>
  !gapprompt@gap>| !gapinput@IsDedekindSylow(g,2);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IwasawaTripleWithSubgroup}}
\logpage{[ 5, 3, 3 ]}\nobreak
\hyperdef{L}{X812C3A017F534CC0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IwasawaTripleWithSubgroup({\mdseries\slshape G, X, p})\index{IwasawaTripleWithSubgroup@\texttt{IwasawaTripleWithSubgroup}}
\label{IwasawaTripleWithSubgroup}
}\hfill{\scriptsize (function)}}\\


 This function returns an Iwasawa triple for a \mbox{\texttt{\mdseries\slshape p}}-group \mbox{\texttt{\mdseries\slshape G}} such that \mbox{\texttt{\mdseries\slshape X}} is a member of it, if such a triple exists, and \texttt{fail} otherwise. This function is used as an auxiliary function to compute an
Iwasawa triple for a group \mbox{\texttt{\mdseries\slshape G}}. 

 An Iwasawa triple for a $p$-group $G$ is a triple $(X,b,s)$ such that $X$ is an abelian normal subgroup of $G$ with cyclic quotient, $b$ is a generator of a supplement to $X$ in $G$, and $b$ induces a power automorphism in $X$ of the form $x\to x^{1+p^s}$. A theorem of Iwasawa states that a $p$-group $G$ has a modular subgroup lattice (or, equivalently, $G$ has all subgroups permutable) if and only if $G$ is a direct product of a quaternion group of order{\nobreakspace}$8$ and an elementary abelian $2$-group or $G$ has an Iwasawa triple $(X,b,s)$ with $s \geq 2$. 

 The construction of the Iwasawa triple takes a generator $b$ of a cyclic supplement to $X$ in{\nobreakspace}$G$. Then we consider a generator $a$ of $X$ of the largest possible order and find an element $c$ of $\langle b \rangle$ and an element $s$ such that $a^c = a^{1+p^s}$. If such an element does not exist, the function returns \texttt{fail}. For this element, it checks whether for all generators $t$ of $X$, the equality $t^c = t^{1+p^s}$ holds. If this holds, it returns the triple $(X, c, s)$; otherwise it returns \texttt{fail}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@e:=ExtraspecialGroup(27,9);|
  <pc group of size 27 with 3 generators>
  !gapprompt@gap>| !gapinput@IwasawaTripleWithSubgroup(e,Subgroup(e,[e.1,e.3]),3);|
  [ Group([ f1, f3 ]), f2, 1 ]
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{IwasawaTriple}}
\logpage{[ 5, 3, 4 ]}\nobreak
\hyperdef{L}{X7E86B21086879C48}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IwasawaTriple({\mdseries\slshape G})\index{IwasawaTriple@\texttt{IwasawaTriple}}
\label{IwasawaTriple}
}\hfill{\scriptsize (attribute)}}\\


 This function computes an Iwasawa triple for the $p$-group \mbox{\texttt{\mdseries\slshape G}}, if it exists. If \mbox{\texttt{\mdseries\slshape G}} is not Iwasawa, the function returns \texttt{fail}. If \mbox{\texttt{\mdseries\slshape G}} is a direct product of an elementary abelian $2$-group and a quaternion group of order{\nobreakspace}$8$, it returns an empty list. If \mbox{\texttt{\mdseries\slshape G}} is Iwasawa, then the function returns an Iwasawa triple for \mbox{\texttt{\mdseries\slshape G}}. An Iwasawa triple for a group \mbox{\texttt{\mdseries\slshape G}} is a triple $(X, b, s)$ where $X$ is an abelian normal subgroup of $G$ such that $G/X$ is cyclic, $b$ is a generator of a cyclic supplement to $X$ in $G$, and $s$ is an integer such that for all $x \in X$, $x^b = x^{1+p^s}$. A theorem of Iwasawa states that a $p$-group $G$ has a modular subgroup lattice (or, equivalently, $G$ has all subgroups permutable) if and only if $G$ is a direct product of an elementary abelian $2$-group and a quaternion group of order{\nobreakspace}$8$ or $G$ has an Iwasawa triple $(X,b,s)$ with $s \geq 2$ if $p = 2$. 

 The method followed to find an Iwasawa triple for non-abelian non-Dedekind
groups begins with the whole group $G$. If the group is abelian, it returns the Iwasawa triple $(G,1,\log_p\exp(G))$. If it is not abelian, it constructs a list $l$ formed by{\nobreakspace}$G$. For every element $N$ of $l$, it takes the maximal subgroups of $N$ which are normal in $G$ and give cyclic quotient. If any of these subgroups is a member of an Iwasawa
triple, it is computed with the function \texttt{IwasawaTripleWithSubgroup} (\ref{IwasawaTripleWithSubgroup}) and the value is returned. If not, $N$ is removed from the $l$ and these maximal subgroups of $N$ are added to $l$. This follows until an Iwasawa triple is found or the list $l$ is empty. Since normal subgroups with cyclic quotient are contained in a
unique maximal chain, no subgroup appears twice in this algorithm. 

 The algorithm also takes into account the fact that a Iwasawa group of
exponent{\nobreakspace}$4$ must be abelian or a direct product of a quaternion group of
order{\nobreakspace}$8$ and an elementary abelian $2$-group. 

 For the trivial group, it returns the triple composed by the trivial group,
its identity element, and the prime{\nobreakspace}$3$. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@e:=ExtraspecialGroup(27,3);|
  <pc group of size 27 with 3 generators>
  !gapprompt@gap>| !gapinput@IwasawaTriple(e);|
  fail
  !gapprompt@gap>| !gapinput@e:=ExtraspecialGroup(27,9);|
  <pc group of size 27 with 3 generators>
  !gapprompt@gap>| !gapinput@IwasawaTriple(e);|
  [ Group([ f1, f3 ]), f2, 1 ]
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsIwasawaSylow}}
\logpage{[ 5, 3, 5 ]}\nobreak
\hyperdef{L}{X8121A92F7EABEA0C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsIwasawaSylow({\mdseries\slshape G, p})\index{IsIwasawaSylow@\texttt{IsIwasawaSylow}}
\label{IsIwasawaSylow}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} has an Iwasawa (modular) Sylow \mbox{\texttt{\mdseries\slshape p}}-subgroup, and \texttt{false} otherwise. 

 Recall that a $p$-group $P$ has a modular subgroup lattice, or is an Iwasawa group, when all subgroups of $P$ are permutable. It is clear that a $p$-group has a modular subgroup lattice if and only if it is a T-group. 

 The implementation of this function begins by searching for a pair of
subgroups that do not permute. In this case, the function returns \texttt{false}. The maximum number of pairs to be checked here is controlled by the variable \texttt{PermutMaxTries} (\ref{PermutMaxTries}), which is assigned to $10$ by default. If no such pair is found, the algorithm looks for an Iwasawa
triple for a Sylow $p$-subgroup $P$ of{\nobreakspace}$G$. If there exists one such triple $(X,b,s)$ with $s \geq 2$ when $p = 2$ or the group is a direct product of a quaternion group of order{\nobreakspace}$8$ and an elementary abelian $2$-group, then it returns \texttt{true}; else it returns \texttt{false}. 

 The values of the attributes \texttt{IsPTGroup} (\ref{IsPTGroup}) and \texttt{IsTGroup} (\ref{IsTGroup}) for $P$ are set by the function. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@e:=ExtraspecialGroup(27,9);|
  <pc group of size 27 with 3 generators>
  !gapprompt@gap>| !gapinput@IsIwasawaSylow(e,3);|
  true
\end{Verbatim}
 }

 }

 }

 
\chapter{\textcolor{Chapter }{Totally and Mutually Permutable Products}}\logpage{[ 6, 0, 0 ]}
\hyperdef{L}{X82E82E45786E1B22}{}
{
 

 In recent years, many authors have considered totally and mutually permutable
subgroups. Recall that two subgroups $A$ and $B$ of a group $G$ are \emph{totally permutable} if every subgroup of $A$ permutes with every subgroup of $B$, and they are \emph{mutually permutable} if every subgroup of $A$ permutes with $B$ and every subgroup of $B$ permutes with $A$. 

 We have defined some ``One'' functions which give a pair of subgroups which do not permute and prove that
two subgroups fail to have a certain property. 

 We have also defined some functions to work with totally and mutually $f$-permutable subgroups, where $f$ is a subgroup embedding functor. 

 The functions of this chapter are defined in a preliminary state. 

 
\section{\textcolor{Chapter }{Functions for Mutually and Totally Permutable Products}}\logpage{[ 6, 1, 0 ]}
\hyperdef{L}{X85291E9D86736F21}{}
{
 

\subsection{\textcolor{Chapter }{AreMutuallyPermutableSubgroups}}
\logpage{[ 6, 1, 1 ]}\nobreak
\hyperdef{L}{X876F4E0D7C796134}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AreMutuallyPermutableSubgroups({\mdseries\slshape [G, ]A, B})\index{AreMutuallyPermutableSubgroups@\texttt{AreMutuallyPermutableSubgroups}}
\label{AreMutuallyPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the subgroups $A$ and $B$ of $G$ are mutually permutable subgroups, that is, every subgroup of $A$ permutes with $B$ and every subgroup of $B$ permutes with $A$, and \texttt{false} otherwise. The method used here checks only that $A$ permutes with all cyclic subgroups of $B$ and that $B$ permutes with all cyclic subgroups of $A$. 

 The method with two arguments assume that $A$ and $B$ have a common supergroup. }

 

\subsection{\textcolor{Chapter }{OnePairShowingNotMutuallyPermutableSubgroups}}
\logpage{[ 6, 1, 2 ]}\nobreak
\hyperdef{L}{X80225ABC79C7875F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OnePairShowingNotMutuallyPermutableSubgroups({\mdseries\slshape [G, ]A, B})\index{OnePairShowingNotMutuallyPermutableSubgroups@\texttt{One}\-\texttt{Pair}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Mutually}\-\texttt{Permutable}\-\texttt{Subgroups}}
\label{OnePairShowingNotMutuallyPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns a pair of the form [ \mbox{\texttt{\mdseries\slshape A}}, \mbox{\texttt{\mdseries\slshape V}} ] with \mbox{\texttt{\mdseries\slshape V}} a subgroup of \mbox{\texttt{\mdseries\slshape B}} or of the form [ \mbox{\texttt{\mdseries\slshape W}}, \mbox{\texttt{\mdseries\slshape B}} ] with \mbox{\texttt{\mdseries\slshape W}} a subgroup of \mbox{\texttt{\mdseries\slshape A}} in which both subgroups do not permute, or \texttt{fail} if this pair does not exist because the product is mutually permutable. }

 

\subsection{\textcolor{Chapter }{AreTotallyPermutableSubgroups}}
\logpage{[ 6, 1, 3 ]}\nobreak
\hyperdef{L}{X7D58DFE57AA4573B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AreTotallyPermutableSubgroups({\mdseries\slshape [G, ]A, B})\index{AreTotallyPermutableSubgroups@\texttt{AreTotallyPermutableSubgroups}}
\label{AreTotallyPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the subgroups $A$ and $B$ of $G$ are totally permutable, that is, every subgroup of $A$ permutes with every subgroup of $B$, and \texttt{false} otherwise. The method used here checks only that every cyclic subgroup of $A$ permutes with every cyclic subgroup of $B$. 

 The method with two arguments assume that $A$ and $B$ have a common supergroup. }

 

\subsection{\textcolor{Chapter }{OnePairShowingNotTotallyPermutableSubgroups}}
\logpage{[ 6, 1, 4 ]}\nobreak
\hyperdef{L}{X7B51474D878ACD11}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OnePairShowingNotTotallyPermutableSubgroups({\mdseries\slshape [G, ]A, B})\index{OnePairShowingNotTotallyPermutableSubgroups@\texttt{One}\-\texttt{Pair}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Totally}\-\texttt{Permutable}\-\texttt{Subgroups}}
\label{OnePairShowingNotTotallyPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns a pair of the form [ \mbox{\texttt{\mdseries\slshape V}}, \mbox{\texttt{\mdseries\slshape W}} ], with \mbox{\texttt{\mdseries\slshape V}} a subgroup of \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape W}} a subgroup of \mbox{\texttt{\mdseries\slshape B}}, such that both subgroups do not permute, or \texttt{fail} if this pair does not exist because the product is totally permutable. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=AlternatingGroup(4);|
  Alt( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@b:=Subgroup(g,[(1,2,3,4),(1,3)]);|
  Group([ (1,2,3,4), (1,3) ])
  !gapprompt@gap>| !gapinput@AreMutuallyPermutableSubgroups(g,a,b);|
  true
  !gapprompt@gap>| !gapinput@AreTotallyPermutableSubgroups(g,a,b);|
  false
  !gapprompt@gap>| !gapinput@OnePairShowingNotTotallyPermutableSubgroups(g,a,b);|
  [ Group([ (2,3,4) ]), Group([ (1,2)(3,4) ]) ]
  !gapprompt@gap>| !gapinput@c:=Subgroup(g,[(1,2,3)]);|
  Group([ (1,2,3) ])
  !gapprompt@gap>| !gapinput@AreMutuallyPermutableSubgroups(g,a,c);|
  false
  !gapprompt@gap>| !gapinput@OnePairShowingNotMutuallyPermutableSubgroups(g,a,c);|
  [ Group([ (2,3,4) ]), Group([ (1,2,3) ]) ]
  !gapprompt@gap>| !gapinput@AreMutuallyPermutableSubgroups(a,c);|
  false
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(3);|
  Sym( [ 1 .. 3 ] )
  !gapprompt@gap>| !gapinput@a:=AlternatingGroup(3);|
  Alt( [ 1 .. 3 ] )
  !gapprompt@gap>| !gapinput@b:=Subgroup(g,[(1,2)]);|
  Group([ (1,2) ])
  !gapprompt@gap>| !gapinput@AreTotallyPermutableSubgroups(g,a,b);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{AreMutuallyFPermutableSubgroups}}
\logpage{[ 6, 1, 5 ]}\nobreak
\hyperdef{L}{X823C6D68813B3AC8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AreMutuallyFPermutableSubgroups({\mdseries\slshape [G, ]A, B, fA, fB})\index{AreMutuallyFPermutableSubgroups@\texttt{AreMutuallyFPermutableSubgroups}}
\label{AreMutuallyFPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the subgroups \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are mutually \mbox{\texttt{\mdseries\slshape f}}-permutable, and \texttt{false} otherwise. Here \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are subgroups of \mbox{\texttt{\mdseries\slshape G}} and \mbox{\texttt{\mdseries\slshape fA}} and \mbox{\texttt{\mdseries\slshape fB}} are, respectively, lists of subgroups of \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}}, respectively. 

 In the version with four arguments, $A$ and $B$ are assumed to be subgroups of a common supergroup. }

 

\subsection{\textcolor{Chapter }{OnePairShowingNotMutuallyFPermutableSubgroups}}
\logpage{[ 6, 1, 6 ]}\nobreak
\hyperdef{L}{X83E0517A800AB839}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OnePairShowingNotMutuallyFPermutableSubgroups({\mdseries\slshape [G, ]A, B, fA, fB})\index{OnePairShowingNotMutuallyFPermutableSubgroups@\texttt{One}\-\texttt{Pair}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Mutually}\-\texttt{F}\-\texttt{Permutable}\-\texttt{Subgroups}}
\label{OnePairShowingNotMutuallyFPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns a pair of the form [ \mbox{\texttt{\mdseries\slshape A}}, \mbox{\texttt{\mdseries\slshape V}} ] with \mbox{\texttt{\mdseries\slshape V}} a subgroup in \mbox{\texttt{\mdseries\slshape fB}} or \mbox{\texttt{\mdseries\slshape B}} or of the form [{\nobreakspace}\mbox{\texttt{\mdseries\slshape W}}, \mbox{\texttt{\mdseries\slshape B}}{\nobreakspace}] with \mbox{\texttt{\mdseries\slshape W}} a subgroup in \mbox{\texttt{\mdseries\slshape fA}} or \mbox{\texttt{\mdseries\slshape A}} in which both subgroups do not permute, or \texttt{fail} if this pair does not exist. Here \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are subgroups of \mbox{\texttt{\mdseries\slshape G}} and \mbox{\texttt{\mdseries\slshape fA}} and \mbox{\texttt{\mdseries\slshape fB}} are lists of subgroups of \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}}, respectively. 

 In the version with four arguments, \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are assumed to be subgroups of a common supergroup. }

 

\subsection{\textcolor{Chapter }{AreTotallyFPermutableSubgroups}}
\logpage{[ 6, 1, 7 ]}\nobreak
\hyperdef{L}{X7B9DA1C2834CA53D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AreTotallyFPermutableSubgroups({\mdseries\slshape [G, ]A, B, fA, fB})\index{AreTotallyFPermutableSubgroups@\texttt{AreTotallyFPermutableSubgroups}}
\label{AreTotallyFPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns \texttt{true} if the subgroup \mbox{\texttt{\mdseries\slshape A}} permutes with all subgroups in the list \mbox{\texttt{\mdseries\slshape fB}} and \mbox{\texttt{\mdseries\slshape B}} permutes with all subgroups in the list \mbox{\texttt{\mdseries\slshape fA}}, and \texttt{false} otherwise. Here \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are subgroups of \mbox{\texttt{\mdseries\slshape G}}, \mbox{\texttt{\mdseries\slshape fA}} is a list of subgroups of \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape fB}} is a list of subgroups of \mbox{\texttt{\mdseries\slshape B}}. 

 In the version with four arguments, \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are assumed to be subgroups of a common supergroup. }

 

\subsection{\textcolor{Chapter }{OnePairShowingNotTotallyFPermutableSubgroups}}
\logpage{[ 6, 1, 8 ]}\nobreak
\hyperdef{L}{X7CD0B5737A25C1AD}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OnePairShowingNotTotallyFPermutableSubgroups({\mdseries\slshape [G, ]A, B, fA, fB})\index{OnePairShowingNotTotallyFPermutableSubgroups@\texttt{One}\-\texttt{Pair}\-\texttt{Showing}\-\texttt{Not}\-\texttt{Totally}\-\texttt{F}\-\texttt{Permutable}\-\texttt{Subgroups}}
\label{OnePairShowingNotTotallyFPermutableSubgroups}
}\hfill{\scriptsize (function)}}\\


 This function returns a pair of the form [ \mbox{\texttt{\mdseries\slshape U}}, \mbox{\texttt{\mdseries\slshape V}} ] with \mbox{\texttt{\mdseries\slshape U}} a subgroup in \mbox{\texttt{\mdseries\slshape fA}} or \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape V}} a subgroup in \mbox{\texttt{\mdseries\slshape fB}} or \mbox{\texttt{\mdseries\slshape B}} in which both subgroups do not permute, or \texttt{fail} if this pair does not exist. Here \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are subgroups of \mbox{\texttt{\mdseries\slshape G}}, \mbox{\texttt{\mdseries\slshape fA}} is a list of subgroups of \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape fB}} is a list of subgroups of \mbox{\texttt{\mdseries\slshape B}}. 

 In the version with two arguments, \mbox{\texttt{\mdseries\slshape A}} and \mbox{\texttt{\mdseries\slshape B}} are assumed to be subgroups of a common supergroup. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@a:=AlternatingGroup(4);|
  Alt( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@b:=Subgroup(g,[(1,2,3,4),(1,3)]);|
  Group([ (1,2,3,4), (1,3) ])
  !gapprompt@gap>| !gapinput@AreTotallyFPermutableSubgroups(g,a,b,|
  !gapprompt@>| !gapinput@     MaximalSubgroups(a),MaximalSubgroups(b));|
  false
  !gapprompt@gap>| !gapinput@OnePairShowingNotTotallyFPermutableSubgroups(g,a,b,|
  !gapprompt@>| !gapinput@     MaximalSubgroups(a),MaximalSubgroups(b));|
  [ Group([ (1,2,3) ]), Group([ (2,4), (1,3)(2,4) ]) ]
  !gapprompt@gap>| !gapinput@AreTotallyFPermutableSubgroups(g,a,b,DerivedSeries(a),DerivedSeries(b));|
  true
\end{Verbatim}
 }

 }

 }

 
\chapter{\textcolor{Chapter }{Other Functions in the \textsf{PERMUT} Package}}\logpage{[ 7, 0, 0 ]}
\hyperdef{L}{X813075638264F9A9}{}
{
 In this chapter we define some miscellaneous functions which have appeared in
the context of permutability, or some functions which have been used for some
of the functions of the package. 
\section{\textcolor{Chapter }{Functions}}\logpage{[ 7, 1, 0 ]}
\hyperdef{L}{X86FA580F8055B274}{}
{
 

\subsection{\textcolor{Chapter }{AllSubnormalSubgroups}}
\logpage{[ 7, 1, 1 ]}\nobreak
\hyperdef{L}{X81EA23787BCD8633}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AllSubnormalSubgroups({\mdseries\slshape G})\index{AllSubnormalSubgroups@\texttt{AllSubnormalSubgroups}}
\label{AllSubnormalSubgroups}
}\hfill{\scriptsize (attribute)}}\\


 This function computes all subnormal subgroups of \mbox{\texttt{\mdseries\slshape G}}. The method used to obtain this list consists in beginning with the list of
all normal subgroups of \mbox{\texttt{\mdseries\slshape G}} and by adding all normal subgroups of the subgroups in the list until no new
subnormal subgroups appear. This computes the complete list of subgroups, not
only a representative of each conjugacy class as other functions do. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@AllSubnormalSubgroups(g);|
  [ Sym( [ 1 .. 4 ] ), Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)
    (2,3), (1,3)(2,4) ]), Group(()), Group([ (1,3)(2,4) ]), Group([ (1,2)
    (3,4) ]), Group([ (1,4)(2,3) ]) ]
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{PrimesDividingSize}}
\logpage{[ 7, 1, 2 ]}\nobreak
\hyperdef{L}{X858C07DA815A2E9A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimesDividingSize({\mdseries\slshape G})\index{PrimesDividingSize@\texttt{PrimesDividingSize}}
\label{PrimesDividingSize}
}\hfill{\scriptsize (attribute)}}\\


 This attribute gives a list of primes dividing the size of the finite group \mbox{\texttt{\mdseries\slshape G}}, without repetitions. Its code has been borrowed from the \textsf{GAP} manual. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@PrimesDividingSize(g);|
  [ 2, 3 ]
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{SylowSubgroups}}
\logpage{[ 7, 1, 3 ]}\nobreak
\hyperdef{L}{X7B07AAD37F7CEDEB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SylowSubgroups({\mdseries\slshape G})\index{SylowSubgroups@\texttt{SylowSubgroups}}
\label{SylowSubgroups}
}\hfill{\scriptsize (attribute)}}\\


 This attribute returns a list composed by one Sylow subgroup for every prime
dividing the size of{\nobreakspace}\mbox{\texttt{\mdseries\slshape G}}. If \mbox{\texttt{\mdseries\slshape G}} is soluble, then it returns a Sylow system or Sylow basis of \mbox{\texttt{\mdseries\slshape G}} by means of the function \texttt{SylowSystem} (\textbf{Reference: SylowSystem}) (a set composed of a Sylow subgroup for each prime dividing the order of \mbox{\texttt{\mdseries\slshape G}} permuting in pairs). 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@SylowSubgroups(g);|
  [ Group([ (1,2), (3,4), (1,3)(2,4) ]), Group([ (1,2,3) ]) ]
  !gapprompt@gap>| !gapinput@s5:=SymmetricGroup(5);|
  Sym( [ 1 .. 5 ] )
  !gapprompt@gap>| !gapinput@SylowSubgroups(s5);|
  [ Group([ (1,2), (3,4), (1,3)(2,4) ]), Group([ (1,2,3) ]), Group([ (1,2,3,4,
     5) ]) ]
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSCGroup}}
\logpage{[ 7, 1, 4 ]}\nobreak
\hyperdef{L}{X7E01D1C47814DA3C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSCGroup({\mdseries\slshape G})\index{IsSCGroup@\texttt{IsSCGroup}}
\label{IsSCGroup}
}\hfill{\scriptsize (property)}}\\


 This property is \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} is an SC-group, and \texttt{false} otherwise. A group \mbox{\texttt{\mdseries\slshape G}} is an SC-group if all its chief factors are simple. Note that a soluble group \mbox{\texttt{\mdseries\slshape G}} is an SC-group if and only if \mbox{\texttt{\mdseries\slshape G}} is supersoluble. The method used to check this property uses the chief series
if its is available or the group is not soluble. 

 Since the methods for insoluble groups might on the computation of a chief
series with the function \texttt{ChiefSeries} (\textbf{Reference: ChiefSeries}), they might not be available if the group is not given as a permutation
group. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@IsSCGroup(g);|
  false
  !gapprompt@gap>| !gapinput@g:=GL(2,5);|
  GL(2,5)
  !gapprompt@gap>| !gapinput@IsSCGroup(g);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSylowTowerGroup}}
\logpage{[ 7, 1, 5 ]}\nobreak
\hyperdef{L}{X798736C17DD23F8A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSylowTowerGroup({\mdseries\slshape G})\index{IsSylowTowerGroup@\texttt{IsSylowTowerGroup}}
\label{IsSylowTowerGroup}
}\hfill{\scriptsize (property)}}\\


 This property takes the value \texttt{true} if $G$ has a Sylow tower of supersoluble type, and \texttt{false} otherwise. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@IsSylowTowerGroup(g);|
  false
  !gapprompt@gap>| !gapinput@g:=SmallGroup(75,1);|
  <pc group of size 75 with 3 generators>
  !gapprompt@gap>| !gapinput@IsSylowTowerGroup(g);|
  true
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{Permutizer}}
\logpage{[ 7, 1, 6 ]}\nobreak
\hyperdef{L}{X81FCDD7C7A5D1658}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{Permutizer({\mdseries\slshape G, U})\index{Permutizer@\texttt{Permutizer}}
\label{Permutizer}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{Permutiser({\mdseries\slshape G, U})\index{Permutiser@\texttt{Permutiser}}
\label{Permutiser}
}\hfill{\scriptsize (function)}}\\


 The permutiser of a subgroup \mbox{\texttt{\mdseries\slshape U}} of a group \mbox{\texttt{\mdseries\slshape G}} is the subgroup generated by all cyclic subgroups of \mbox{\texttt{\mdseries\slshape G}} which permute with \mbox{\texttt{\mdseries\slshape U}}. If \mbox{\texttt{\mdseries\slshape U}} is permutable in \mbox{\texttt{\mdseries\slshape G}} (in particular, if \mbox{\texttt{\mdseries\slshape U}} is normal in \mbox{\texttt{\mdseries\slshape G}}), then its permutizer coincides with{\nobreakspace}\mbox{\texttt{\mdseries\slshape G}}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@g:=SymmetricGroup(4);|
  Sym( [ 1 .. 4 ] )
  !gapprompt@gap>| !gapinput@Permutizer(g,Subgroup(g,[(1,2,3)]));|
  Group([ (1,2,3), (2,3) ])
  !gapprompt@gap>| !gapinput@Size(last);|
  6
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{AllGeneratorsCyclicPGroup}}
\logpage{[ 7, 1, 7 ]}\nobreak
\hyperdef{L}{X7D47DF77826C1BE0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AllGeneratorsCyclicPGroup({\mdseries\slshape g, p})\index{AllGeneratorsCyclicPGroup@\texttt{AllGeneratorsCyclicPGroup}}
\label{AllGeneratorsCyclicPGroup}
}\hfill{\scriptsize (function)}}\\


 This auxiliary function returns the list of all generators of the cyclic $p$-group generated by the $p$-element $g$. Here $p$ is a prime number. Since this function is not intended to be used in
interactive mode, no check is done that the argument is a $p$-element. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@AllGeneratorsCyclicPGroup((1,2,3,4,5,6,7,8,9),3);|
  [ (1,2,3,4,5,6,7,8,9), (1,3,5,7,9,2,4,6,8), (1,5,9,4,8,3,7,2,6),
    (1,6,2,7,3,8,4,9,5), (1,8,6,4,2,9,7,5,3), (1,9,8,7,6,5,4,3,2) ]
\end{Verbatim}
 }

 }

 }

 \def\bibname{References\logpage{[ "Bib", 0, 0 ]}
\hyperdef{L}{X7A6F98FD85F02BFE}{}
}

\bibliographystyle{alpha}
\bibliography{biblio.xml}

\addcontentsline{toc}{chapter}{References}

\def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
\hyperdef{L}{X83A0356F839C696F}{}
}

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Index}


\printindex

\newpage
\immediate\write\pagenrlog{["End"], \arabic{page}];}
\immediate\closeout\pagenrlog
\end{document}
