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

\hypersetup{pdftitle=\textsf{Wedderga}}
\markright{\scriptsize \mbox{}\hfill \textsf{Wedderga} \hfill\mbox{}}
{\Huge \textbf{Wedderburn Decomposition of Group Algebras\mbox{}}}\\
\vfill

{\Huge Version 4.7.2\mbox{}}\\[1cm]
{24 November 2014\mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{Osnel Broche Cristo   \mbox{}}}\\
{\Large \textbf{Allen Herman    \mbox{}}}\\
{\Large \textbf{Alexander Konovalov    \mbox{}}}\\
{\Large \textbf{Aurora Olivieri   \mbox{}}}\\
{\Large \textbf{Gabriela Olteanu    \mbox{}}}\\
{\Large \textbf{{\a'A}ngel del R{\a'\i}o    \mbox{}}}\\
{\Large \textbf{Inneke Van Gelder    \mbox{}}}\\
\hypersetup{pdfauthor=Osnel Broche Cristo   ; Allen Herman    ; Alexander Konovalov    ; Aurora Olivieri   ; Gabriela Olteanu    ; {\a'A}ngel del R{\a'\i}o    ; Inneke Van Gelder    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{Osnel Broche Cristo   }  Email: \href{mailto://osnel@ufla.br} {\texttt{osnel@ufla.br}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Departamento de Ci{\^e}ncias Exatas, Universidade Federal de Lavras - UFLA,
Campus Universit{\a'a}rio - Caixa Postal 3037, 37200-000, Lavras - MG, Brazil \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Allen Herman    }  Email: \href{mailto://aherman@math.uregina.ca} {\texttt{aherman@math.uregina.ca}}\\
  Homepage: \href{http://www.math.uregina.ca/~aherman/} {\texttt{http://www.math.uregina.ca/\texttt{\symbol{126}}aherman/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Department of Mathematics and Statistics, \\
 University of Regina, \\
 3737 Wascana Parkway, \\
 Regina, SK, S0G 0E0, Canada \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Alexander Konovalov    }  Email: \href{mailto://alexk@mcs.st-andrews.ac.uk} {\texttt{alexk@mcs.st-andrews.ac.uk}}\\
  Homepage: \href{http://www.cs.st-andrews.ac.uk/~alexk/} {\texttt{http://www.cs.st-andrews.ac.uk/\texttt{\symbol{126}}alexk/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 School of Computer Science, University of St Andrews\\
 Jack Cole Building, North Haugh,\\
 St Andrews, Fife, KY16 9SX, Scotland \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Aurora Olivieri   }  Email: \href{mailto://olivieri@usb.ve} {\texttt{olivieri@usb.ve}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Departamento de Matem{\a'a}ticas\\
 Universidad Sim{\a'o}n Bol{\a'\i}var\\
 Apartado Postal 89000, Caracas 1080-A, Venezuela \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Gabriela Olteanu    }  Email: \href{mailto://gabriela.olteanu@econ.ubbcluj.ro} {\texttt{gabriela.olteanu@econ.ubbcluj.ro}}\\
  Homepage: \href{http://math.ubbcluj.ro/~olteanu} {\texttt{http://math.ubbcluj.ro/\texttt{\symbol{126}}olteanu}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Department of Statistics-Forecasts-Mathematics\\
 Faculty of Economics and Business Administration\\
 Babes-Bolyai University\\
 Str. T. Mihali 58-60, 400591 Cluj-Napoca, Romania \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{{\a'A}ngel del R{\a'\i}o    }  Email: \href{mailto://adelrio@um.es} {\texttt{adelrio@um.es}}\\
  Homepage: \href{http://www.um.es/adelrio} {\texttt{http://www.um.es/adelrio}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Departamento de Matem{\a'a}ticas, Universidad de Murcia\\
 30100 Murcia, Spain \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{Inneke Van Gelder    }  Email: \href{mailto://ivgelder@vub.ac.be} {\texttt{ivgelder@vub.ac.be}}\\
  Homepage: \href{http://homepages.vub.ac.be/~ivgelder} {\texttt{http://homepages.vub.ac.be/\texttt{\symbol{126}}ivgelder}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Vrije Universiteit Brussel, Departement Wiskunde \\
 Pleinlaan 2 \\
 1050 Brussels, Belgium \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Abstract}
\logpage{[ 0, 0, 1 ]}
 \index{Wedderga package@\textsf{Wedderga} package} The title ``\textsf{Wedderga}'' stands for ``\textsc{WEDDER}burn decomposition of \textsc{G}roup \textsc{A}lgebras. This is a \textsf{GAP} package to compute the simple components of the Wedderburn decomposition of
semisimple group algebras of finite groups over finite fields and over
subfields of finite cyclotomic extensions of the rationals. It also contains
functions that produce the primitive central idempotents of semisimple group
algebras and a complete set of orthogonal primitive idempotents. Other
functions of \textsf{Wedderga} allow to construct crossed products over a group with coefficients in an
associative ring with identity and the multiplication determined by a given
action and twisting. \mbox{}}\\[1cm]
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 2 ]}
 {\copyright} 2006-2014 by Osnel Broche Cristo, Allen Herman, Alexander
Konovalov, Aurora Olivieri, Gabriela Olteanu, {\a'A}ngel del R{\a'\i}o and
Inneke Van Gelder.

 \textsf{Wedderga} is free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version. For
details, see the FSF's own site \href{http://www.gnu.org/licenses/gpl.html} {\texttt{http://www.gnu.org/licenses/gpl.html}}.

 If you obtained \textsf{Wedderga}, we would be grateful for a short notification sent to one of the authors. If
you publish a result which was partially obtained with the usage of \textsf{Wedderga}, please cite it in the following form:

 O. Broche Cristo, A. Herman, A. Konovalov, A. Olivieri, G. Olteanu, {\a'A}.
del R{\a'\i}o and I. Van Gelder. \emph{Wedderga --- Wedderburn Decomposition of Group Algebras, Version 4.7.2;} 2014 (\href{http://www.cs.st-andrews.ac.uk/~alexk/wedderga} {\texttt{http://www.cs.st-andrews.ac.uk/\texttt{\symbol{126}}alexk/wedderga}}). \mbox{}}\\[1cm]
{\small 
\section*{Acknowledgements}
\logpage{[ 0, 0, 3 ]}
 We all are very grateful to Steve Linton for communicating the package and to
the referee for careful testing \textsf{Wedderga} and useful suggestions. Also we acknowledge very much the members of the \textsf{GAP} team: Thomas Breuer, Alexander Hulpke, Frank L{\"u}beck and many other
colleagues for helpful comments and advise. We would like also to thank Thomas
Breuer for the code of \texttt{PrimitiveCentralIdempotentsByCharacterTable} for rational group algebras. 

 On various stages the development of the Wedderga package was supported by the
following institutions: 
\begin{itemize}
\item University of Murcia;
\item Francqui Stichting grant ADSI107;
\item M.E.C. of Romania (CEEX-ET 47/2006);
\item D.G.I. of Spain;
\item Fundaci{\a'o}n S{\a'e}neca of Murcia;
\item CAPES and FAPESP of Brazil;
\item Research Foundation Flanders (FWO - Vlaanderen).
\end{itemize}
 We acknowledge with gratitude this support. \mbox{}}\\[1cm]
\newpage

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

\tableofcontents
\newpage

  
\chapter{\textcolor{Chapter }{Introduction}}\label{Intro}
\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X7DFB63A97E67C0A1}{}
{
  
\section{\textcolor{Chapter }{General aims of \textsf{Wedderga} package}}\label{IntroAims}
\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7D83783F79DCABB9}{}
{
  The title ``\textsf{Wedderga}'' stands for ``\textsc{Wedder}burn decomposition of \textsc{g}roup \textsc{a}lgebras''. This is a \textsf{GAP} package to compute the simple components of the Wedderburn decomposition of
semisimple group algebras. So the main functions of the package returns a list
of simple algebras whose direct sum is isomorphic to the group algebra given
as input. 

 The method implemented by the package produces the Wedderburn decomposition of
a group algebra $FG$ provided $G$ is a finite group and $F$ is either a finite field of characteristic coprime to the order of $G$, or an abelian number field (i.e. a subfield of a finite cyclotomic extension
of the rationals). 

 Other functions of \textsf{Wedderga} compute the primitive central idempotents of semisimple group algebras and a
complete set of orthogonal primitive idempotents. 

 The package also provides functions to construct crossed products over a group
with coefficients in an associative ring with identity and the multiplication
determined by a given action and twisting.

 Furhermore, the package provides functions to create code words from a group
ring element.

 }

  
\section{\textcolor{Chapter }{Installation and system requirements}}\label{IntroInstall}
\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X7DB566D5785B7DBC}{}
{
  \textsf{Wedderga} does not use external binaries and, therefore, works without restrictions on
the type of the operating system. It is designed for \textsf{GAP}4.4 and no compatibility with previous releases of \textsf{GAP}4 is guaranteed. 

 To use the \textsf{Wedderga} online help it is necessary to install the \textsf{GAP}4 package \textsf{GAPDoc} by Frank L{\"u}beck and Max Neunh{\"o}ffer, which is available from the \textsf{GAP} site or from \href{http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc/} {\texttt{http://www.math.rwth-aachen.de/\texttt{\symbol{126}}Frank.Luebeck/GAPDoc/}}. 

 \textsf{Wedderga} is distributed in standard formats (\texttt{tar.gz}, \texttt{tar.bz2}, \texttt{-win.zip}) and can be obtained from \href{http://www.um.es/adelrio/wedderga.htm} {\texttt{http://www.um.es/adelrio/wedderga.htm}}, its mirror \href{http://www.cs.st-andrews.ac.uk/~alexk/wedderga/} {\texttt{http://www.cs.st-andrews.ac.uk/\texttt{\symbol{126}}alexk/wedderga/}} or the page \href{http://www.gap-system.org/Packages/wedderga.html} {\texttt{http://www.gap-system.org/Packages/wedderga.html}} at the \textsf{GAP} web site. To install \textsf{Wedderga}, unpack its archive into the \texttt{pkg} subdirectory of your \textsf{GAP} installation. 

 When you don't have access to the directory of your main \textsf{GAP} installation, you can also install the package \emph{outside the \textsf{GAP} main directory} by unpacking it inside a directory \texttt{MYGAPDIR/pkg}. Then to be able to load Wedderga you need to call GAP with the \texttt{-l ";MYGAPDIR"} option. 

 Installation using other archive formats is performed in a similar way. 

 If the package is installed correctly, it should be loaded as follows: 
\begin{Verbatim}[commandchars=!|D,fontsize=\small,frame=single,label=Example]
  
  !gapprompt|gap>D !gapinput|LoadPackage("wedderga");D
  -----------------------------------------------------------------------------
  Loading  Wedderga 4.4.4 (Wedderga)
  by Osnel Broche Cristo (osnel@ufla.br),
     Alexander Konovalov (http://www.cs.st-andrews.ac.uk/~alexk/),
     Gabriela Olteanu (golteanu@um.es, olteanu@math.ubbcluj.ro),
     Aurora Olivieri (olivieri@usb.ve), 
     Angel del Rio (http://www.um.es/adelrio) and
     Inneke Van Gelder (ivgelder@vub.ac.be).
  -----------------------------------------------------------------------------
  true
  
\end{Verbatim}
 }

  
\section{\textcolor{Chapter }{Main functions of \textsf{Wedderga} package}}\label{IntroMain}
\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X7D7B9D0D80A6B7F3}{}
{
  The main functions of \textsf{Wedderga} are \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) and \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}). 

 \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) computes a list of simple algebras such that their direct product is
isomorphic to the group algebra $FG$, given as input. Thus, the direct product of the entries of the output is the \emph{Wedderburn decomposition} (\ref{WedDec}) of $FG$. 

 If $F$ is an abelian number field then the entries of the output are given as matrix
algebras over cyclotomic algebras (see \ref{Cyclotomic}), thus, the entries of the output of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) are realizations of the \emph{Wedderburn components} (\ref{WedDec}) of $FG$ as algebras which are \emph{Brauer equivalent} (\ref{Brauer}) to \emph{cyclotomic algebras} (\ref{Cyclotomic}). Recall that the Brauer-Witt Theorem ensures that every simple factor of a
semisimple group ring $FG$ is Brauer equivalent (that is represents the same class in the Brauer group of
its centre) to a cyclotomic algebra (\cite{Y}. In this case the algorithm is based in a computational oriented proof of the
Brauer-Witt Theorem due to Olteanu \cite{O} which uses previous work by Olivieri, del R{\a'\i}o and Sim{\a'o}n \cite{ORS} for rational group algebras of \emph{strongly monomial groups} (\ref{StMon}). 

 The Wedderburn components of $FG$ are also matrix algebras over division rings which are finite extensions of
the field $F$. If $F$ is finite then by the Wedderburn theorem these division rings are finite
fields. In this case the output of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) represents the factors of $FG$ as matrix algebras over finite extensions of the field $F$. 

 In theory \textsf{Wedderga} could handle the calculation of the Wedderburn decomposition of group algebras
of groups of arbitrary size but in practice if the order of the group is
greater than 5000 then the program may crash. The way the group is given is
relevant for the performance. Usually the program works better for groups
given as permutation groups or pc groups. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QG := GroupRing( Rationals, SymmetricGroup(4) );|
  <algebra-with-one over Rationals, with 2 generators>
  !gapprompt@gap>| !gapinput@WedderburnDecomposition(QG);|
  [ Rationals, Rationals, ( Rationals^[ 3, 3 ] ), ( Rationals^[ 3, 3 ] ),
    <crossed product with center Rationals over CF(3) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@FG := GroupRing( CF(5), SymmetricGroup(4) );|
  <algebra-with-one over CF(5), with 2 generators>
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( FG );|
  [ CF(5), CF(5), ( CF(5)^[ 3, 3 ] ), ( CF(5)^[ 3, 3 ] ),
    <crossed product with center CF(5) over AsField( CF(5), CF(
      15) ) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@FG := GroupRing( GF(5), SymmetricGroup(4) ); |
  <algebra-with-one over GF(5), with 2 generators>
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( FG );|
  [ ( GF(5)^[ 1, 1 ] ), ( GF(5)^[ 1, 1 ] ), ( GF(5)^[ 2, 2 ] ), 
    ( GF(5)^[ 3, 3 ] ), ( GF(5)^[ 3, 3 ] ) ]
  !gapprompt@gap>| !gapinput@FG := GroupRing( GF(5), SmallGroup(24,3) );|
  <algebra-with-one over GF(5), with 4 generators>
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( FG );|
  [ ( GF(5)^[ 1, 1 ] ), ( GF(5^2)^[ 1, 1 ] ), ( GF(5)^[ 2, 2 ] ), 
    ( GF(5^2)^[ 2, 2 ] ), ( GF(5)^[ 3, 3 ] ) ]
  
\end{Verbatim}
 Instead of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}), that returns a list of \textsf{GAP} objects, \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) returns the numerical description of these objects. See Section \ref{NumDesc} for theoretical background. }

 }

  
\chapter{\textcolor{Chapter }{Wedderburn decomposition}}\label{Decomp}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X87273420791F220E}{}
{
  
\section{\textcolor{Chapter }{Wedderburn decomposition of a group algebra}}\label{DecompDecomp}
\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X7C902C667D137851}{}
{
  

\subsection{\textcolor{Chapter }{WedderburnDecomposition}}
\logpage{[ 2, 1, 1 ]}\nobreak
\hyperdef{L}{X7F1779ED8777F3E7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{WedderburnDecomposition({\mdseries\slshape FG})\index{WedderburnDecomposition@\texttt{WedderburnDecomposition}}
\label{WedderburnDecomposition}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
 A list of simple algebras. 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a group algebra of a finite group $G$ over the field $F$, where $F$ is either an abelian number field (i.e. a subfield of a finite cyclotomic
extension of the rationals) or a finite field of characteristic coprime with
the order of $G$. 

 The function returns the list of all \emph{Wedderburn components} (\ref{WedDec}) of the group algebra \mbox{\texttt{\mdseries\slshape FG}}. If $F$ is an abelian number field then each Wedderburn component is given as a matrix
algebra of a \emph{cyclotomic algebra} (\ref{Cyclotomic}). If $F$ is a finite field then the Wedderburn components are given as matrix algebras
over finite fields. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( GF(5), DihedralGroup(16) ) );|
  [ ( GF(5)^[ 1, 1 ] ), ( GF(5)^[ 1, 1 ] ), ( GF(5)^[ 1, 1 ] ),
    ( GF(5)^[ 1, 1 ] ), ( GF(5)^[ 2, 2 ] ), ( GF(5^2)^[ 2, 2 ] ) ]
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( Rationals, DihedralGroup(16) ) );|
  [ Rationals, Rationals, Rationals, Rationals, ( Rationals^[ 2, 2 ] ),
    <crossed product with center NF(8,[ 1, 7 ]) over AsField( NF(8,
      [ 1, 7 ]), CF(8) ) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( CF(5), DihedralGroup(16) ) );|
  [ CF(5), CF(5), CF(5), CF(5), ( CF(5)^[ 2, 2 ] ),
    <crossed product with center NF(40,[ 1, 31 ]) over AsField( NF(40,
      [ 1, 31 ]), CF(40) ) of a group of size 2> ]
  
\end{Verbatim}
 }

 The previous examples show that if $D_{16}$ denotes the dihedral group of order $16$ then the \emph{Wedderburn decomposition} (\ref{WedDec}) of $\mathbb F_5 D_{16}$, ${\ensuremath{\mathbb Q}} D_{16}$ and ${\ensuremath{\mathbb Q}} (\xi_5) D_{16}$ are respectively 
\[ \mathbb F_5 D_{16} = 4 \mathbb F_5 \oplus M_2( \mathbb F_5 ) \oplus M_2(
\mathbb F_{25} ), \]
 
\[ {\ensuremath{\mathbb Q}} D_{16} = 4 {\ensuremath{\mathbb Q}} \oplus M_2(
{\ensuremath{\mathbb Q}} ) \oplus (K(\xi_8)/K,t), \]
 and 
\[ {\ensuremath{\mathbb Q}} (\xi_5) D_{16} = 4 {\ensuremath{\mathbb Q}} (\xi_5)
\oplus M_2( {\ensuremath{\mathbb Q}} (\xi_5) ) \oplus (F(\xi_{40})/F,t), \]
 where $(K(\xi_8)/K,t)$ is a \emph{cyclotomic algebra} (\ref{Cyclotomic}) with the centre $K=NF(8,[ 1, 7 ])= {\ensuremath{\mathbb Q}} (\sqrt{2})$, $(F(\xi_{40})/F,t) = {\ensuremath{\mathbb Q}} (\sqrt{2},\xi_5)$ is a cyclotomic algebra with centre $F=NF(40,[ 1, 31 ])$ and $\xi_n$ denotes a $n$-th root of unity. 

 Two more examples: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( Rationals, SmallGroup(48,15) ) );|
  [ Rationals, Rationals, Rationals, Rationals, ( Rationals^[ 2, 2 ] ),
    <crossed product with center Rationals over CF(3) of a group of size 2>,
    ( CF(3)^[ 2, 2 ] ), <crossed product with center Rationals over CF(
      3) of a group of size 2>, <crossed product with center NF(8,
      [ 1, 7 ]) over AsField( NF(8,[ 1, 7 ]), CF(8) ) of a group of size 2>,
    <crossed product with center Rationals over CF(12) of a group of size 4> ]
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( CF(3), SmallGroup(48,15) ) );|
  [ CF(3), CF(3), CF(3), CF(3), ( CF(3)^[ 2, 2 ] ), ( CF(3)^[ 2, 2 ] ),
    ( CF(3)^[ 2, 2 ] ), ( CF(3)^[ 2, 2 ] ), ( CF(3)^[ 2, 2 ] ),
    <crossed product with center NF(24,[ 1, 7 ]) over AsField( NF(24,
      [ 1, 7 ]), CF(24) ) of a group of size 2>,
    ( <crossed product with center CF(3) over AsField( CF(3), CF(
      12) ) of a group of size 2>^[ 2, 2 ] ) ]
  
\end{Verbatim}
 In some cases, in characteristic zero, some entries of the output of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) do not provide full matrix algebras over a \emph{cyclotomic algebra} (\ref{Cyclotomic}), but "fractional matrix algebras". That entry is not an algebra that can be
used as a \textsf{GAP} object. Instead it is a pair formed by a rational giving the "size" of the
matrices and a crossed product. See \ref{WedDec} for a theoretical explanation of this phenomenon. In this case a warning
message is displayed. 
\begin{Verbatim}[commandchars=@|H,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>H @gapinput|QG:=GroupRing(Rationals,SmallGroup(240,89));H
  <algebra-with-one over Rationals, with 2 generators>
  @gapprompt|gap>H @gapinput|WedderburnDecomposition(QG);H
  Wedderga: Warning!!!
  Some of the Wedderburn components displayed are FRACTIONAL MATRIX ALGEBRAS!!!
  
  [ Rationals, Rationals, <crossed product with center Rationals over CF(
      5) of a group of size 4>, ( Rationals^[ 4, 4 ] ), ( Rationals^[ 4, 4 ] ),
    ( Rationals^[ 5, 5 ] ), ( Rationals^[ 5, 5 ] ), ( Rationals^[ 6, 6 ] ),
    <crossed product with center NF(12,[ 1, 11 ]) over AsField( NF(12,
      [ 1, 11 ]), NF(60,[ 1, 11 ]) ) of a group of size 4>,
    [ 3/2, <crossed product with center NF(8,[ 1, 7 ]) over AsField( NF(8,
          [ 1, 7 ]), NF(40,[ 1, 31 ]) ) of a group of size 4> ] ]  
  
\end{Verbatim}
  

\subsection{\textcolor{Chapter }{WedderburnDecompositionInfo}}
\logpage{[ 2, 1, 2 ]}\nobreak
\hyperdef{L}{X8710F98A85F0DD29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{WedderburnDecompositionInfo({\mdseries\slshape FG})\index{WedderburnDecompositionInfo@\texttt{WedderburnDecompositionInfo}}
\label{WedderburnDecompositionInfo}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
 A list with each entry a numerical description of a \emph{cyclotomic algebra} (\ref{Cyclotomic}). 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a group algebra of a finite group $G$ over the field $F$, where $F$ is either an abelian number field (i.e. a subfield of a finite cyclotomic
extension of the rationals) or a finite field of characteristic coprime to the
order of $G$. 

 This function is a numerical counterpart of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}). 

 It returns a list formed by lists of lengths 2, 4 or 5. 

 The lists of length 2 are of the form 
\[ [n,F], \]
 where $n$ is a positive integer and $F$ is a field. It represents the $n\times n$ matrix algebra $M_n(F)$ over the field $F$.

 The lists of length 4 are of the form 
\[ [n,F,k,[d,\alpha,\beta]], \]
 where $F$ is a field and $n,k,d,\alpha,\beta$ are non-negative integers, satisfying the conditions mentioned in Section \ref{NumDesc}. It represents the $n\times n$ matrix algebra $M_n(A)$ over the cyclic algebra 
\[ A=F(\xi_k)[u | \xi_k^u = \xi_k^{\alpha}, u^d = \xi_k^{\beta}], \]
 where $\xi_k$ is a primitive $k$-th root of unity. 

 The lists of length 5 are of the form 
\[ [n,F,k,[d_i,\alpha_i,\beta_i]_{i=1}^m, [\gamma_{i,j}]_{1\le i < j \le m} ], \]
 where $F$ is a field and $n,k,d_i,\alpha_i,\beta_i,\gamma_{i,j}$ are non-negative integers. It represents the $n\times n$ matrix algebra $M_n(A)$ over the \emph{cyclotomic algebra} (\ref{Cyclotomic}) 
\[ A = F(\xi_k)[g_1,\ldots,g_m \mid \xi_k^{g_i} = \xi_k^{\alpha_i},
g_i^{d_i}=\xi_k^{\beta_i}, g_jg_i=\xi_k^{\gamma_{ij}} g_i g_j], \]
 where $\xi_k$ is a primitive $k$-th root of unity (see \ref{NumDesc}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo( GroupRing( Rationals, DihedralGroup(16) ) );|
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ],
    [ 2, Rationals ], [ 1, NF(8,[ 1, 7 ]), 8, [ 2, 7, 0 ] ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo( GroupRing( CF(5), DihedralGroup(16) ) );|
  [ [ 1, CF(5) ], [ 1, CF(5) ], [ 1, CF(5) ], [ 1, CF(5) ], [ 2, CF(5) ],
    [ 1, NF(40,[ 1, 31 ]), 8, [ 2, 7, 0 ] ] ]
  
\end{Verbatim}
 }

 The interpretation of the previous example gives rise to the following \emph{Wedderburn decompositions} (\ref{WedDec}), where $D_{16}$ is the dihedral group of order 16 and $\xi_5$ is a primitive $5$-th root of unity. 
\[ {\ensuremath{\mathbb Q}} D_{16} = 4 {\ensuremath{\mathbb Q}} \oplus M_2(
{\ensuremath{\mathbb Q}} ) \oplus M_2( {\ensuremath{\mathbb Q}} (\sqrt{2})). \]
 
\[ {\ensuremath{\mathbb Q}} (\xi_5) D_{16} = 4 {\ensuremath{\mathbb Q}} (\xi_5)
\oplus M_2( {\ensuremath{\mathbb Q}} (\xi_5)) \oplus M_2( {\ensuremath{\mathbb
Q}} (\xi_5,\sqrt{2})). \]
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@F:=FreeGroup("a","b");;a:=F.1;;b:=F.2;;rel:=[a^8,a^4*b^2,b^-1*a*b*a];;|
  !gapprompt@gap>| !gapinput@Q16:=F/rel;; QQ16:=GroupRing( Rationals, Q16 );;|
  !gapprompt@gap>| !gapinput@QS4:=GroupRing( Rationals, SymmetricGroup(4) );;|
  !gapprompt@gap>| !gapinput@WedderburnDecomposition(QQ16);|
  [ Rationals, Rationals, Rationals, Rationals, ( Rationals^[ 2, 2 ] ),
    <crossed product with center NF(8,[ 1, 7 ]) over AsField( NF(8,
      [ 1, 7 ]), CF(8) ) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( QS4 );|
  [ Rationals, Rationals, ( Rationals^[ 3, 3 ] ), ( Rationals^[ 3, 3 ] ),
    <crossed product with center Rationals over CF(3) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo(QQ16);|
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], 
    [ 2, Rationals ], [ 1, NF(8,[ 1, 7 ]), 8, [ 2, 7, 4 ] ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo(QS4);  |
  [ [ 1, Rationals ], [ 1, Rationals ], [ 3, Rationals ], [ 3, Rationals ], 
    [ 1, Rationals, 3, [ 2, 2, 0 ] ] ]
  
\end{Verbatim}
 In the previous example we computed the Wedderburn decomposition of the
rational group algebra ${\ensuremath{\mathbb Q}} Q_{16}$ of the quaternion group of order $16$ and the rational group algebra ${\ensuremath{\mathbb Q}} S_{4}$ of the symmetric group on four letters. For the two group algebras we used
both \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) and \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}). 

 The output of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) shows that 
\[ {\ensuremath{\mathbb Q}} Q_{16} = 4 {\ensuremath{\mathbb Q}} \oplus M_2(
{\ensuremath{\mathbb Q}} ) \oplus A, \]
 
\[ {\ensuremath{\mathbb Q}} S_{4} = 2 {\ensuremath{\mathbb Q}} \oplus 2 M_3(
{\ensuremath{\mathbb Q}} ) \oplus B, \]
 where $A$ and $B$ are \emph{crossed products} (\ref{CrossedProd}) with coefficients in the cyclotomic fields ${\ensuremath{\mathbb Q}} (\xi_8)$ and ${\ensuremath{\mathbb Q}} (\xi_3)$ respectively. This output can be used as a \textsf{GAP} object, but it does not give clear information on the structure of the
algebras $A$ and $B$. 

 The numerical information displayed by \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) means that 
\[ A = {\ensuremath{\mathbb Q}} (\xi|\xi^8=1)[g | \xi^g = \xi^7 = \xi^{-1}, g^2 =
\xi^4 = -1], \]
 
\[ B = {\ensuremath{\mathbb Q}} (\xi|\xi^3=1)[g | \xi^g = \xi^2 = \xi^{-1}, g^2 =
1]. \]
 Both $A$ and $B$ are quaternion algebras over its centre which is ${\ensuremath{\mathbb Q}} (\xi+\xi^{-1})$ and the former is equal to ${\ensuremath{\mathbb Q}} (\sqrt{2})$ and ${\ensuremath{\mathbb Q}}$ respectively. 

 In $B$, one has $(g+1)(g-1)=0$, while $g$ is neither $1$ nor $-1$. This shows that $B=M_2( {\ensuremath{\mathbb Q}} )$. However the relation $g^2=-1$ in $A$ shows that 
\[ A={\ensuremath{\mathbb Q}} (\sqrt{2})[i,g|i^2=g^2=-1,ig=-gi] \]
 and so $A$ is a division algebra with centre ${\ensuremath{\mathbb Q}} (\sqrt{2})$, which is a subalgebra of the algebra of Hamiltonian quaternions. This could
be deduced also using well known methods on cyclic algebras (see e.g. \cite{R}). 

 The next example shows the output of \texttt{WedderburnDecompositionInfo} for ${\ensuremath{\mathbb Q}} G$ and ${\ensuremath{\mathbb Q}} (\xi_3) G$, where $G=SmallGroup(48,15)$. The user can compare it with the output of \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition}) for the same group in the previous section. Notice that the last entry of the \emph{Wedderburn decomposition} (\ref{WedDec}) of ${\ensuremath{\mathbb Q}} G$ is not given as a matrix algebra of a cyclic algebra. However, the
corresponding entry of ${\ensuremath{\mathbb Q}} (\xi_3) G$ is a matrix algebra of a cyclic algebra. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo( GroupRing( Rationals, SmallGroup(48,15) ) );|
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], 
    [ 2, Rationals ], [ 1, Rationals, 3, [ 2, 2, 0 ] ], [ 2, CF(3) ], 
    [ 1, Rationals, 6, [ 2, 5, 0 ] ], [ 1, NF(8,[ 1, 7 ]), 8, [ 2, 7, 0 ] ], 
    [ 1, Rationals, 12, [ [ 2, 5, 9 ], [ 2, 7, 0 ] ], [ [ 9 ] ] ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo( GroupRing( CF(3), SmallGroup(48,15) ) );|
  [ [ 1, CF(3) ], [ 1, CF(3) ], [ 1, CF(3) ], [ 1, CF(3) ], [ 2, CF(3) ],
    [ 2, CF(3), 3, [ 1, 1, 0 ] ], [ 2, CF(3) ], [ 2, CF(3) ],
    [ 2, CF(3), 6, [ 1, 1, 0 ] ], [ 1, NF(24,[ 1, 7 ]), 8, [ 2, 7, 0 ] ],
    [ 2, CF(3), 12, [ 2, 7, 0 ] ] ]
  
\end{Verbatim}
 In some cases some of the first entries of the output of \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) are not integers and so the correspoding \emph{Wedderburn components} (\ref{WedDec}) are given as "fractional matrix algebras" of \emph{cyclotomic algebras} (\ref{Cyclotomic}). See \ref{WedDec} for a theoretical explanation of this phenomenon. In that case a warning
message will be displayed during the first call of \texttt{WedderburnDecompositionInfo}. 
\begin{Verbatim}[commandchars=@|H,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>H @gapinput|QG:=GroupRing(Rationals,SmallGroup(240,89));H
  <algebra-with-one over Rationals, with 2 generators>
  @gapprompt|gap>H @gapinput|WedderburnDecompositionInfo(QG);H
  Wedderga: Warning!!! 
  Some of the Wedderburn components displayed are FRACTIONAL MATRIX ALGEBRAS!!!
  
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals, 10, [ 4, 3, 5 ] ],
    [ 4, Rationals ], [ 4, Rationals ], [ 5, Rationals ], [ 5, Rationals ],
    [ 6, Rationals ], [ 1, NF(12,[ 1, 11 ]), 10, [ 4, 3, 5 ] ],
    [ 3/2, NF(8,[ 1, 7 ]), 10, [ 4, 3, 5 ] ] ]
  
\end{Verbatim}
 The interpretation of the output in the previous example gives rise to the
following \emph{Wedderburn decomposition} (\ref{WedDec}) of ${\ensuremath{\mathbb Q}} G$ for $G$ the small group $[240,89]$: 
\[ {\ensuremath{\mathbb Q}} G = 2 {\ensuremath{\mathbb Q}} \oplus 2 M_4(
{\ensuremath{\mathbb Q}} ) \oplus 2 M_5( {\ensuremath{\mathbb Q}} ) \oplus
M_6( {\ensuremath{\mathbb Q}} ) \oplus A \oplus B \oplus C \]
 where 
\[ A = {\ensuremath{\mathbb Q}} (\xi_{10})[u|\xi_{10}^u = \xi_{10}^3, u^4 = -1], \]
 $B$ is an algebra of degree $(4*2 )/2 = 4 $ which is \emph{Brauer equivalent} (\ref{Brauer}) to 
\[ B_1 = {\ensuremath{\mathbb Q}} (\xi_{60})[u,v|\xi_{60}^u = \xi_{60}^{13}, u^4
= \xi_{60}^5, \xi_{60}^v = \xi_{60}^{11}, v^2 = 1, vu=uv], \]
 and $C$ is an algebra of degree $(4*2)*3/4 = 6 $ which is \emph{Brauer equivalent} (\ref{Brauer}) to 
\[ C_1 = {\ensuremath{\mathbb Q}} (\xi_{60})[u,v|\xi_{60}^u = \xi_{60}^7, u^4 =
\xi_{60}^5, \xi_{60}^v = \xi_{60}^{31}, v^2 = 1, vu=uv]. \]
 The precise description of $B$ and $C$ requires the usage of "ad hoc" arguments. }

  
\section{\textcolor{Chapter }{Simple quotients}}\label{DecompSimple}
\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X7D06959F7D444C55}{}
{
  

\subsection{\textcolor{Chapter }{SimpleAlgebraByCharacter}}
\logpage{[ 2, 2, 1 ]}\nobreak
\hyperdef{L}{X8349114C83161C2D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByCharacter({\mdseries\slshape FG, chi})\index{SimpleAlgebraByCharacter@\texttt{SimpleAlgebraByCharacter}}
\label{SimpleAlgebraByCharacter}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A simple algebra. 



 The first input \mbox{\texttt{\mdseries\slshape FG}} should be a \emph{semisimple group algebra} (\ref{Semisimple}) over a finite group $G$ and the second input should be an irreducible character of $G$.

 The output is a matrix algebra of a \emph{cyclotomic algebras} (\ref{Cyclotomic}) which is isomorphic to the unique \emph{Wedderburn component} (\ref{WedDec}) $A$ of \mbox{\texttt{\mdseries\slshape FG}} such that $\chi(A)\ne 0$. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A5 := AlternatingGroup(5);|
  Alt( [ 1 .. 5 ] )
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacter( GroupRing( Rationals , A5 ) , Irr( A5 ) [3] );|
  ( NF(5,[ 1, 4 ])^[ 3, 3 ] )
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacter( GroupRing( GF(7) , A5 ) , Irr( A5 ) [3] );|
  ( GF(7^2)^[ 3, 3 ] )
  !gapprompt@gap>| !gapinput@G:=SmallGroup(128,100);|
  <pc group of size 128 with 7 generators>
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacter( GroupRing( Rationals , G ) , Irr(G)[19] );|
  <crossed product with center NF(8,[ 1, 3 ]) over AsField( NF(8,[ 1, 3 ]), CF(
  8) ) of a group of size 2>
  
\end{Verbatim}
 }

  

\subsection{\textcolor{Chapter }{SimpleAlgebraByCharacterInfo}}
\logpage{[ 2, 2, 2 ]}\nobreak
\hyperdef{L}{X876FD2367E64462D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByCharacterInfo({\mdseries\slshape FG, chi})\index{SimpleAlgebraByCharacterInfo@\texttt{SimpleAlgebraByCharacterInfo}}
\label{SimpleAlgebraByCharacterInfo}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The numerical description of the output of \texttt{SimpleAlgebraByCharacter} (\ref{SimpleAlgebraByCharacter}). 



 The first input \mbox{\texttt{\mdseries\slshape FG}} is a \emph{semisimple group algebra} (\ref{Semisimple}) over a finite group $G$ and the second input is an irreducible character of $G$. 

 The output is the numerical description \ref{NumDesc} of the \emph{cyclotomic algebra} (\ref{Cyclotomic}) which is isomorphic to the unique \emph{Wedderburn component} (\ref{WedDec}) $A$ of \mbox{\texttt{\mdseries\slshape FG}} such that $\chi(A)\ne 0$. 

 See \ref{NumDesc} for the interpretation of the numerical information given by the output. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(144,11);|
  <pc group of size 144 with 6 generators>
  !gapprompt@gap>| !gapinput@QG:=GroupRing(Rationals,G);|
  <algebra-with-one over Rationals, with 6 generators>
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacter( QG , Irr(G)[40] );|
  <crossed product with center NF(36,[ 1, 17 ]) over AsField( NF(36,
  [ 1, 17 ]), CF(36) ) of a group of size 2>
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacterInfo( QG , Irr(G)[48] );|
  [ 1, NF(9,[ 1, 8 ]), 18, [ 2, 17, 9 ] ]
  
\end{Verbatim}
 }

  

\subsection{\textcolor{Chapter }{SimpleAlgebraByStrongSP (for rational group algebra)}}
\logpage{[ 2, 2, 3 ]}\nobreak
\hyperdef{L}{X812D667D7D913EB5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSP({\mdseries\slshape QG, K, H})\index{SimpleAlgebraByStrongSP@\texttt{SimpleAlgebraByStrongSP}!for rational group algebra}
\label{SimpleAlgebraByStrongSP:for rational group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPNC({\mdseries\slshape QG, K, H})\index{SimpleAlgebraByStrongSPNC@\texttt{SimpleAlgebraByStrongSPNC}!for rational group algebra}
\label{SimpleAlgebraByStrongSPNC:for rational group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSP({\mdseries\slshape FG, K, H, C})\index{SimpleAlgebraByStrongSP@\texttt{SimpleAlgebraByStrongSP}!for semisimple finite group algebra}
\label{SimpleAlgebraByStrongSP:for semisimple finite group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPNC({\mdseries\slshape FG, K, H, C})\index{SimpleAlgebraByStrongSPNC@\texttt{SimpleAlgebraByStrongSPNC}!for semisimple finite group algebra}
\label{SimpleAlgebraByStrongSPNC:for semisimple finite group algebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A simple algebra. 



 In the three-argument version the input must be formed by a \emph{semisimple rational group algebra} \mbox{\texttt{\mdseries\slshape QG}} (see \ref{Semisimple}) and two subgroups \mbox{\texttt{\mdseries\slshape K}} and \mbox{\texttt{\mdseries\slshape H}} of $G$ which form a \emph{strong Shoda pair} (\ref{SSPDef}) of $G$. 

 The three-argument version returns the Wedderburn component (\ref{WedDec}) of the rational group algebra \mbox{\texttt{\mdseries\slshape QG}} realized by the strong Shoda pair (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}). 

 In the four-argument version the first argument is a semisimple finite group
algebra \mbox{\texttt{\mdseries\slshape FG}}, \mbox{\texttt{\mdseries\slshape (K,H)}} is a strong Shoda pair of $G$ and the fourth input data is either a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} or a representative of a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} (see \ref{CyclotomicClass}). 

 The four-argument version returns the Wedderburn component (\ref{WedDec}) of the finite group algebra \mbox{\texttt{\mdseries\slshape FG}} realized by the strong Shoda pair (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) and the cyclotomic class \mbox{\texttt{\mdseries\slshape C}} (or the cyclotomic class containing \mbox{\texttt{\mdseries\slshape C}}). 

 The versions ending in NC do not check if (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) is a strong Shoda pair of $G$. In the four-argument version it is also not checked whether \mbox{\texttt{\mdseries\slshape C}} is either a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} or an integer coprime to the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@F:=FreeGroup("a","b");; a:=F.1;; b:=F.2;;|
  !gapprompt@gap>| !gapinput@G:=F/[ a^16, b^2*a^8, b^-1*a*b*a^9 ];; a:=G.1;; b:=G.2;;|
  !gapprompt@gap>| !gapinput@K:=Subgroup(G,[a]);; H:=Subgroup(G,[]);;|
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, G );;|
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(7), G );;|
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSP( QG, K, H );|
  <crossed product over CF(16) of a group of size 2>
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSP( FG, K, H, [1,7] );|
  ( GF(7)^[ 2, 2 ] )
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSP( FG, K, H, 1 );|
  ( GF(7)^[ 2, 2 ] )
  
\end{Verbatim}
 }

  

\subsection{\textcolor{Chapter }{SimpleAlgebraByStrongSPInfo (for rational group algebra)}}
\logpage{[ 2, 2, 4 ]}\nobreak
\hyperdef{L}{X858152C882129A0B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPInfo({\mdseries\slshape QG, K, H})\index{SimpleAlgebraByStrongSPInfo@\texttt{SimpleAlgebraByStrongSPInfo}!for rational group algebra}
\label{SimpleAlgebraByStrongSPInfo:for rational group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPInfoNC({\mdseries\slshape QG, K, H})\index{SimpleAlgebraByStrongSPInfoNC@\texttt{SimpleAlgebraByStrongSPInfoNC}!for rational group algebra}
\label{SimpleAlgebraByStrongSPInfoNC:for rational group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPInfo({\mdseries\slshape FG, K, H, C})\index{SimpleAlgebraByStrongSPInfo@\texttt{SimpleAlgebraByStrongSPInfo}!for semisimple finite group algebra}
\label{SimpleAlgebraByStrongSPInfo:for semisimple finite group algebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleAlgebraByStrongSPInfoNC({\mdseries\slshape FG, K, H, C})\index{SimpleAlgebraByStrongSPInfoNC@\texttt{SimpleAlgebraByStrongSPInfoNC}!for semisimple finite group algebra}
\label{SimpleAlgebraByStrongSPInfoNC:for semisimple finite group algebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A numerical description of one simple algebra. 



 In the three-argument version the input must be formed by a \emph{semisimple rational group algebra} (\ref{Semisimple}) \mbox{\texttt{\mdseries\slshape QG}} and two subgroups \mbox{\texttt{\mdseries\slshape K}} and \mbox{\texttt{\mdseries\slshape H}} of $G$ which form a \emph{strong Shoda pair} (\ref{SSPDef}) of $G$. It returns the numerical information describing the Wedderburn component (\ref{NumDesc}) of the rational group algebra \mbox{\texttt{\mdseries\slshape QG}} realized by a the strong Shoda pair (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}). 

 In the four-argument version the first input is a semisimple finite group
algebra \mbox{\texttt{\mdseries\slshape FG}}, \mbox{\texttt{\mdseries\slshape (K,H)}} is a strong Shoda pair of $G$ and the fourth input data is either a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} or a representative of a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} (\ref{CyclotomicClass}). It returns a pair of positive integers $[n,r]$ which represent the $n\times n$ matrix algebra over the field of order $r$ which is isomorphic to the Wedderburn component of \mbox{\texttt{\mdseries\slshape FG}} realized by a the strong Shoda pair (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) and the cyclotomic class \mbox{\texttt{\mdseries\slshape C}} (or the cyclotomic class containing the integer \mbox{\texttt{\mdseries\slshape C}}). 

 The versions ending in NC do not check if (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) is a strong Shoda pair of $G$. In the four-argument version it is also not checked whether \mbox{\texttt{\mdseries\slshape C}} is either a generating $q$-cyclotomic class modulo the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}} or an integer coprime with the index of \mbox{\texttt{\mdseries\slshape H}} in \mbox{\texttt{\mdseries\slshape K}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@F:=FreeGroup("a","b");; a:=F.1;; b:=F.2;;|
  !gapprompt@gap>| !gapinput@G:=F/[ a^16, b^2*a^8, b^-1*a*b*a^9 ];; a:=G.1;; b:=G.2;;|
  !gapprompt@gap>| !gapinput@K:=Subgroup(G,[a]);; H:=Subgroup(G,[]);; |
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, G );;|
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(7), G );;|
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSP( QG, K, H );|
  <crossed product over CF(16) of a group of size 2>
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSPInfo( QG, K, H );|
  [ 1, NF(16,[ 1, 7 ]), 16, [ [ 2, 7, 8 ] ], [  ] ]
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSPInfo( FG, K, H, [1,7] );|
  [ 2, 7 ]
  !gapprompt@gap>| !gapinput@SimpleAlgebraByStrongSPInfo( FG, K, H, 1 );|
  [ 2, 7 ]
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Strong Shoda pairs}}\label{SSP}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X81DAF5267D30C83A}{}
{
  
\section{\textcolor{Chapter }{Computing strong Shoda pairs}}\label{SSPSSP}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X807C74B07C4B99AF}{}
{
  

\subsection{\textcolor{Chapter }{StrongShodaPairs}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X820A398687A79B9D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{StrongShodaPairs({\mdseries\slshape G})\index{StrongShodaPairs@\texttt{StrongShodaPairs}}
\label{StrongShodaPairs}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
 A list of pairs of subgroups of the input group. 



 The input should be a finite group \mbox{\texttt{\mdseries\slshape G}}. 

 Computes a list of representatives of the equivalence classes of \emph{strong Shoda pairs} (\ref{SSPDef}) of a finite group \mbox{\texttt{\mdseries\slshape G}}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@StrongShodaPairs( SymmetricGroup(4) );|
  [ [ Sym( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,3)(2,4), (2,4,3), (3,4) ]) ],
    [ Sym( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,3)(2,4), (2,4,3) ]) ],
    [ Group([ (3,4), (1,3,2,4) ]), Group([ (1,3,2,4), (1,2)(3,4) ]) ],
    [ Group([ (1,3,2,4), (3,4) ]), Group([ (3,4), (1,2)(3,4) ]) ],
    [ Group([ (2,4,3), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]) ] ]
  !gapprompt@gap>| !gapinput@StrongShodaPairs( DihedralGroup(64) );|
  [ [ <pc group of size 64 with 6 generators>,
        Group([ f6, f5, f4, f3, f1, f2 ]) ],
    [ <pc group of size 64 with 6 generators>, Group([ f6, f5, f4, f3, f1*f2 ])
       ],
    [ <pc group of size 64 with 6 generators>, Group([ f6, f5, f4, f3, f2 ]) ],
    [ <pc group of size 64 with 6 generators>, Group([ f6, f5, f4, f3, f1 ]) ],
    [ Group([ f1*f2, f4*f5*f6, f5*f6, f6, f3, f3 ]),
        Group([ f6, f5, f4, f1*f2 ]) ],
    [ Group([ f6, f5, f2, f3, f4 ]), Group([ f6, f5 ]) ],
    [ Group([ f6, f2, f3, f4, f5 ]), Group([ f6 ]) ],
    [ Group([ f2, f3, f4, f5, f6 ]), Group([  ]) ] ]
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Properties related with Shoda pairs}}\label{IsSSP}
\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X7B49C1BC834E57E3}{}
{
  

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


 The first argument should be a finite group \mbox{\texttt{\mdseries\slshape G}}, the second one a sugroup \mbox{\texttt{\mdseries\slshape K}} of \mbox{\texttt{\mdseries\slshape G}} and the third one a subgroup of \mbox{\texttt{\mdseries\slshape K}}. 

 Returns \texttt{true} if (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) is a \emph{strong Shoda pair} (\ref{SSPDef}) of \mbox{\texttt{\mdseries\slshape G}}, and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SymmetricGroup(3);; K:=Group([(1,2,3)]);; H:=Group( () );;|
  !gapprompt@gap>| !gapinput@IsStrongShodaPair( G, K, H );|
  true
  !gapprompt@gap>| !gapinput@IsStrongShodaPair( G, G, H );|
  false
  !gapprompt@gap>| !gapinput@IsStrongShodaPair( G, K, K );|
  false
  !gapprompt@gap>| !gapinput@IsStrongShodaPair( G, G, K );|
  true
  
\end{Verbatim}
 }

 

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


 The first argument should be a finite group \mbox{\texttt{\mdseries\slshape G}}, the second a subgroup \mbox{\texttt{\mdseries\slshape K}} of \mbox{\texttt{\mdseries\slshape G}} and the third one a subgroup of \mbox{\texttt{\mdseries\slshape K}}. 

 Returns \texttt{true} if (\mbox{\texttt{\mdseries\slshape K}},\mbox{\texttt{\mdseries\slshape H}}) is a \emph{Shoda pair} (\ref{SPDef}) of \mbox{\texttt{\mdseries\slshape G}}.

 Note that every strong Shoda pair is a Shoda pair, but the converse is not
true. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=AlternatingGroup(5);;|
  !gapprompt@gap>| !gapinput@K:=AlternatingGroup(4);;|
  !gapprompt@gap>| !gapinput@H := Group( (1,2)(3,4), (1,3)(2,4) );;|
  !gapprompt@gap>| !gapinput@IsStrongShodaPair( G, K, H );|
  false
  !gapprompt@gap>| !gapinput@IsShodaPair( G, K, H );|
  true
  
\end{Verbatim}
 }

 \newpage 

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


 The input \mbox{\texttt{\mdseries\slshape G}} should be a finite group. 

 Returns \texttt{true} if \mbox{\texttt{\mdseries\slshape G}} is a \emph{strongly monomial} (\ref{StMon}) finite group. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@S4:=SymmetricGroup(4);;|
  !gapprompt@gap>| !gapinput@IsStronglyMonomial(S4);|
  true
  !gapprompt@gap>| !gapinput@G:=SmallGroup(24,3);;|
  !gapprompt@gap>| !gapinput@IsStronglyMonomial(G);|
  false
  !gapprompt@gap>| !gapinput@IsMonomial(G);|
  false
  !gapprompt@gap>| !gapinput@G:=SmallGroup(1000,86);;|
  !gapprompt@gap>| !gapinput@IsMonomial(G);|
  true
  !gapprompt@gap>| !gapinput@IsStronglyMonomial(G);|
  false
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Idempotents}}\label{Idemp}
\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X7C651C9C78398FFF}{}
{
  
\section{\textcolor{Chapter }{Computing idempotents from character table}}\label{IdempotIrr}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X7DF49142844C278D}{}
{
  

\subsection{\textcolor{Chapter }{PrimitiveCentralIdempotentsByCharacterTable}}
\logpage{[ 4, 1, 1 ]}\nobreak
\hyperdef{L}{X7BBEB4A084DBF0D6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimitiveCentralIdempotentsByCharacterTable({\mdseries\slshape FG})\index{PrimitiveCentralIdempotentsByCharacterTable@\texttt{Primitive}\-\texttt{Central}\-\texttt{Idempotents}\-\texttt{By}\-\texttt{Character}\-\texttt{Table}}
\label{PrimitiveCentralIdempotentsByCharacterTable}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of group algebra elements. 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a semisimple group algebra. 

 Returns the list of primitive central idempotents of \mbox{\texttt{\mdseries\slshape FG}} using the character table of $G$ (\ref{Idempotents}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QS3 := GroupRing( Rationals, SymmetricGroup(3) );;                 |
  !gapprompt@gap>| !gapinput@PrimitiveCentralIdempotentsByCharacterTable( QS3 );|
  [ (1/6)*()+(-1/6)*(2,3)+(-1/6)*(1,2)+(1/6)*(1,2,3)+(1/6)*(1,3,2)+(-1/6)*(1,3),
    (2/3)*()+(-1/3)*(1,2,3)+(-1/3)*(1,3,2), (1/6)*()+(1/6)*(2,3)+(1/6)*(1,2)+(1/
      6)*(1,2,3)+(1/6)*(1,3,2)+(1/6)*(1,3) ]
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals , SmallGroup(24,3) );|
  <algebra-with-one over Rationals, with 4 generators>
  !gapprompt@gap>| !gapinput@FG:=GroupRing( CF(3) , SmallGroup(24,3) );|
  <algebra-with-one over CF(3), with 4 generators>
  !gapprompt@gap>| !gapinput@pciQG := PrimitiveCentralIdempotentsByCharacterTable(QG);;|
  !gapprompt@gap>| !gapinput@pciFG := PrimitiveCentralIdempotentsByCharacterTable(FG);;|
  !gapprompt@gap>| !gapinput@Length(pciQG);|
  5
  !gapprompt@gap>| !gapinput@Length(pciFG);|
  7
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Testing lists of idempotents for completeness}}\label{IdempotTesting}
\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X83F7CF1E87D02581}{}
{
  

\subsection{\textcolor{Chapter }{IsCompleteSetOfOrthogonalIdempotents}}
\logpage{[ 4, 2, 1 ]}\nobreak
\hyperdef{L}{X81FCD27E812078F0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsCompleteSetOfOrthogonalIdempotents({\mdseries\slshape R, list})\index{IsCompleteSetOfOrthogonalIdempotents@\texttt{IsComplete}\-\texttt{Set}\-\texttt{Of}\-\texttt{Orthogonal}\-\texttt{Idempotents}}
\label{IsCompleteSetOfOrthogonalIdempotents}
}\hfill{\scriptsize (operation)}}\\


 The input should be formed by a unital ring \mbox{\texttt{\mdseries\slshape R}} and a list \mbox{\texttt{\mdseries\slshape list}} of elements of \mbox{\texttt{\mdseries\slshape R}}. 

 Returns \texttt{true} if the list \mbox{\texttt{\mdseries\slshape list}} is a complete list of orthogonal idempotents of \mbox{\texttt{\mdseries\slshape R}}. That is, the output is \texttt{true} provided the following conditions are satisfied:

 $\cdot$ The sum of the elements of \mbox{\texttt{\mdseries\slshape list}} is the identity of \mbox{\texttt{\mdseries\slshape R}}, 

 $\cdot$ $e^2=e$, for every $e$ in \mbox{\texttt{\mdseries\slshape list}} and 

 $\cdot$ $e*f=0$, if $e$ and $f$ are elements in different positions of \mbox{\texttt{\mdseries\slshape list}}. 

 No claim is made on the idempotents being central or primitive. 

 Note that the if a non-zero element $t$ of \mbox{\texttt{\mdseries\slshape R}} appears in two different positions of \mbox{\texttt{\mdseries\slshape list}} then the output is \texttt{false}, and that the list \mbox{\texttt{\mdseries\slshape list}} must not contain zeroes. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QS5 := GroupRing( Rationals, SymmetricGroup(5) );;|
  !gapprompt@gap>| !gapinput@idemp := PrimitiveCentralIdempotentsByCharacterTable( QS5 );;|
  !gapprompt@gap>| !gapinput@IsCompleteSetOfOrthogonalIdempotents( QS5, idemp );|
  true
  !gapprompt@gap>| !gapinput@IsCompleteSetOfOrthogonalIdempotents( QS5, [ One( QS5 ) ] );|
  true
  !gapprompt@gap>| !gapinput@IsCompleteSetOfOrthogonalIdempotents( QS5, [ One( QS5 ), One( QS5 ) ] );|
  false
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Idempotents from Shoda pairs}}\label{IdempotShoda}
\logpage{[ 4, 3, 0 ]}
\hyperdef{L}{X7C66102485AF5F80}{}
{
  

\subsection{\textcolor{Chapter }{PrimitiveCentralIdempotentsByStrongSP}}
\logpage{[ 4, 3, 1 ]}\nobreak
\hyperdef{L}{X7B48EE1A7ECAB151}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimitiveCentralIdempotentsByStrongSP({\mdseries\slshape FG})\index{PrimitiveCentralIdempotentsByStrongSP@\texttt{Primitive}\-\texttt{Central}\-\texttt{Idempotents}\-\texttt{By}\-\texttt{StrongSP}}
\label{PrimitiveCentralIdempotentsByStrongSP}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
 A list of group algebra elements. 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a semisimple group algebra of a finite group $G$ whose coefficient field $F$ is either a finite field or the field ${\ensuremath{\mathbb Q}}$ of rationals. 

 If $ F = {\ensuremath{\mathbb Q}} $ then the output is the list of primitive central idempotents of the group
algebra \mbox{\texttt{\mdseries\slshape FG}} realizable by strong Shoda pairs (\ref{SSPDef}) of $G$. 

 If $F$ is a finite field then the output is the list of primitive central idempotents
of \mbox{\texttt{\mdseries\slshape FG}} realizable by strong Shoda pairs $(K,H)$ of $G$ and $q$-cyclotomic classes modulo the index of $H$ in $K$ (\ref{CyclotomicClass}). 

 If the list of primitive central idempotents given by the output is not
complete (i.e. if the group $G$ is not \emph{strongly monomial} (\ref{StMon})) then a warning is displayed. 
\begin{Verbatim}[commandchars=@|D,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>D @gapinput|QG:=GroupRing( Rationals, AlternatingGroup(4) );;           D
  @gapprompt|gap>D @gapinput|PrimitiveCentralIdempotentsByStrongSP( QG );D
  [ (1/12)*()+(1/12)*(2,3,4)+(1/12)*(2,4,3)+(1/12)*(1,2)(3,4)+(1/12)*(1,2,3)+(1/
      12)*(1,2,4)+(1/12)*(1,3,2)+(1/12)*(1,3,4)+(1/12)*(1,3)(2,4)+(1/12)*
      (1,4,2)+(1/12)*(1,4,3)+(1/12)*(1,4)(2,3),
    (1/6)*()+(-1/12)*(2,3,4)+(-1/12)*(2,4,3)+(1/6)*(1,2)(3,4)+(-1/12)*(1,2,3)+(
      -1/12)*(1,2,4)+(-1/12)*(1,3,2)+(-1/12)*(1,3,4)+(1/6)*(1,3)(2,4)+(-1/12)*
      (1,4,2)+(-1/12)*(1,4,3)+(1/6)*(1,4)(2,3),
    (3/4)*()+(-1/4)*(1,2)(3,4)+(-1/4)*(1,3)(2,4)+(-1/4)*(1,4)(2,3) ]
  @gapprompt|gap>D @gapinput|QG := GroupRing( Rationals, SmallGroup(24,3) );;D
  @gapprompt|gap>D @gapinput|PrimitiveCentralIdempotentsByStrongSP( QG );;D
  Wedderga: Warning!!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input! 
  @gapprompt|gap>D @gapinput|FG := GroupRing( GF(2), Group((1,2,3)) );;D
  @gapprompt|gap>D @gapinput|PrimitiveCentralIdempotentsByStrongSP( FG );D
  [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2), 
    (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2) ]
  @gapprompt|gap>D @gapinput|FG := GroupRing( GF(5), SmallGroup(24,3) );; D
  @gapprompt|gap>D @gapinput|PrimitiveCentralIdempotentsByStrongSP( FG );;D
  Wedderga: Warning!!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input! 
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{PrimitiveCentralIdempotentsBySP}}
\logpage{[ 4, 3, 2 ]}\nobreak
\hyperdef{L}{X82460B1285A0A7D7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimitiveCentralIdempotentsBySP({\mdseries\slshape QG})\index{PrimitiveCentralIdempotentsBySP@\texttt{PrimitiveCentralIdempotentsBySP}}
\label{PrimitiveCentralIdempotentsBySP}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:\ }
 A list of group algebra elements. 



 The input should be a rational group algebra of a finite group $G$. 

 Returns a list containing all the primitive central idempotents $e$ of the rational group algebra \mbox{\texttt{\mdseries\slshape QG}} such that $\chi(e)\ne 0$ for some irreducible monomial character $\chi$ of $G$. 

 The output is the list of all primitive central idempotents of \mbox{\texttt{\mdseries\slshape QG}} if and only if $G$ is monomial, otherwise a warning message is displayed. 
\begin{Verbatim}[commandchars=@|A,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>A @gapinput|QG := GroupRing( Rationals, SymmetricGroup(4) );A
  <algebra-with-one over Rationals, with 2 generators>
  @gapprompt|gap>A @gapinput|pci:=PrimitiveCentralIdempotentsBySP( QG );A
  [ (1/24)*()+(1/24)*(3,4)+(1/24)*(2,3)+(1/24)*(2,3,4)+(1/24)*(2,4,3)+(1/24)*
      (2,4)+(1/24)*(1,2)+(1/24)*(1,2)(3,4)+(1/24)*(1,2,3)+(1/24)*(1,2,3,4)+(1/
      24)*(1,2,4,3)+(1/24)*(1,2,4)+(1/24)*(1,3,2)+(1/24)*(1,3,4,2)+(1/24)*
      (1,3)+(1/24)*(1,3,4)+(1/24)*(1,3)(2,4)+(1/24)*(1,3,2,4)+(1/24)*(1,4,3,2)+(
      1/24)*(1,4,2)+(1/24)*(1,4,3)+(1/24)*(1,4)+(1/24)*(1,4,2,3)+(1/24)*(1,4)
      (2,3), (1/24)*()+(-1/24)*(3,4)+(-1/24)*(2,3)+(1/24)*(2,3,4)+(1/24)*
      (2,4,3)+(-1/24)*(2,4)+(-1/24)*(1,2)+(1/24)*(1,2)(3,4)+(1/24)*(1,2,3)+(-1/
      24)*(1,2,3,4)+(-1/24)*(1,2,4,3)+(1/24)*(1,2,4)+(1/24)*(1,3,2)+(-1/24)*
      (1,3,4,2)+(-1/24)*(1,3)+(1/24)*(1,3,4)+(1/24)*(1,3)(2,4)+(-1/24)*
      (1,3,2,4)+(-1/24)*(1,4,3,2)+(1/24)*(1,4,2)+(1/24)*(1,4,3)+(-1/24)*(1,4)+(
      -1/24)*(1,4,2,3)+(1/24)*(1,4)(2,3), (3/8)*()+(-1/8)*(3,4)+(-1/8)*(2,3)+(
      -1/8)*(2,4)+(-1/8)*(1,2)+(-1/8)*(1,2)(3,4)+(1/8)*(1,2,3,4)+(1/8)*
      (1,2,4,3)+(1/8)*(1,3,4,2)+(-1/8)*(1,3)+(-1/8)*(1,3)(2,4)+(1/8)*(1,3,2,4)+(
      1/8)*(1,4,3,2)+(-1/8)*(1,4)+(1/8)*(1,4,2,3)+(-1/8)*(1,4)(2,3), 
    (3/8)*()+(1/8)*(3,4)+(1/8)*(2,3)+(1/8)*(2,4)+(1/8)*(1,2)+(-1/8)*(1,2)(3,4)+(
      -1/8)*(1,2,3,4)+(-1/8)*(1,2,4,3)+(-1/8)*(1,3,4,2)+(1/8)*(1,3)+(-1/8)*(1,3)
      (2,4)+(-1/8)*(1,3,2,4)+(-1/8)*(1,4,3,2)+(1/8)*(1,4)+(-1/8)*(1,4,2,3)+(-1/
      8)*(1,4)(2,3), (1/6)*()+(-1/12)*(2,3,4)+(-1/12)*(2,4,3)+(1/6)*(1,2)(3,4)+(
      -1/12)*(1,2,3)+(-1/12)*(1,2,4)+(-1/12)*(1,3,2)+(-1/12)*(1,3,4)+(1/6)*(1,3)
      (2,4)+(-1/12)*(1,4,2)+(-1/12)*(1,4,3)+(1/6)*(1,4)(2,3) ]
  @gapprompt|gap>A @gapinput|IsCompleteSetOfPCIs(QG,pci);A
  true
  @gapprompt|gap>A @gapinput|QS5 := GroupRing( Rationals, SymmetricGroup(5) );;A
  @gapprompt|gap>A @gapinput|pci:=PrimitiveCentralIdempotentsBySP( QS5 );;A
  Wedderga: Warning!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input!
  @gapprompt|gap>A @gapinput|IsCompleteSetOfPCIs( QS5 , pci );A
  false
  
\end{Verbatim}
 The output of \texttt{PrimitiveCentralIdempotentsBySP} contains the output of \texttt{PrimitiveCentralIdempotentsByStrongSP} (\ref{PrimitiveCentralIdempotentsByStrongSP}), possibly properly. 
\begin{Verbatim}[commandchars=@|A,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>A @gapinput|QG := GroupRing( Rationals, SmallGroup(48,28) );;A
  @gapprompt|gap>A @gapinput|pci:=PrimitiveCentralIdempotentsBySP( QG );;A
  Wedderga: Warning!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input! 
  @gapprompt|gap>A @gapinput|Length(pci);    A
  6
  @gapprompt|gap>A @gapinput|spci:=PrimitiveCentralIdempotentsByStrongSP( QG );;  A
  Wedderga: Warning!!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input! 
  @gapprompt|gap>A @gapinput|Length(spci);A
  5
  @gapprompt|gap>A @gapinput|IsSubset(pci,spci);          A
  true
  @gapprompt|gap>A @gapinput|QG:=GroupRing(Rationals,SmallGroup(1000,86));A
  <algebra-with-one over Rationals, with 6 generators>
  @gapprompt|gap>A @gapinput|IsCompleteSetOfPCIs( QG , PrimitiveCentralIdempotentsBySP(QG) );A
  true
  @gapprompt|gap>A @gapinput|IsCompleteSetOfPCIs( QG , PrimitiveCentralIdempotentsByStrongSP(QG) );A
  Wedderga: Warning!!!
  The output is a NON-COMPLETE list of prim. central idemp.s of the input!
  false
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Complete set of orthogonal primitive idempotents from Shoda pairs and
cyclotomic classes}}\label{PI}
\logpage{[ 4, 4, 0 ]}
\hyperdef{L}{X8577F9547FC58C4C}{}
{
  

\subsection{\textcolor{Chapter }{PrimitiveIdempotentsNilpotent}}
\logpage{[ 4, 4, 1 ]}\nobreak
\hyperdef{L}{X7E95CDF17C4D54DB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimitiveIdempotentsNilpotent({\mdseries\slshape FG, H, K, C, arg})\index{PrimitiveIdempotentsNilpotent@\texttt{PrimitiveIdempotentsNilpotent}}
\label{PrimitiveIdempotentsNilpotent}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of orthogonal primitive idempotents. 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a semisimple group algebra of a finite nilpotent group $G$ whose coefficient field $F$ is a finite field. \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape K}} should form a strong Shoda pair $(H,K)$ of $G$. \mbox{\texttt{\mdseries\slshape arg}} is a list containing an epimorphism map \mbox{\texttt{\mdseries\slshape epi}} from $N_G(K)$ to $N_G(K)/K$ and a generator \mbox{\texttt{\mdseries\slshape gq}} of $H/K$. $C$ is the $|F|$-cyclotomic class modulo $[H:K]$ (w.r.t. the generator $gq$ of $H/K$) 

 The output is a complete set of orthogonal primitive idempotents of the simple
algebra $FGe_C(G,H,K)$ (\ref{TheoryPI}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(8);; |
  !gapprompt@gap>| !gapinput@F:=GF(3);;                     |
  !gapprompt@gap>| !gapinput@FG:=GroupRing(F,G);;|
  !gapprompt@gap>| !gapinput@H:=StrongShodaPairs(G)[5][1];|
  Group([ f1*f2, f3, f3 ])
  !gapprompt@gap>| !gapinput@K:=StrongShodaPairs(G)[5][2];|
  Group([ f1*f2 ])
  !gapprompt@gap>| !gapinput@N:=Normalizer(G,K); |
  Group([ f1*f2*f3, f3 ])
  !gapprompt@gap>| !gapinput@epi:=NaturalHomomorphismByNormalSubgroup(N,K);|
  [ f1*f2*f3, f3 ] -> [ f1, f1 ]
  !gapprompt@gap>| !gapinput@QHK:=Image(epi,H); |
  Group([ <identity> of ..., f1, f1 ])
  !gapprompt@gap>| !gapinput@gq:=MinimalGeneratingSet(QHK)[1]; |
  f1
  !gapprompt@gap>| !gapinput@C:=CyclotomicClasses(Size(F),Index(H,K))[2];|
  [ 1 ]
  !gapprompt@gap>| !gapinput@PrimitiveIdempotentsNilpotent(FG,H,K,C,[epi,gq]);|
  [ (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3)^0)*f1*f2+(Z(3))*f1*f2*f3, 
    (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3))*f1*f2+(Z(3)^0)*f1*f2*f3 ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{PrimitiveIdempotentsTrivialTwisting}}
\logpage{[ 4, 4, 2 ]}\nobreak
\hyperdef{L}{X8784570980B9B750}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PrimitiveIdempotentsTrivialTwisting({\mdseries\slshape FG, H, K, C, arg})\index{PrimitiveIdempotentsTrivialTwisting@\texttt{PrimitiveIdempotentsTrivialTwisting}}
\label{PrimitiveIdempotentsTrivialTwisting}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of orthogonal primitive idempotents. 



 The input \mbox{\texttt{\mdseries\slshape FG}} should be a semisimple group algebra of a finite group $G$ whose coefficient field $F$ is a finite field. \mbox{\texttt{\mdseries\slshape H}} and \mbox{\texttt{\mdseries\slshape K}} should form a strong Shoda pair $(H,K)$ of $G$. \mbox{\texttt{\mdseries\slshape arg}} is a list containing an epimorphism map \mbox{\texttt{\mdseries\slshape epi}} from $N_G(K)$ to $N_G(K)/K$ and a generator \mbox{\texttt{\mdseries\slshape gq}} of $H/K$. $C$ is the $|F|$-cyclotomic class modulo $[H:K]$ (w.r.t. the generator $gq$ of $H/K$). The input parameters should be such that the simple component $FGe_C(G,H,K)$ has a trivial twisting. 

 The output is a complete set of orthogonal primitive idempotents of the simple
algebra $FGe_C(G,H,K)$ (\ref{TheoryPI}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(8);; |
  !gapprompt@gap>| !gapinput@F:=GF(3);;                     |
  !gapprompt@gap>| !gapinput@FG:=GroupRing(F,G);;|
  !gapprompt@gap>| !gapinput@H:=StrongShodaPairs(G)[5][1];|
  Group([ f1*f2, f3, f3 ])
  !gapprompt@gap>| !gapinput@K:=StrongShodaPairs(G)[5][2];|
  Group([ f1*f2 ])
  !gapprompt@gap>| !gapinput@N:=Normalizer(G,K); |
  Group([ f1*f2*f3, f3 ])
  !gapprompt@gap>| !gapinput@epi:=NaturalHomomorphismByNormalSubgroup(N,K);|
  [ f1*f2*f3, f3 ] -> [ f1, f1 ]
  !gapprompt@gap>| !gapinput@QHK:=Image(epi,H); |
  Group([ <identity> of ..., f1, f1 ])
  !gapprompt@gap>| !gapinput@gq:=MinimalGeneratingSet(QHK)[1]; |
  f1
  !gapprompt@gap>| !gapinput@C:=CyclotomicClasses(Size(F),Index(H,K))[2];|
  [ 1 ]
  !gapprompt@gap>| !gapinput@PrimitiveIdempotentsTrivialTwisting(FG,H,K,C,[epi,gq]);|
  [ (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3)^0)*f1*f2+(Z(3))*f1*f2*f3, 
    (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3))*f1*f2+(Z(3)^0)*f1*f2*f3 ]
  
\end{Verbatim}
 }

 }

 }

    
\chapter{\textcolor{Chapter }{Crossed products and their elements}}\label{Crossed}
\logpage{[ 5, 0, 0 ]}
\hyperdef{L}{X812A5A097EADEB5E}{}
{
  The package \textsf{Wedderga} provides functions to construct crossed products over a group with
coefficients in an associative ring with identity, and with the multiplication
determined by a given action and twisting (see \ref{CrossedProd} for definitions). This can be done using the function \texttt{CrossedProduct} (\ref{CrossedProduct}).

 Note that this function does not check the associativity conditions, so in
fact it is the NC-version of itself, and its output will be always assumed to
be associative. For all crossed products that appear in \textsf{Wedderga} algorithms the associativity follows from theoretical arguments, so the usage
of the NC-method in the package is safe. If the user will try to construct a
crossed product with his own action and twisting, he/she should check the
associativity conditions himself/herself to make sure that the result is
correct. 
\section{\textcolor{Chapter }{Construction of crossed products}}\label{CrossedConstruction}
\logpage{[ 5, 1, 0 ]}
\hyperdef{L}{X79122C7F877430A7}{}
{
  

\subsection{\textcolor{Chapter }{CrossedProduct}}
\logpage{[ 5, 1, 1 ]}\nobreak
\hyperdef{L}{X797F31EF7B51A4DF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CrossedProduct({\mdseries\slshape R, G, act, twist})\index{CrossedProduct@\texttt{CrossedProduct}}
\label{CrossedProduct}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
 Ring in the category \texttt{IsCrossedProduct}. 



 The input should be formed by: 

 * an associative ring \mbox{\texttt{\mdseries\slshape R}}, 

 * a group \mbox{\texttt{\mdseries\slshape G}}, 

 * a function \mbox{\texttt{\mdseries\slshape act(RG,g)}} of two arguments: the crossed product \mbox{\texttt{\mdseries\slshape RG}} and an element \mbox{\texttt{\mdseries\slshape g}} in $G$. It must return a mapping from \mbox{\texttt{\mdseries\slshape R}} to \mbox{\texttt{\mdseries\slshape R}} which can be applied via the "\texttt{\texttt{\symbol{92}}\texttt{\symbol{94}}}" operation, and 

 * a function \mbox{\texttt{\mdseries\slshape twist(RG,g,h)}} of three arguments: the crossed product \mbox{\texttt{\mdseries\slshape RG}} and a pair of elements of \mbox{\texttt{\mdseries\slshape G}}. It must return an invertible element of \mbox{\texttt{\mdseries\slshape R}}. 

 

 Returns the crossed product of \mbox{\texttt{\mdseries\slshape G}} over the ring \mbox{\texttt{\mdseries\slshape R}} with action \mbox{\texttt{\mdseries\slshape act}} and twisting \mbox{\texttt{\mdseries\slshape twist}}. 

 The resulting crossed product belongs to the category \index{IsCrossedProduct@\texttt{IsCrossedProduct}} \texttt{IsCrossedProduct}, which is defined as a subcategory of \texttt{IsFLMLORWithOne}. 

 An example of the trivial action: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  act := function(RG,a)
      return IdentityMapping( LeftActingDomain( RG ) );
  end;
\end{Verbatim}
 and the trivial twisting: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  twist := function( RG , g, h )
      return One( LeftActingDomain( RG ) );
  end;
\end{Verbatim}
 Let $n$ be a positive integer and $\xi_n$ an $n$-th complex primitive root of unity. The natural action of the group of units
of ${\ensuremath{\mathbb Z}}_n$, the ring of integers modulo $n$, on ${\ensuremath{\mathbb Q}} (\xi_n)$ can be defined as follows: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  act := function(RG,a)
      return ANFAutomorhism( LeftActingDomain( RG ) , Int( a ) );
  end;
\end{Verbatim}
 In the following example one constructs the Hamiltonian quaternion algebra
over the rationals as a crossed product of the group of units of the cyclic
group of order 2 over ${\ensuremath{\mathbb Q}} (i)=GaussianRationals$. One realizes the cyclic group of order 2 as the group of units of ${\ensuremath{\mathbb Z}} / 4 {\ensuremath{\mathbb Z}}$ and one uses the natural isomorphism ${\ensuremath{\mathbb Z}} / 4 {\ensuremath{\mathbb Z}} \rightarrow Gal(
{\ensuremath{\mathbb Q}} (i)/ {\ensuremath{\mathbb Q}} )$ to describe the action. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@R := GaussianRationals;|
  GaussianRationals
  !gapprompt@gap>| !gapinput@G := Units( ZmodnZ(4) );|
  <group of size 2 with 1 generators>
  !gapprompt@gap>| !gapinput@act := function(RG,g)|
  !gapprompt@>| !gapinput@return ANFAutomorphism( LeftActingDomain(RG), Int(g) );|
  !gapprompt@>| !gapinput@end;|
  function( RG, g ) ... end
  !gapprompt@gap>| !gapinput@twist1 := function( RG, g, h )|
  !gapprompt@>| !gapinput@if IsOne(g) or IsOne(h) then|
  !gapprompt@>| !gapinput@   return One(LeftActingDomain(RG));|
  !gapprompt@>| !gapinput@else|
  !gapprompt@>| !gapinput@   return -One(LeftActingDomain(RG));|
  !gapprompt@>| !gapinput@fi;|
  !gapprompt@>| !gapinput@end;|
  function( RG, g, h ) ... end
  !gapprompt@gap>| !gapinput@RG := CrossedProduct( R, G, act, twist1 );|
  <crossed product over GaussianRationals of a group of size 2>
  !gapprompt@gap>| !gapinput@i := E(4) * One(G)^Embedding(G,RG); |
  (ZmodnZObj( 1, 4 ))*(E(4))
  !gapprompt@gap>| !gapinput@j := ZmodnZObj(3,4)^Embedding(G,RG); |
  (ZmodnZObj( 3, 4 ))*(1)
  !gapprompt@gap>| !gapinput@i^2;|
  (ZmodnZObj( 1, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@j^2;|
  (ZmodnZObj( 1, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@i*j+j*i;  |
  <zero> of ...
  
\end{Verbatim}
 One can construct the following generalized quaternion algebra with the same
action and a different twisting 
\[ {\ensuremath{\mathbb Q}} (i,j|i^2=-1,j^2=-3,ji=-ij) \]
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@twist2:=function(RG,g,h)|
  !gapprompt@>| !gapinput@if IsOne(g) or IsOne(h) then|
  !gapprompt@>| !gapinput@    return One(LeftActingDomain( RG ));|
  !gapprompt@>| !gapinput@else|
  !gapprompt@>| !gapinput@    return -3*One(LeftActingDomain( RG ));|
  !gapprompt@>| !gapinput@fi;|
  !gapprompt@>| !gapinput@end;|
  function( RG, g, h ) ... end
  !gapprompt@gap>| !gapinput@RG := CrossedProduct( R, G, act, twist2 );  |
  <crossed product over GaussianRationals of a group of size 2>
  !gapprompt@gap>| !gapinput@i := E(4) * One(G)^Embedding(G,RG); |
  (ZmodnZObj( 1, 4 ))*(E(4))
  !gapprompt@gap>| !gapinput@j := ZmodnZObj(3,4)^Embedding(G,RG);  |
  (ZmodnZObj( 3, 4 ))*(1)
  !gapprompt@gap>| !gapinput@i^2;                           |
  (ZmodnZObj( 1, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@j^2;                                |
  (ZmodnZObj( 1, 4 ))*(-3)
  !gapprompt@gap>| !gapinput@i*j+j*i;                       |
  <zero> of ...
  
\end{Verbatim}
 The following example shows how to construct the Hamiltonian quaternion
algebra over the rationals using the rationals as coefficient ring and the
Klein group as the underlying group. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@C2 := CyclicGroup(2);|
  <pc group of size 2 with 1 generators>
  !gapprompt@gap>| !gapinput@G := DirectProduct(C2,C2);|
  <pc group of size 4 with 2 generators>
  !gapprompt@gap>| !gapinput@act := function(RG,a)|
  !gapprompt@>| !gapinput@    return IdentityMapping( LeftActingDomain(RG));|
  !gapprompt@>| !gapinput@end;|
  function( RG, a ) ... end
  !gapprompt@gap>| !gapinput@twist := function( RG, g , h )|
  !gapprompt@>| !gapinput@local one,g1,g2,h1,h2,G;|
  !gapprompt@>| !gapinput@G := UnderlyingMagma( RG );|
  !gapprompt@>| !gapinput@one := One( C2 );|
  !gapprompt@>| !gapinput@g1 := Image( Projection(G,1), g );|
  !gapprompt@>| !gapinput@g2 := Image( Projection(G,2), g );|
  !gapprompt@>| !gapinput@h1 := Image( Projection(G,1), h );|
  !gapprompt@>| !gapinput@h2 := Image( Projection(G,2), h );|
  !gapprompt@>| !gapinput@if g = One( G ) or h = One( G ) then return 1;|
  !gapprompt@>| !gapinput@  elif IsOne(g1) and not IsOne(g2) and not IsOne(h1) and not IsOne(h2)|
  !gapprompt@>| !gapinput@    then return 1;|
  !gapprompt@>| !gapinput@  elif not IsOne(g1) and IsOne(g2) and IsOne(h1) and not IsOne(h2)|
  !gapprompt@>| !gapinput@    then return 1;|
  !gapprompt@>| !gapinput@  elif not IsOne(g1) and not IsOne(g2) and not IsOne(h1) and IsOne(h2)|
  !gapprompt@>| !gapinput@    then return 1;|
  !gapprompt@>| !gapinput@  else return -1;|
  !gapprompt@>| !gapinput@fi;|
  !gapprompt@>| !gapinput@end;|
  function( RG, g, h ) ... end
  !gapprompt@gap>| !gapinput@HQ := CrossedProduct( Rationals, G, act, twist );|
  <crossed product over Rationals of a group of size 4>
  
\end{Verbatim}
 Changing the rationals by the integers as coefficient ring one can construct
the Hamiltonian quaternion ring. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@HZ := CrossedProduct( Integers, G, act, twist );|
  <crossed product over Integers of a group of size 4>
  !gapprompt@gap>| !gapinput@i := GeneratorsOfGroup(G)[1]^Embedding(G,HZ); |
  (f1)*(1)
  !gapprompt@gap>| !gapinput@j := GeneratorsOfGroup(G)[2]^Embedding(G,HZ);|
  (f2)*(1)
  !gapprompt@gap>| !gapinput@i^2;|
  (<identity> of ...)*(-1)
  !gapprompt@gap>| !gapinput@j^2; |
  (<identity> of ...)*(-1)
  !gapprompt@gap>| !gapinput@i*j+j*i;                                      |
  <zero> of ...
  
\end{Verbatim}
 One can extract the arguments used for the construction of the crossed product
using the following attributes: 

 * \index{LeftActingDomain@\texttt{LeftActingDomain}} \texttt{LeftActingDomain} for the coefficient ring. 

 * \index{UnderlyingMagma@\texttt{UnderlyingMagma}} \texttt{UnderlyingMagma} for the underlying group. 

 * \index{ActionForCrossedProduct@\texttt{ActionForCrossedProduct}} \texttt{ActionForCrossedProduct} for the action. 

 * \index{TwistingForCrossedProduct@\texttt{TwistingForCrossedProduct}} \texttt{TwistingForCrossedProduct} for the twisting. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@LeftActingDomain(HZ);|
  Integers
  !gapprompt@gap>| !gapinput@G:=UnderlyingMagma(HZ);|
  <pc group of size 4 with 2 generators>
  !gapprompt@gap>| !gapinput@ac := ActionForCrossedProduct(HZ);|
  function( RG, a ) ... end
  !gapprompt@gap>| !gapinput@List( G , x -> ac( HZ, x ) );|
  [ IdentityMapping( Integers ), IdentityMapping( Integers ),
    IdentityMapping( Integers ), IdentityMapping( Integers ) ]
  !gapprompt@gap>| !gapinput@tw := TwistingForCrossedProduct( HZ );|
  function( RG, g, h ) ... end
  !gapprompt@gap>| !gapinput@List( G, x -> List( G , y -> tw( HZ, x, y ) ) );|
  [ [ 1, 1, 1, 1 ], [ 1, -1, -1, 1 ], [ 1, 1, -1, -1 ], [ 1, -1, 1, -1 ] ]  
  
\end{Verbatim}
 Some more examples of crossed products arise from the \emph{Wedderburn decomposition} (\ref{WedDec}) of group algebras. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G := SmallGroup(32,50);|
  <pc group of size 32 with 5 generators>
  !gapprompt@gap>| !gapinput@A := SimpleAlgebraByCharacter( GroupRing(Rationals,G), Irr(G)[17]) ;|
  ( <crossed product with center Rationals over GaussianRationals of a group of \
  size 2>^[ 2, 2 ] )
  !gapprompt@gap>| !gapinput@SimpleAlgebraByCharacterInfo( GroupRing(Rationals,G), Irr(G)[17]) ;|
  [ 2, Rationals, 4, [ 2, 3, 2 ] ]
  !gapprompt@gap>| !gapinput@B := LeftActingDomain(A);|
  <crossed product with center Rationals over GaussianRationals of a group of si\
  ze 2>
  !gapprompt@gap>| !gapinput@L := LeftActingDomain(B);|
  GaussianRationals
  !gapprompt@gap>| !gapinput@H := UnderlyingMagma( B );|
  <group of size 2 with 2 generators>
  !gapprompt@gap>| !gapinput@Elements(H);|
  [ ZmodnZObj( 1, 4 ), ZmodnZObj( 3, 4 ) ]
  !gapprompt@gap>| !gapinput@i := E(4) * One(H)^Embedding(H,B);|
  (ZmodnZObj( 1, 4 ))*(E(4))
  !gapprompt@gap>| !gapinput@j := ZmodnZObj(3,4)^Embedding(H,B);|
  (ZmodnZObj( 3, 4 ))*(1)
  !gapprompt@gap>| !gapinput@i^2;|
  (ZmodnZObj( 1, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@j^2;|
  (ZmodnZObj( 1, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@i*j+j*i;|
  <zero> of ...
  !gapprompt@gap>| !gapinput@ac := ActionForCrossedProduct( B );|
  function( RG, a ) ... end
  !gapprompt@gap>| !gapinput@tw := TwistingForCrossedProduct( B );|
  function( RG, a, b ) ... end
  !gapprompt@gap>| !gapinput@List( H , x -> ac( B, x ) );|
  [ IdentityMapping( GaussianRationals ), ANFAutomorphism( GaussianRationals,
      3 ) ]
  !gapprompt@gap>| !gapinput@List( H , x -> List( H , y -> tw( B, x, y ) ) );|
  [ [ 1, 1 ], [ 1, -1 ] ]
  
\end{Verbatim}
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, SmallGroup(24,3) );;|
  !gapprompt@gap>| !gapinput@WedderburnDecomposition(QG);|
  [ Rationals, CF(3), ( Rationals^[ 3, 3 ] ),
    <crossed product with center Rationals over GaussianRationals of a group of \
  size 2>, <crossed product with center CF(3) over AsField( CF(3), CF(
      12) ) of a group of size 2> ]
  !gapprompt@gap>| !gapinput@R:=WedderburnDecomposition( QG )[4];|
  <crossed product with center Rationals over GaussianRationals of a group of si\
  ze 2>
  !gapprompt@gap>| !gapinput@IsCrossedProduct(R);|
  true
  !gapprompt@gap>| !gapinput@IsAlgebra(R);|
  true
  !gapprompt@gap>| !gapinput@IsRing(R);       |
  true
  !gapprompt@gap>| !gapinput@LeftActingDomain( R );|
  GaussianRationals
  !gapprompt@gap>| !gapinput@AsList( UnderlyingMagma( R ) );|
  [ ZmodnZObj( 1, 4 ), ZmodnZObj( 3, 4 ) ]
  !gapprompt@gap>| !gapinput@Print( ActionForCrossedProduct( R ) ); Print("\n");|
  function ( RG, a )
      local  cond, redu;
      cond := OperationRecord( RG ).cond;
      redu := OperationRecord( RG ).redu;
      return
       ANFAutomorphism( CF( cond ), Int( PreImagesRepresentative( redu, a ) ) );
  end
  !gapprompt@gap>| !gapinput@Print( TwistingForCrossedProduct( R ) ); Print("\n");                     |
  function ( RG, a, b )
      local  orderroot, cocycle;
      orderroot := OperationRecord( RG ).orderroot;
      cocycle := OperationRecord( RG ).cocycle;
      return E( orderroot ) ^ Int( cocycle( a, b ) );
  end
  !gapprompt@gap>| !gapinput@IsAssociative(R);|
  true
  !gapprompt@gap>| !gapinput@IsFinite(R);           |
  false
  !gapprompt@gap>| !gapinput@IsFiniteDimensional(R);|
  true
  !gapprompt@gap>| !gapinput@AsList(Basis(R));|
  [ (ZmodnZObj( 1, 4 ))*(1), (ZmodnZObj( 3, 4 ))*(1) ] 
  !gapprompt@gap>| !gapinput@GeneratorsOfLeftOperatorRingWithOne(R);|
  [ (ZmodnZObj( 1, 4 ))*(1), (ZmodnZObj( 3, 4 ))*(1) ]
  !gapprompt@gap>| !gapinput@One(R);|
  (ZmodnZObj( 1, 4 ))*(1)
  !gapprompt@gap>| !gapinput@Zero(R);|
  <zero> of ...
  !gapprompt@gap>| !gapinput@Characteristic(R);|
  0
  !gapprompt@gap>| !gapinput@CenterOfCrossedProduct(R);|
  Rationals
  
\end{Verbatim}
 The next example shows how one can use \texttt{CrossedProduct} to produce generalized quaternion algebras. Note that one can construct
quaternion algebras using the \textsf{GAP} function \texttt{QuaternionAlgebra}. \index{Quaternion algebra} 
\begin{Verbatim}[commandchars=@|B,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>B @gapinput|Quat := function(R,a,b)B
  @gapprompt|>B @gapinput|local G,act,twist;B
  @gapprompt|>B @gapinput|if not(a in R and b in R and a <> Zero(R) and b <> Zero(R) ) thenB
  @gapprompt|>B @gapinput|Error("<a>  and <b> must be non zero elements of <R>!!!");B
  @gapprompt|>B @gapinput|fi;B
  @gapprompt|>B @gapinput|G := SmallGroup(4,2);B
  @gapprompt|>B @gapinput|act := function(RG,a)B
  @gapprompt|>B @gapinput|    return IdentityMapping( LeftActingDomain(RG));B
  @gapprompt|>B @gapinput|end;B
  @gapprompt|>B @gapinput|twist := function( RG, g , h )B
  @gapprompt|>B @gapinput|local one,g1,g2;B
  @gapprompt|>B @gapinput|one := One(G);B
  @gapprompt|>B @gapinput|g1 := G.1;B
  @gapprompt|>B @gapinput|g2 := G.2;B
  @gapprompt|>B @gapinput|if   g = one or h = one thenB
  @gapprompt|>B @gapinput|  return One(R);B
  @gapprompt|>B @gapinput|elif g = g1 thenB
  @gapprompt|>B @gapinput|  if h = g2 thenB
  @gapprompt|>B @gapinput|    return One(R);B
  @gapprompt|>B @gapinput|  elseB
  @gapprompt|>B @gapinput|    return a;B
  @gapprompt|>B @gapinput|  fi;B
  @gapprompt|>B @gapinput|elif g = g2 thenB
  @gapprompt|>B @gapinput|  if h = g1 thenB
  @gapprompt|>B @gapinput|    return -One(R);B
  @gapprompt|>B @gapinput|  elif h=g2 thenB
  @gapprompt|>B @gapinput|    return b;B
  @gapprompt|>B @gapinput|  elseB
  @gapprompt|>B @gapinput|    return -b;B
  @gapprompt|>B @gapinput|  fi;B
  @gapprompt|>B @gapinput|elseB
  @gapprompt|>B @gapinput|  if h = g1 thenB
  @gapprompt|>B @gapinput|    return -b;B
  @gapprompt|>B @gapinput|  elif h=g2 thenB
  @gapprompt|>B @gapinput|    return b;B
  @gapprompt|>B @gapinput|  elseB
  @gapprompt|>B @gapinput|    return -a*b;B
  @gapprompt|>B @gapinput|  fi;B
  @gapprompt|>B @gapinput|fi;B
  @gapprompt|>B @gapinput|end;B
  @gapprompt|>B @gapinput|return CrossedProduct(R,G,act,twist);B
  @gapprompt|>B @gapinput|end;B
  function( R, a, b ) ... end
  @gapprompt|gap>B @gapinput|HQ := Quat(Rationals,2,3);B
  <crossed product over Rationals of a group of size 4>
  @gapprompt|gap>B @gapinput|G := UnderlyingMagma(HQ);B
  <pc group of size 4 with 2 generators>
  @gapprompt|gap>B @gapinput|tw := TwistingForCrossedProduct( HQ );B
  function( RG, g, h ) ... end
  @gapprompt|gap>B @gapinput|List( G, x -> List( G, y -> tw( HQ, x, y ) ) );B
  [ [ 1, 1, 1, 1 ], [ 1, 3, -1, -3 ], [ 1, 1, 2, 2 ], [ 1, 3, -3, -6 ] ]
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Crossed product elements and their properties}}\label{CrossedElements}
\logpage{[ 5, 2, 0 ]}
\hyperdef{L}{X8560A2F37B608A9F}{}
{
  

\subsection{\textcolor{Chapter }{ElementOfCrossedProduct}}
\logpage{[ 5, 2, 1 ]}\nobreak
\hyperdef{L}{X7D2313AA82F1D5CC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ElementOfCrossedProduct({\mdseries\slshape Fam, zerocoeff, coeffs, elts})\index{ElementOfCrossedProduct@\texttt{ElementOfCrossedProduct}}
\label{ElementOfCrossedProduct}
}\hfill{\scriptsize (property)}}\\


 Returns the element $m_1*c_1 + ... + m_n*c_n$ of a crossed product, where \mbox{\texttt{\mdseries\slshape elts}} $ = [ m_1, m_2, ..., m_n ]$ is a list of magma elements, \mbox{\texttt{\mdseries\slshape coeffs}} $ = [ c_1, c_2, ..., c_n ]$ is a list of coefficients. The output belongs to the crossed product whose
elements lie in the family \mbox{\texttt{\mdseries\slshape Fam}}. The second argument \mbox{\texttt{\mdseries\slshape zerocoeff}} must be the zero element of the coefficient ring containing coefficients $c_i$, and will be stored in the attribute \index{ZeroCoefficient@\texttt{ZeroCoefficient}}\texttt{ZeroCoefficient} of the crossed product element. 

 The output will be in the category \index{IsElementOfCrossedProduct@\texttt{IsElementOfCrossedProduct}}\texttt{IsElementOfCrossedProduct}, which is a subcategory of \texttt{IsRingElementWithInverse}. It will have the presentation \index{IsCrossedProductObjDefaultRep@\texttt{IsCrossedProductObjDefaultRep}} \texttt{IsCrossedProductObjDefaultRep}. 

 Similarly to magma rings, one can obtain the list of coefficients and elements
with \texttt{CoefficientsAndMagmaElements} \index{CoefficientsAndMagmaElements}. 

 Also note from the example below and several other examples in this chapter
that instead of \texttt{ElementOfCrossedProduct} one can use \index{Embedding@\texttt{Embedding}}\texttt{Embedding} to embed elements of the coefficient ring and of the underlying magma into the
crossed product. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QG := GroupRing( Rationals, SmallGroup(24,3) );|
  <algebra-with-one over Rationals, with 4 generators>
  !gapprompt@gap>| !gapinput@R := WedderburnDecomposition( QG )[4];|
  <crossed product with center Rationals over GaussianRationals of a group of si\
  ze 2>
  !gapprompt@gap>| !gapinput@H := UnderlyingMagma( R );;|
  !gapprompt@gap>| !gapinput@fam := ElementsFamily( FamilyObj( R ) );;|
  !gapprompt@gap>| !gapinput@g := ElementOfCrossedProduct( fam, 0, [ 1, E(4) ], AsList(H) );|
  (ZmodnZObj( 1, 4 ))*(1)+(ZmodnZObj( 3, 4 ))*(E(4))
  !gapprompt@gap>| !gapinput@CoefficientsAndMagmaElements( g );    |
  [ ZmodnZObj( 1, 4 ), 1, ZmodnZObj( 3, 4 ), E(4) ]
  !gapprompt@gap>| !gapinput@t := List( H, x -> x^Embedding( H, R ) );|
  [ (ZmodnZObj( 1, 4 ))*(1), (ZmodnZObj( 3, 4 ))*(1) ]
  !gapprompt@gap>| !gapinput@t[1] + t[2]*E(4);  |
  (ZmodnZObj( 1, 4 ))*(1)+(ZmodnZObj( 3, 4 ))*(E(4))
  !gapprompt@gap>| !gapinput@g = t[1] + E(4)*t[2];|
  false
  !gapprompt@gap>| !gapinput@g = t[1] + t[2]*E(4);|
  true
  !gapprompt@gap>| !gapinput@h := ElementOfCrossedProduct( fam, 0, [ E(4), 1 ], AsList(H) );     |
  (ZmodnZObj( 1, 4 ))*(E(4))+(ZmodnZObj( 3, 4 ))*(1)
  !gapprompt@gap>| !gapinput@g+h;|
  (ZmodnZObj( 1, 4 ))*(1+E(4))+(ZmodnZObj( 3, 4 ))*(1+E(4))
  !gapprompt@gap>| !gapinput@g*E(4);|
  (ZmodnZObj( 1, 4 ))*(E(4))+(ZmodnZObj( 3, 4 ))*(-1)
  !gapprompt@gap>| !gapinput@E(4)*g;     |
  (ZmodnZObj( 1, 4 ))*(E(4))+(ZmodnZObj( 3, 4 ))*(1)
  !gapprompt@gap>| !gapinput@g*h;|
  (ZmodnZObj( 1, 4 ))*(2*E(4))
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Useful properties and functions}}\label{Auxiliar}
\logpage{[ 6, 0, 0 ]}
\hyperdef{L}{X7D3C0B1F7A66056F}{}
{
  
\section{\textcolor{Chapter }{Semisimple group algebras of finite groups}}\label{AuxiliarProperties}
\logpage{[ 6, 1, 0 ]}
\hyperdef{L}{X7BA5D68A86B8C772}{}
{
  

\subsection{\textcolor{Chapter }{IsSemisimpleZeroCharacteristicGroupAlgebra}}
\logpage{[ 6, 1, 1 ]}\nobreak
\hyperdef{L}{X7EF856E880722311}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSemisimpleZeroCharacteristicGroupAlgebra({\mdseries\slshape KG})\index{IsSemisimpleZeroCharacteristicGroupAlgebra@\texttt{IsSemisimple}\-\texttt{Zero}\-\texttt{Characteristic}\-\texttt{Group}\-\texttt{Algebra}}
\label{IsSemisimpleZeroCharacteristicGroupAlgebra}
}\hfill{\scriptsize (property)}}\\


 The input must be a group ring. 

 Returns \texttt{true} if the input \mbox{\texttt{\mdseries\slshape KG}} is a \emph{semisimple group algebra} (\ref{Semisimple}) over a field of characteristic zero (that is if $G$ is finite), and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@CG:=GroupRing( GaussianRationals, DihedralGroup(16) );;|
  !gapprompt@gap>| !gapinput@IsSemisimpleZeroCharacteristicGroupAlgebra( CG );|
  true
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(2), SymmetricGroup(3) );;                    |
  !gapprompt@gap>| !gapinput@IsSemisimpleZeroCharacteristicGroupAlgebra( FG );|
  false
  !gapprompt@gap>| !gapinput@f := FreeGroup("a");|
  <free group on the generators [ a ]>
  !gapprompt@gap>| !gapinput@Qf:=GroupRing(Rationals,f);|
  <algebra-with-one over Rationals, with 2 generators>
  !gapprompt@gap>| !gapinput@IsSemisimpleZeroCharacteristicGroupAlgebra(Qf);|
  false
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSemisimpleRationalGroupAlgebra}}
\logpage{[ 6, 1, 2 ]}\nobreak
\hyperdef{L}{X85999B6A7C52E305}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSemisimpleRationalGroupAlgebra({\mdseries\slshape KG})\index{IsSemisimpleRationalGroupAlgebra@\texttt{IsSemisimpleRationalGroupAlgebra}}
\label{IsSemisimpleRationalGroupAlgebra}
}\hfill{\scriptsize (property)}}\\


 The input must be a group ring. 

 Returns \texttt{true} if \mbox{\texttt{\mdseries\slshape KG}} is a \emph{semisimple rational group algebra} (\ref{Semisimple}) and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, SymmetricGroup(4) );;       |
  !gapprompt@gap>| !gapinput@IsSemisimpleRationalGroupAlgebra( QG );       |
  true
  !gapprompt@gap>| !gapinput@CG:=GroupRing( GaussianRationals, DihedralGroup(16) );;               |
  !gapprompt@gap>| !gapinput@IsSemisimpleRationalGroupAlgebra( CG );                              |
  false
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(2), SymmetricGroup(3) );;|
  !gapprompt@gap>| !gapinput@IsSemisimpleRationalGroupAlgebra( FG );|
  false
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSemisimpleANFGroupAlgebra}}
\logpage{[ 6, 1, 3 ]}\nobreak
\hyperdef{L}{X79289F7F7FC04846}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSemisimpleANFGroupAlgebra({\mdseries\slshape KG})\index{IsSemisimpleANFGroupAlgebra@\texttt{IsSemisimpleANFGroupAlgebra}}
\label{IsSemisimpleANFGroupAlgebra}
}\hfill{\scriptsize (property)}}\\


 The input must be a group ring. 

 Returns \texttt{true} if \mbox{\texttt{\mdseries\slshape KG}} is the group algebra of a finite group over a subfield of a cyclotomic
extension of the rationals and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@IsSemisimpleANFGroupAlgebra( GroupRing( NF(5,[4]) , CyclicGroup(28) ) );|
  true
  !gapprompt@gap>| !gapinput@IsSemisimpleANFGroupAlgebra( GroupRing( GF(11) , CyclicGroup(28) ) );|
  false
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsSemisimpleFiniteGroupAlgebra}}
\logpage{[ 6, 1, 4 ]}\nobreak
\hyperdef{L}{X7B546E2D7FB561BA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsSemisimpleFiniteGroupAlgebra({\mdseries\slshape KG})\index{IsSemisimpleFiniteGroupAlgebra@\texttt{IsSemisimpleFiniteGroupAlgebra}}
\label{IsSemisimpleFiniteGroupAlgebra}
}\hfill{\scriptsize (property)}}\\


 The input must be a group ring. 

 Returns \texttt{true} if \mbox{\texttt{\mdseries\slshape KG}} is a \emph{semisimple finite group algebra} (\ref{Semisimple}), that is a group algebra of a finite group $G$ over a field $K$ of order coprime to the order of $G$, and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(5), SymmetricGroup(3) );;|
  !gapprompt@gap>| !gapinput@IsSemisimpleFiniteGroupAlgebra( FG );|
  true
  !gapprompt@gap>| !gapinput@KG:=GroupRing( GF(2), SymmetricGroup(3) );; |
  !gapprompt@gap>| !gapinput@IsSemisimpleFiniteGroupAlgebra( KG ); |
  false
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, SymmetricGroup(4) );;|
  !gapprompt@gap>| !gapinput@IsSemisimpleFiniteGroupAlgebra( QG );|
  false
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsTwistingTrivial}}
\logpage{[ 6, 1, 5 ]}\nobreak
\hyperdef{L}{X8337F25387C53B02}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsTwistingTrivial({\mdseries\slshape G, H, K})\index{IsTwistingTrivial@\texttt{IsTwistingTrivial}}
\label{IsTwistingTrivial}
}\hfill{\scriptsize (property)}}\\


 The input must be a group and a strong Shoda pair of the group. 

 Returns \texttt{true} if the simple algebra ${\ensuremath{\mathbb Q}}Ge(G,H,K)$ has a \emph{trivial twisting} (\ref{SSPDef}), and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(8);;|
  !gapprompt@gap>| !gapinput@H:=StrongShodaPairs(G)[5][1];|
  Group([ f1*f2, f3, f3 ])
  !gapprompt@gap>| !gapinput@K:=StrongShodaPairs(G)[5][2]; |
  Group([ f1*f2 ])
  !gapprompt@gap>| !gapinput@IsTwistingTrivial(G,H,K);|
  true
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Operations with group rings elements}}\label{AuxiliarOperations}
\logpage{[ 6, 2, 0 ]}
\hyperdef{L}{X86121BD77F7E5C7A}{}
{
  

\subsection{\textcolor{Chapter }{Centralizer}}
\logpage{[ 6, 2, 1 ]}\nobreak
\hyperdef{L}{X7A2BF4527E08803C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{Centralizer({\mdseries\slshape G, x})\index{Centralizer@\texttt{Centralizer}}
\label{Centralizer}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A subgroup of a group \mbox{\texttt{\mdseries\slshape G}}. 



 The input should be formed by a finite group \mbox{\texttt{\mdseries\slshape G}} and an element \mbox{\texttt{\mdseries\slshape x}} of a group ring $FH$ whose underlying group $H$ contains \mbox{\texttt{\mdseries\slshape G}} as a subgroup. 

 Returns the centralizer of \mbox{\texttt{\mdseries\slshape x}} in \mbox{\texttt{\mdseries\slshape G}}. 

 This operation adds a new method to the operation that already exists in \textsf{GAP}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@D16 := DihedralGroup(16);|
  <pc group of size 16 with 4 generators>
  !gapprompt@gap>| !gapinput@QD16 := GroupRing( Rationals, D16 );|
  <algebra-with-one over Rationals, with 4 generators>
  !gapprompt@gap>| !gapinput@a:=QD16.1;b:=QD16.2;|
  (1)*f1
  (1)*f2
  !gapprompt@gap>| !gapinput@e := PrimitiveCentralIdempotentsByStrongSP( QD16)[3];;|
  !gapprompt@gap>| !gapinput@Centralizer( D16, a);|
  Group([ f1, f4 ])
  !gapprompt@gap>| !gapinput@Centralizer( D16, b);|
  Group([ f2 ])
  !gapprompt@gap>| !gapinput@Centralizer( D16, a+b);|
  Group([ f4 ])
  !gapprompt@gap>| !gapinput@Centralizer( D16, e);|
  Group([ f1, f2 ])
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{OnPoints}}
\logpage{[ 6, 2, 2 ]}\nobreak
\hyperdef{L}{X7FE417DD837987B4}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{OnPoints({\mdseries\slshape x, g})\index{OnPoints@\texttt{OnPoints}}
\label{OnPoints}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{\texttt{\symbol{92}}\texttt{\symbol{94}}({\mdseries\slshape x, g})\index{^@\texttt{\texttt{\symbol{92}}\texttt{\symbol{94}}}}
\label{^}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 An element of a group ring. 



 The input should be formed by an element \mbox{\texttt{\mdseries\slshape x}} of a group ring $FG$ and an element \mbox{\texttt{\mdseries\slshape g}} in the underlying group $G$ of $FG$.

 Returns the conjugate $x^g = g^{-1} x g$ of \mbox{\texttt{\mdseries\slshape x}} by \mbox{\texttt{\mdseries\slshape g}}. Usage of \texttt{x\texttt{\symbol{94}}g} produces the same output. 

 This operation adds a new method to the operation that already exists in \textsf{GAP}. 

 The following example is a continuation of the example from the description of \texttt{Centralizer} (\ref{Centralizer}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@List(D16,x->a^x=a);|
  [ true, true, false, false, true, false, false, true, false, false, false,
    false, false, false, false, false ]
  !gapprompt@gap>| !gapinput@List(D16,x->e^x=e);|
  [ true, true, true, true, true, true, true, true, true, true, true, true,
    true, true, true, true ]
  !gapprompt@gap>| !gapinput@ForAll(D16,x->a^x=a);|
  false
  !gapprompt@gap>| !gapinput@ForAll(D16,x->e^x=e);|
  true
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{AverageSum}}
\logpage{[ 6, 2, 3 ]}\nobreak
\hyperdef{L}{X798CEA1F80D355EE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AverageSum({\mdseries\slshape RG, X})\index{AverageSum@\texttt{AverageSum}}
\label{AverageSum}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 An element of a group ring. 



 The input must be composed of a group ring \mbox{\texttt{\mdseries\slshape RG}} and a finite subset \mbox{\texttt{\mdseries\slshape X}} of the underlying group $G$ of \mbox{\texttt{\mdseries\slshape RG}}. The order of \mbox{\texttt{\mdseries\slshape X}} must be invertible in the coefficient ring $R$ of \mbox{\texttt{\mdseries\slshape RG}}. 

 Returns the element of the group ring \mbox{\texttt{\mdseries\slshape RG}} that is equal to the sum of all elements of \mbox{\texttt{\mdseries\slshape X}} divided by the order of \mbox{\texttt{\mdseries\slshape X}}. 

 If \mbox{\texttt{\mdseries\slshape X}} is a subgroup of $G$ then the output is an idempotent of $RG$ which is central if and only if \mbox{\texttt{\mdseries\slshape X}} is normal in $G$. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(16);;               |
  !gapprompt@gap>| !gapinput@QG:=GroupRing( Rationals, G );;|
  !gapprompt@gap>| !gapinput@FG:=GroupRing( GF(5), G );;|
  !gapprompt@gap>| !gapinput@e:=AverageSum( QG, DerivedSubgroup(G) );|
  (1/4)*<identity> of ...+(1/4)*f3+(1/4)*f4+(1/4)*f3*f4
  !gapprompt@gap>| !gapinput@f:=AverageSum( FG, DerivedSubgroup(G) ); |
  (Z(5)^2)*<identity> of ...+(Z(5)^2)*f3+(Z(5)^2)*f4+(Z(5)^2)*f3*f4
  !gapprompt@gap>| !gapinput@G=Centralizer(G,e);|
  true
  !gapprompt@gap>| !gapinput@H:=Subgroup(G,[G.1]);|
  Group([ f1 ])
  !gapprompt@gap>| !gapinput@e:=AverageSum( QG, H );|
  (1/2)*<identity> of ...+(1/2)*f1
  !gapprompt@gap>| !gapinput@G=Centralizer(G,e);|
  false
  !gapprompt@gap>| !gapinput@IsNormal(G,H);|
  false
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Cyclotomic classes}}\label{CC}
\logpage{[ 6, 3, 0 ]}
\hyperdef{L}{X7AAB3882785C04E0}{}
{
  

\subsection{\textcolor{Chapter }{CyclotomicClasses}}
\logpage{[ 6, 3, 1 ]}\nobreak
\hyperdef{L}{X7D7BDF5087C8F4C6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CyclotomicClasses({\mdseries\slshape q, n})\index{CyclotomicClasses@\texttt{CyclotomicClasses}}
\label{CyclotomicClasses}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A partition of $[ 0 .. n ]$. 



 The input should be formed by two relatively prime positive integers. 

 Returns the list \mbox{\texttt{\mdseries\slshape q}}-\emph{cyclotomic classes } (\ref{CyclotomicClass}) modulo \mbox{\texttt{\mdseries\slshape n}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@CyclotomicClasses( 2, 21 );|
  [ [ 0 ], [ 1, 2, 4, 8, 16, 11 ], [ 3, 6, 12 ], [ 5, 10, 20, 19, 17, 13 ],
    [ 7, 14 ], [ 9, 18, 15 ] ]
  !gapprompt@gap>| !gapinput@CyclotomicClasses( 10, 21 );|
  [ [ 0 ], [ 1, 10, 16, 13, 4, 19 ], [ 2, 20, 11, 5, 8, 17 ],
    [ 3, 9, 6, 18, 12, 15 ], [ 7 ], [ 14 ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsCyclotomicClass}}
\logpage{[ 6, 3, 2 ]}\nobreak
\hyperdef{L}{X7FA101AE7BC33671}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsCyclotomicClass({\mdseries\slshape q, n, C})\index{IsCyclotomicClass@\texttt{IsCyclotomicClass}}
\label{IsCyclotomicClass}
}\hfill{\scriptsize (operation)}}\\


 The input should be formed by two relatively prime positive integers \mbox{\texttt{\mdseries\slshape q}} and \mbox{\texttt{\mdseries\slshape n}} and a sublist \mbox{\texttt{\mdseries\slshape C}} of $[ 0 .. n ]$. 

 Returns \texttt{true} if \mbox{\texttt{\mdseries\slshape C}} is a \mbox{\texttt{\mdseries\slshape q}}-\emph{cyclotomic class} (\ref{CyclotomicClass}) modulo \mbox{\texttt{\mdseries\slshape n}} and \texttt{false} otherwise. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@IsCyclotomicClass( 2, 7, [1,2,4] );|
  true
  !gapprompt@gap>| !gapinput@IsCyclotomicClass( 2, 21, [1,2,4] );|
  false
  !gapprompt@gap>| !gapinput@IsCyclotomicClass( 2, 21, [3,6,12] );|
  true
  
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Other commands}}\label{Other}
\logpage{[ 6, 4, 0 ]}
\hyperdef{L}{X7B16423A7FBED034}{}
{
  

\subsection{\textcolor{Chapter }{InfoWedderga}}
\logpage{[ 6, 4, 1 ]}\nobreak
\hyperdef{L}{X872510997A7AF31D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{InfoWedderga\index{InfoWedderga@\texttt{InfoWedderga}}
\label{InfoWedderga}
}\hfill{\scriptsize (info class)}}\\


 \texttt{InfoWedderga} is a special Info class for \textsf{Wedderga} algorithms. It has 3 levels: 0, 1 (default) and 2. To change the info level to \texttt{k}, use the command \texttt{SetInfoLevel(InfoWedderga, k)}. 

 In the example below we use this mechanism to see more details about the
Wedderburn components each time when we call \texttt{WedderburnDecomposition}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@SetInfoLevel(InfoWedderga, 2);   |
  !gapprompt@gap>| !gapinput@WedderburnDecomposition( GroupRing( CF(5), DihedralGroup( 16 ) ) );|
  #I  Info version : [ [ 1, CF(5) ], [ 1, CF(5) ], [ 1, CF(5) ], [ 1, CF(5) ],
    [ 2, CF(5) ], [ 1, NF(40,[ 1, 31 ]), 8, [ 2, 7, 0 ] ] ]
  [ CF(5), CF(5), CF(5), CF(5), ( CF(5)^[ 2, 2 ] ), 
    <crossed product with center NF(40,[ 1, 31 ]) over AsField( NF(40,
      [ 1, 31 ]), CF(40) ) of a group of size 2> ]
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Functions for calculating Schur indices and identifying division algebras}}\label{Div-alg}
\logpage{[ 7, 0, 0 ]}
\hyperdef{L}{X7B5D5E628144C0A2}{}
{
  
\section{\textcolor{Chapter }{Main Schur Index and Division Algebra Functions}}\label{MainSchurIndexFunctions}
\logpage{[ 7, 1, 0 ]}
\hyperdef{L}{X7802E175859EEB53}{}
{
  

\subsection{\textcolor{Chapter }{WedderburnDecompositionWithDivAlgParts}}
\logpage{[ 7, 1, 1 ]}\nobreak
\hyperdef{L}{X854DF62880C118B8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{WedderburnDecompositionWithDivAlgParts({\mdseries\slshape A})\index{WedderburnDecompositionWithDivAlgParts@\texttt{Wedderburn}\-\texttt{Decomposition}\-\texttt{With}\-\texttt{Div}\-\texttt{Alg}\-\texttt{Parts}}
\label{WedderburnDecompositionWithDivAlgParts}
}\hfill{\scriptsize (property)}}\\
\textbf{\indent Returns:\ }
 A list of lists \texttt{[r,D]}, each representing a ring of $ r \times r $ matrices over a field or division algebra \texttt{D}. 



 The input \mbox{\texttt{\mdseries\slshape A}} should be a group ring of a finite group over an abelian number field. The
function will give the same result as \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) if the field of coefficients for the group ring is finite. The output is a
list of pairs \texttt{[r,D]}, each of which indicates a simple component isomorphic to the ring of $ r \times r$ matrices over a division algebra described using the information in the record \texttt{D}. This record contains information on the center, Schur index, and local
indices of the division algebra. 

 \texttt{Local indices} is a list of pairs $[p,m]$, where $p$ is a rational prime (possibly 'infinity') and $m$ is the local index of the division algebra at the prime $p$. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(48,15);|
  <pc group of size 48 with 5 generators>
  !gapprompt@gap>| !gapinput@R:=GroupRing(Rationals,G);       |
  <algebra-with-one over Rationals, with 5 generators>
  !gapprompt@gap>| !gapinput@WedderburnDecompositionInfo(R);|
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], 
    [ 2, Rationals ], [ 1, Rationals, 3, [ 2, 2, 0 ] ], [ 2, CF(3) ], 
    [ 1, Rationals, 6, [ 2, 5, 0 ] ], [ 1, NF(8,[ 1, 7 ]), 8, [ 2, 7, 0 ] ], 
    [ 1, Rationals, 12, [ [ 2, 5, 3 ], [ 2, 7, 0 ] ], [ [ 3 ] ] ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionWithDivAlgParts(R);|
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], 
    [ 2, Rationals ], [ 2, Rationals ], [ 2, CF(3) ], [ 2, Rationals ], 
    [ 2, NF(8,[ 1, 7 ]) ], 
    [ 2, 
        rec( Center := Rationals, DivAlg := true, 
            LocalIndices := [ [ 2, 2 ], [ 3, 2 ] ], SchurIndex := 2 ) ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{CyclotomicAlgebraWithDivAlgPart}}
\logpage{[ 7, 1, 2 ]}\nobreak
\hyperdef{L}{X83BC82867BE66A0B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CyclotomicAlgebraWithDivAlgPart({\mdseries\slshape A})\index{CyclotomicAlgebraWithDivAlgPart@\texttt{CyclotomicAlgebraWithDivAlgPart}}
\label{CyclotomicAlgebraWithDivAlgPart}
}\hfill{\scriptsize (property)}}\\
\textbf{\indent Returns:\ }
 A list of length two indicating a matrix ring of a given size over a field or
a noncommutative division algebra. 



 The input \mbox{\texttt{\mdseries\slshape A}} should be a cyclotomic algebra; i.e. a crossed product in the same form as in
the output of \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}). The output is in the form \texttt{[r,D]}, which indicates an $ r \times r $ matrix ring over the division algebra described by \texttt{D}. \texttt{D} is either a field or a noncommutative division algebra described using a
record giving information on the center, Schur index, and local indices of the
division algebra. 
\begin{Verbatim}[commandchars=@|H,fontsize=\small,frame=single,label=Example]
  
  @gapprompt|gap>H @gapinput|G:=SmallGroup(240,89);H
  <permutation group of size 240 with 2 generators>
  @gapprompt|gap>H @gapinput|R:=GroupRing(Rationals,G);H
  <algebra-with-one over Rationals, with 2 generators>
  @gapprompt|gap>H @gapinput|W:=WedderburnDecompositionInfo(R);H
  Wedderga: Warning!!! 
  Some of the Wedderburn components displayed are FRACTIONAL MATRIX ALGEBRAS!!!
  
  [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals, 10, [ 4, 3, 5 ] ], 
    [ 4, Rationals ], [ 4, Rationals ], [ 5, Rationals ], [ 5, Rationals ], 
    [ 6, Rationals ], [ 1, NF(12,[ 1, 11 ]), 10, [ 4, 3, 5 ] ], 
    [ 3/2, NF(8,[ 1, 7 ]), 10, [ 4, 3, 5 ] ] ]
  @gapprompt|gap>H @gapinput|CyclotomicAlgebraWithDivAlgPart(W[3]);H
  [ 2, rec( Center := Rationals, DivAlg := true, 
        LocalIndices := [ [ 5, 2 ], [ infinity, 2 ] ], SchurIndex := 2 ) ]
  @gapprompt|gap>H @gapinput|CyclotomicAlgebraWithDivAlgPart(W[9]);H
  [ 2, rec( Center := NF(12,[ 1, 11 ]), DivAlg := true, 
        LocalIndices := [ [ infinity, 2 ] ], SchurIndex := 2 ) ]
  @gapprompt|gap>H @gapinput|CyclotomicAlgebraWithDivAlgPart(W[10]);H
  [ 3, rec( Center := NF(8,[ 1, 7 ]), DivAlg := true, 
        LocalIndices := [ [ infinity, 2 ] ], SchurIndex := 2 ) ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{SchurIndex}}
\logpage{[ 7, 1, 3 ]}\nobreak
\hyperdef{L}{X7D065D65858428A6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SchurIndex({\mdseries\slshape A})\index{SchurIndex@\texttt{SchurIndex}}
\label{SchurIndex}
}\hfill{\scriptsize (property)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SchurIndexByCharacter({\mdseries\slshape F, G, n})\index{SchurIndexByCharacter@\texttt{SchurIndexByCharacter}}
\label{SchurIndexByCharacter}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first of these returns the Schur index of the simple algebra \mbox{\texttt{\mdseries\slshape A}}. The second returns the Schur index of the simple component of the group ring \mbox{\texttt{\mdseries\slshape FG}} corresponding to the irreducible character \texttt{Irr(G)[n]} of \mbox{\texttt{\mdseries\slshape G}}. 



 These are the main functions for computing Schur indices. The first can be
used to find the rational Schur index of a simple component of the group ring
of a finite group over an abelian number field, or a quaternion algebra in \textsf{GAP} (see \texttt{QuaternionAlgebra} (\textbf{Reference: QuaternionAlgebra})) whose center is the field of rational numbers. If \mbox{\texttt{\mdseries\slshape A}} is a quaternion algebra over a number field other than the Rationals, \texttt{fail} is returned. In these cases, the quaternion algebra can be converted to a
cyclic algebra and the Schur index of the cyclic algebra can be determined
through the solution of norm equations. Currently this functionality is not
implemented in \textsf{GAP}, but available in number theory packages such as \textsf{PARI/GP}. 

 The second function computes the Schur index of the cyclotomic algebra that
would occur as the simple component of the group ring \mbox{\texttt{\mdseries\slshape FG}} that corresponds to the irreducible character \texttt{Irr(G)[n]}. The function uses \texttt{SimpleComponentOfGroupRingByCharacter} (\ref{SimpleComponentOfGroupRingByCharacter}), which identifies the simple component of \texttt{GroupRing(F,G)} in the output of \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) that corresponds to \texttt{Irr(G)[n]} by a simple dimension count. Because of this, it is important that users use
the same presentation of \mbox{\texttt{\mdseries\slshape G}} to identify \texttt{Irr(G)[n]}, the \mbox{\texttt{\mdseries\slshape n}}-th character in the list \texttt{Irr(G)}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(63,1);  |
  <pc group of size 63 with 3 generators>
  !gapprompt@gap>| !gapinput@R:=GroupRing(Rationals,G);|
  <algebra-with-one over Rationals, with 3 generators>
  !gapprompt@gap>| !gapinput@W:=WedderburnDecompositionInfo(R);|
  [ [ 1, Rationals ], [ 1, CF(3) ], [ 1, CF(9) ], 
    [ 1, NF(7,[ 1, 2, 4 ]), 7, [ 3, 2, 0 ] ], 
    [ 1, NF(21,[ 1, 4, 16 ]), 21, [ 3, 4, 7 ] ] ]
  !gapprompt@gap>| !gapinput@SchurIndex(W[5]);|
  3
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(40,1);              |
  <pc group of size 40 with 4 generators>
  !gapprompt@gap>| !gapinput@Size(Irr(G));                          |
  16
  !gapprompt@gap>| !gapinput@SchurIndexByCharacter(GaussianRationals,G,16);|
  2
  !gapprompt@gap>| !gapinput@SchurIndexByCharacter(CF(5),G,16);         |
  1
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{WedderburnDecompositionAsSCAlgebras}}
\logpage{[ 7, 1, 4 ]}\nobreak
\hyperdef{L}{X860975A4792E119D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{WedderburnDecompositionAsSCAlgebras({\mdseries\slshape R})\index{WedderburnDecompositionAsSCAlgebras@\texttt{WedderburnDecompositionAsSCAlgebras}}
\label{WedderburnDecompositionAsSCAlgebras}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CyclotomicAlgebraAsSCAlgebra({\mdseries\slshape A})\index{CyclotomicAlgebraAsSCAlgebra@\texttt{CyclotomicAlgebraAsSCAlgebra}}
\label{CyclotomicAlgebraAsSCAlgebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleComponentByCharacterAsSCAlgebra({\mdseries\slshape F, G, n})\index{SimpleComponentByCharacterAsSCAlgebra@\texttt{Simple}\-\texttt{Component}\-\texttt{By}\-\texttt{Character}\-\texttt{As}\-\texttt{S}\-\texttt{C}\-\texttt{Algebra}}
\label{SimpleComponentByCharacterAsSCAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first of these returns the Wedderburn decomposition of the group ring \texttt{R} with each simple component presented as an algebra with structure constants in \textsf{GAP} (see  (\textbf{Reference: Constructing Algebras by Structure Constants}) in the main \textsf{GAP} manual). The second converts a list \texttt{A} that is output from \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) into an algebra with structure constants in \textsf{GAP}. The third determines an algebra with structure constants that is isomorphic
to the simple component of the group ring of the finite group \texttt{G} over the field \texttt{F} that corresponds to the irreducible character \texttt{Irr(G)[n]}. 



 These functions are an option for obtaining a Wedderburn decomposition or
simple component of the group ring \texttt{FG} in which the output is in the form of an algebra with structure constants,
which is more compatible with GAP's built-in operations for finite-dimensional
algebras. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(63,1);                                  |
  <pc group of size 63 with 3 generators>
  !gapprompt@gap>| !gapinput@R:=GroupRing(Rationals,G);|
  <algebra-with-one over Rationals, with 3 generators>
  !gapprompt@gap>| !gapinput@W:=WedderburnDecompositionInfo(R);|
  [ [ 1, Rationals ], [ 1, CF(3) ], [ 1, CF(9) ], 
    [ 1, NF(7,[ 1, 2, 4 ]), 7, [ 3, 2, 0 ] ], 
    [ 1, NF(21,[ 1, 4, 16 ]), 21, [ 3, 4, 7 ] ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionWithDivAlgParts(R);|
  [ [ 1, Rationals ], [ 1, CF(3) ], [ 1, CF(9) ], [ 3, NF(7,[ 1, 2, 4 ]) ], 
    [ 1, 
        rec( Center := NF(21,[ 1, 4, 16 ]), DivAlg := true, 
            LocalIndices := [ [ 7, 3 ] ], SchurIndex := 3 ) ] ]
  !gapprompt@gap>| !gapinput@WedderburnDecompositionAsSCAlgebras(R);|
  [ Rationals, CF(3), CF(9), <algebra of dimension 9 over NF(7,[ 1, 2, 4 ])>, 
    <algebra of dimension 9 over NF(21,[ 1, 4, 16 ])> ]
  !gapprompt@gap>| !gapinput@CyclotomicAlgebraAsSCAlgebra(W[5]);|
  <algebra of dimension 9 over NF(21,[ 1, 4, 16 ])>
  !gapprompt@gap>| !gapinput@Size(Irr(G));                                         |
  15
  !gapprompt@gap>| !gapinput@SimpleComponentByCharacterAsSCAlgebra(Rationals,G,15);|
  <algebra of dimension 9 over NF(21,[ 1, 4, 16 ])>
  
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Cyclotomic Reciprocity Functions }}\label{Cyclotomic Reciprocity Functions}
\logpage{[ 7, 2, 0 ]}
\hyperdef{L}{X81198A8B7C19978A}{}
{
  

\subsection{\textcolor{Chapter }{PPartOfN}}
\logpage{[ 7, 2, 1 ]}\nobreak
\hyperdef{L}{X78482C2B7959526E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PPartOfN({\mdseries\slshape n, p})\index{PPartOfN@\texttt{PPartOfN}}
\label{PPartOfN}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PDashPartOfN({\mdseries\slshape n, p})\index{PDashPartOfN@\texttt{PDashPartOfN}}
\label{PDashPartOfN}
}\hfill{\scriptsize (operation)}}\\


 These are standard arithmetic functions required by several subroutines for
the cyclotomic reciprocity and Schur index functions in \textsf{Wedderga}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@PPartOfN(2275,5);|
  25
  !gapprompt@gap>| !gapinput@PDashPartOfN(2275,5);|
  91
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{PSplitSubextension}}
\logpage{[ 7, 2, 2 ]}\nobreak
\hyperdef{L}{X7F4F73E887C96737}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{PSplitSubextension({\mdseries\slshape F, n, p})\index{PSplitSubextension@\texttt{PSplitSubextension}}
\label{PSplitSubextension}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The maximal subextension \texttt{K} of the cyclotomic extension \texttt{F(E(n))/F} for which $K/F$ splits completely at the prime $p$. 



 This function finds the maximal subextension \texttt{K} of the cyclotomic extension \texttt{F(E(n))} of an abelian number field \texttt{F} for which both the ramification index and residue degree of \texttt{K/F} over any prime lying over \mbox{\texttt{\mdseries\slshape p}} are $1$. To do this, it finds the field fixed by an appropriate power of the field
automorphism inducing the local Frobenius automorphism. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@PSplitSubextension(Rationals,60,5);  |
  GaussianRationals
  !gapprompt@gap>| !gapinput@PSplitSubextension(NF(5,[1,4]),70,2);|
  NF(35,[ 1, 4, 9, 11, 16, 29 ])
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{SplittingDegreeAtP}}
\logpage{[ 7, 2, 3 ]}\nobreak
\hyperdef{L}{X7845830082B7C723}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SplittingDegreeAtP({\mdseries\slshape F, n, p})\index{SplittingDegreeAtP@\texttt{SplittingDegreeAtP}}
\label{SplittingDegreeAtP}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ResidueDegreeAtP({\mdseries\slshape F, n, p})\index{ResidueDegreeAtP@\texttt{ResidueDegreeAtP}}
\label{ResidueDegreeAtP}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RamificationIndexAtP({\mdseries\slshape F, n, p})\index{RamificationIndexAtP@\texttt{RamificationIndexAtP}}
\label{RamificationIndexAtP}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The splitting degree, residue degree, and ramification index of the extension \texttt{F(E(n))/F} at the prime $p$. 



 These functions calculate the cyclotomic reciprocity parameters \texttt{g}, \texttt{f}, and \texttt{e} for the extension \texttt{F(E(n))/F} at the prime $p$ for an abelian number field \texttt{F}. To do this, it finds the \texttt{p}-split subextension \texttt{K} and the $p$-dash part $n'$ of $n$, then calculates \texttt{g = [K:F]}, \texttt{f = [K(E(n'):K]}, and \texttt{e = [K(E(n)):K(E(n'))]}. These functions enable the user to calculate cyclotomic reciprocity
parameters for any extension of abelian number fields, as the example
illustrates. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@F:=CF(12);|
  CF(12)
  !gapprompt@gap>| !gapinput@K:=NF(120,[1,49]) # Note that F is a subfield of K, with index 4.|
  !gapprompt@>| !gapinput@; # Then we can find e, f, and g for the extension K/F at the prime 5. |
  NF(120,[ 1, 49 ])
  !gapprompt@gap>| !gapinput@RamificationIndexAtP(F,120,5); RamificationIndexAtP(K,120,5); last2/last;|
  4
  2
  2
  !gapprompt@gap>| !gapinput@ResidueDegreeAtP(F,120,5); ResidueDegreeAtP(K,120,5); last2/last;|
  1
  1
  1
  !gapprompt@gap>| !gapinput@SplittingDegreeAtP(F,120,5); SplittingDegreeAtP(K,120,5); last2/last;|
  2
  1
  2
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Local index functions for Cyclic Cyclotomic Algebras}}\label{LocIndsOfCyclicCyclotomicAlgs}
\logpage{[ 7, 3, 0 ]}
\hyperdef{L}{X8405EF4D8264030A}{}
{
  

\subsection{\textcolor{Chapter }{LocalIndicesOfCyclicCyclotomicAlgebra}}
\logpage{[ 7, 3, 1 ]}\nobreak
\hyperdef{L}{X8780F8E87B6EC023}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndicesOfCyclicCyclotomicAlgebra({\mdseries\slshape A})\index{LocalIndicesOfCyclicCyclotomicAlgebra@\texttt{Local}\-\texttt{Indices}\-\texttt{Of}\-\texttt{Cyclic}\-\texttt{Cyclotomic}\-\texttt{Algebra}}
\label{LocalIndicesOfCyclicCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of the pairs \texttt{[p,m]} indicating the nontrivial local indices \texttt{m} at the primes \texttt{p} of the cyclic cyclotomic algebra indicated by \texttt{A}. 



 The input \texttt{A} must be a list representing a cyclic cyclotomic algebra in the same form as in
the output of \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) or \texttt{SimpleAlgebraByCharacterInfo} (\ref{SimpleAlgebraByCharacterInfo}). This function computes the local Schur indices at rational primes $p$ using the specialized functions for cyclic cyclotomic algebras described in
this section. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=[1,Rationals,6,[2,5,3]];|
  [ 1, Rationals, 6, [ 2, 5, 3 ] ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfCyclicCyclotomicAlgebra(A);|
  [ [ 3, 2 ], [ infinity, 2 ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{LocalIndexAtInfty}}
\logpage{[ 7, 3, 2 ]}\nobreak
\hyperdef{L}{X78588B587AEDD22F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtInfty({\mdseries\slshape A})\index{LocalIndexAtInfty@\texttt{LocalIndexAtInfty}}
\label{LocalIndexAtInfty}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtTwo({\mdseries\slshape A})\index{LocalIndexAtTwo@\texttt{LocalIndexAtTwo}}
\label{LocalIndexAtTwo}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtOddP({\mdseries\slshape A, p})\index{LocalIndexAtOddP@\texttt{LocalIndexAtOddP}}
\label{LocalIndexAtOddP}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 These return the local index of the cyclic cyclotomic algebra \mbox{\texttt{\mdseries\slshape A}} at the indicated rational prime. 



 The input \texttt{A} must be a cyclic cyclotomic algebra; that is, a list of the form \texttt{[r,F,n,[a,b,c]]} that indicates a cyclic cyclotomic crossed product algebra. This is a special
case of the output of \textsf{wedderga}'s \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) or \texttt{SimpleAlgebraByCharacterInfo} (\ref{SimpleAlgebraByCharacterInfo}). For the \texttt{LocalIndexAtOddP} function, \mbox{\texttt{\mdseries\slshape p}} must be an odd prime. The functions \texttt{PPartOfN} (\ref{PPartOfN}) and \texttt{PDashPartOfN} (\ref{PDashPartOfN}) are standard (and self-explanatory) arithmetic functions for a positive
integer $n$ and prime $p$. 

 These functions determine the local index of a cyclic cyclotomic algebra at
the rational primes \texttt{'infinity'}, $2$, or odd primes $p$, respectively. The first two functions check for a relationship of $A$ to a nonsplit real or 2-adic quaternion algebra. \texttt{LocalIndexAtOddP} calculates the local index at $p$ by counting the number of roots of unity coprime to $p$ found in the $p$-adic completion, and using a formula due to Janusz. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=[1,CF(4),20,[4,13,15]];|
  [ 1, GaussianRationals, 20, [ 4, 13, 15 ] ]
  !gapprompt@gap>| !gapinput@LocalIndexAtOddP(A,5);|
  4
  !gapprompt@gap>| !gapinput@A:=[1,NF(8,[1,7]),8,[2,7,4]];|
  [ 1, NF(8,[ 1, 7 ]), 8, [ 2, 7, 4 ] ]
  !gapprompt@gap>| !gapinput@LocalIndexAtInfty(A);|
  2
  !gapprompt@gap>| !gapinput@A:=[1,CF(7),28,[2,15,14]];                        |
  [ 1, CF(7), 28, [ 2, 15, 14 ] ]
  !gapprompt@gap>| !gapinput@LocalIndexAtTwo(A);     |
  2
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Local index functions for Non-Cyclic Cyclotomic Algebras}}\label{LocIndsOfCyclotomicAlgs}
\logpage{[ 7, 4, 0 ]}
\hyperdef{L}{X85FBEBDA787CD61E}{}
{
  

\subsection{\textcolor{Chapter }{LocalIndicesOfCyclotomicAlgebra}}
\logpage{[ 7, 4, 1 ]}\nobreak
\hyperdef{L}{X798DCABC8228F2DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndicesOfCyclotomicAlgebra({\mdseries\slshape A})\index{LocalIndicesOfCyclotomicAlgebra@\texttt{LocalIndicesOfCyclotomicAlgebra}}
\label{LocalIndicesOfCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of pairs \texttt{[p,m]} indicating the nontrivial local indices \texttt{m} at the primes \texttt{p} of the cyclic cyclotomic algebra indicated by \texttt{A}. 



 The input \texttt{A} should be a cyclotomic algebra; i.e. a list of length 2, 4, or 5 in the form
of the output by \textsf{Wedderga}'s ``-Info'' functions. If the cyclotomic algebra \mbox{\texttt{\mdseries\slshape A}} is represented by a list of length 2, the local indices are all $1$, so the function will return an empty list. If the cyclotomic algebra \mbox{\texttt{\mdseries\slshape A}} is given by a list of length 4, then it represents a cyclic cyclotomic
algebra, so the function \texttt{LocalIndicesOfCyclicCyclotomicAlgebra} (\ref{LocalIndicesOfCyclicCyclotomicAlgebra}) is utilized. If the cyclotomic algebra \texttt{A} is presented as a list of length 5, the function determines the group and
character \texttt{chi} that faithfully represent the algebra using \texttt{DefiningGroupOfCyclotomicAlgebra} (\ref{DefiningGroupOfCyclotomicAlgebra}) and \texttt{DefiningCharacterOfCyclotomicAlgebra} (\ref{DefiningCharacterOfCyclotomicAlgebra}). It uses the Frobenius-Schur indicator of \texttt{chi} to determine the local index at infinity (see \texttt{LocalIndexAtInftyByCharacter} (\ref{LocalIndexAtInftyByCharacter})). For local indices at odd primes and sometimes for the prime $2$, the defect group of the block containing \texttt{chi} will be cyclic, so the local index can be found using the values of a Brauer
character by a theorem of Benard (see \texttt{LocalIndexAtPByBrauerCharacter} (\ref{LocalIndexAtPByBrauerCharacter}).) Sometimes for the prime 2 the defect group is not necessarily cyclic, so in
these cases we appeal to the classification of dyadic Schur groups by Schmid
and Riese (see \texttt{LocalIndexAtTwoByCharacter} (\ref{LocalIndexAtTwoByCharacter})). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(480,600);|
  <pc group of size 480 with 7 generators>
  !gapprompt@gap>| !gapinput@W:=WedderburnDecompositionInfo(GroupRing(Rationals,G));;|
  !gapprompt@gap>| !gapinput@Size(W); |
  27
  !gapprompt@gap>| !gapinput@W[27]; |
  [ 1, NF(5,[ 1, 4 ]), 60, [ [ 2, 11, 0 ], [ 2, 19, 30 ], [ 2, 31, 30 ] ], 
    [ [ 0, 15 ], [ 45 ] ] ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfCyclotomicAlgebra(W[27]);|
  [ [ infinity, 2 ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{RootOfDimensionOfCyclotomicAlgebra}}
\logpage{[ 7, 4, 2 ]}\nobreak
\hyperdef{L}{X86AE281C7C69E42C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RootOfDimensionOfCyclotomicAlgebra({\mdseries\slshape A})\index{RootOfDimensionOfCyclotomicAlgebra@\texttt{RootOfDimensionOfCyclotomicAlgebra}}
\label{RootOfDimensionOfCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A positive integer representing the square root of the dimension of the
cyclotomic algebra over its center. 



 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=[3,Rationals,12,[[2,5,3],[2,7,0]],[[3]]];|
  [ 3, Rationals, 12, [ [ 2, 5, 3 ], [ 2, 7, 0 ] ], [ [ 3 ] ] ]
  !gapprompt@gap>| !gapinput@RootOfDimensionOfCyclotomicAlgebra(A);      |
  12
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{DefiningGroupOfCyclotomicAlgebra}}
\logpage{[ 7, 4, 3 ]}\nobreak
\hyperdef{L}{X7F33FE4F7E029BF7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DefiningGroupOfCyclotomicAlgebra({\mdseries\slshape A})\index{DefiningGroupOfCyclotomicAlgebra@\texttt{DefiningGroupOfCyclotomicAlgebra}}
\label{DefiningGroupOfCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DefiningCharacterOfCyclotomicAlgebra({\mdseries\slshape A})\index{DefiningCharacterOfCyclotomicAlgebra@\texttt{Defining}\-\texttt{Character}\-\texttt{Of}\-\texttt{Cyclotomic}\-\texttt{Algebra}}
\label{DefiningCharacterOfCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 These functions return a finite group \texttt{G} and a positive integer \texttt{n} for which the simple component of a group algebra over \texttt{G} over the center of the cyclotomic algebra \texttt{A} corresponding to the character \texttt{Irr(G)[n]} will be isomorphic to \texttt{A}. 

\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SimpleComponentOfGroupRingByCharacter({\mdseries\slshape F, G, n})\index{SimpleComponentOfGroupRingByCharacter@\texttt{Simple}\-\texttt{Component}\-\texttt{Of}\-\texttt{Group}\-\texttt{Ring}\-\texttt{By}\-\texttt{Character}}
\label{SimpleComponentOfGroupRingByCharacter}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list that describes the algebraic structure of the simple component of the
group algebra \texttt{FG} which corresponds to the irreducible character Irr(G)[n]. 



 This function is an alternative to \texttt{SimpleAlgebraByCharacterInfo(GroupRing(F,G),} \texttt{Irr(G)[n]);}. It is used in subroutines of local index functions when we need to work over
a field larger than the field of character values. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(48,15);|
  <pc group of size 48 with 5 generators>
  !gapprompt@gap>| !gapinput@R:=GroupRing(Rationals,G);                |
  <algebra-with-one over Rationals, with 5 generators>
  !gapprompt@gap>| !gapinput@W:=WedderburnDecompositionInfo(R);;  |
  !gapprompt@gap>| !gapinput@A:=W[10];|
  [ 1, Rationals, 12, [ [ 2, 5, 3 ], [ 2, 7, 0 ] ], [ [ 3 ] ] ]
  !gapprompt@gap>| !gapinput@g:=DefiningGroupOfCyclotomicAlgebra(A);|
  Group([ f3*f4*f5, f1, f2 ])
  !gapprompt@gap>| !gapinput@IdSmallGroup(g);|
  [ 48, 15 ]
  !gapprompt@gap>| !gapinput@DefiningCharacterOfCyclotomicAlgebra(A);|
  12
  !gapprompt@gap>| !gapinput@SimpleComponentOfGroupRingByCharacter(Rationals,G,12)|
  !gapprompt@>| !gapinput@;#Note:this cyclotomic algebra is isomorphic to the other by a change of basis. |
  [ 1, Rationals, 12, [ [ 2, 5, 3 ], [ 2, 7, 0 ] ], [ [ 3 ] ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{LocalIndexAtInftyByCharacter}}
\logpage{[ 7, 4, 4 ]}\nobreak
\hyperdef{L}{X8656B34387EC74EF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtInftyByCharacter({\mdseries\slshape F, G, n})\index{LocalIndexAtInftyByCharacter@\texttt{LocalIndexAtInftyByCharacter}}
\label{LocalIndexAtInftyByCharacter}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The local index at an infinite prime of the field \mbox{\texttt{\mdseries\slshape F}} of the irreducible character \texttt{Irr(G)[n]} of the finite group \mbox{\texttt{\mdseries\slshape G}}. 



 This function computes the Frobenius-Schur indicator of the irreducible
character \texttt{Irr(G)[n]}, and uses it to calculate the local index at \texttt{infinity} of the corresponding simple component of \mbox{\texttt{\mdseries\slshape FG}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(48,16);|
  <pc group of size 48 with 5 generators>
  !gapprompt@gap>| !gapinput@Size(Irr(G));                          |
  12
  !gapprompt@gap>| !gapinput@LocalIndexAtInftyByCharacter(Rationals,G,12);|
  2
  !gapprompt@gap>| !gapinput@LocalIndexAtInftyByCharacter(CF(3),G,12);    |
  1
  
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{DefectGroupOfConjugacyClassAtP}}
\logpage{[ 7, 4, 5 ]}\nobreak
\hyperdef{L}{X7A3FB2D9846974CD}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DefectGroupOfConjugacyClassAtP({\mdseries\slshape G, c, p})\index{DefectGroupOfConjugacyClassAtP@\texttt{DefectGroupOfConjugacyClassAtP}}
\label{DefectGroupOfConjugacyClassAtP}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DefectGroupsOfPBlock({\mdseries\slshape G, n, p})\index{DefectGroupsOfPBlock@\texttt{DefectGroupsOfPBlock}}
\label{DefectGroupsOfPBlock}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DefectOfCharacterAtP({\mdseries\slshape G, n, p})\index{DefectOfCharacterAtP@\texttt{DefectOfCharacterAtP}}
\label{DefectOfCharacterAtP}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first of these functions returns a defect group of the \texttt{c}-th conjugacy class of the finite group \texttt{G} at the prime \texttt{p}. The second returns the conjugacy class of \texttt{p}-subgroups of \texttt{G} that consists of defect groups for the \texttt{p}-block containing the ordinary irreducible character \texttt{Irr(G)[n]}. The last of these functions returns the nonnegative integer \texttt{d} for which \texttt{p\texttt{\symbol{94}}d} is the order of a \texttt{p}-defect group for \texttt{Irr(G)[n]}. 



 The \texttt{p}-defect group of a given conjugacy class of \texttt{G} is a \texttt{p}-Sylow subgroup of the centralizer in \texttt{G} of any representative of the class. A defect group for a \texttt{p}-block of \texttt{G} is a minimal \texttt{p}-subgroup that is a defect group for a defect class of the block. By Brauer's
Min-Max theorem, this will occur for at least one \texttt{p}-regular class of \texttt{G}. The function \texttt{DefectGroupsOfPBlock} identifies the defect classes for the block containing \texttt{Irr(G)[n]}, finds the one whose defect group has minimal order, and returns the
conjugacy class of the defect group of this class. The function \texttt{DefectOfCharacterAtP} gives the logarithm base \texttt{p} of the order of a defect group of the \texttt{p}-block containing the character \texttt{Irr(G)[n]}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(72,21);|
  <pc group of size 72 with 5 generators>
  !gapprompt@gap>| !gapinput@D:=DefectGroupOfConjugacyClassAtP(G,18,3);|
  Group([ f4, f5 ])
  !gapprompt@gap>| !gapinput@IsCyclic(last);|
  false
  !gapprompt@gap>| !gapinput@D:=DefectGroupsOfPBlock(G,Irr(G)[18],3);|
  Group( [ f4, f5 ] )^G
  !gapprompt@gap>| !gapinput@IsCyclic(Representative(D));    |
  false
  !gapprompt@gap>| !gapinput@DefectOfCharacterAtP(G,Irr(G)[18],3);|
  2
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{LocalIndexAtPByBrauerCharacter}}
\logpage{[ 7, 4, 6 ]}\nobreak
\hyperdef{L}{X80D1046284577B32}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtPByBrauerCharacter({\mdseries\slshape F, G, n, p})\index{LocalIndexAtPByBrauerCharacter@\texttt{LocalIndexAtPByBrauerCharacter}}
\label{LocalIndexAtPByBrauerCharacter}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{FinFieldExt({\mdseries\slshape F, G, p, n, m})\index{FinFieldExt@\texttt{FinFieldExt}}
\label{FinFieldExt}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first returns the local index at the rational prime $p$ of the simple component of the group ring \texttt{FG} that corresponds to \texttt{Irr(G)[n]}. The second returns the degree of a certain extension of finite fields of \texttt{p}-power order. 



 The input of \texttt{LocalIndexAtPByBrauerCharacter} must be an abelian number field \mbox{\texttt{\mdseries\slshape F}}, a finite group \mbox{\texttt{\mdseries\slshape G}}, and the number \mbox{\texttt{\mdseries\slshape n}} of an ordinary irreducible character \texttt{Irr(G)[n]}, and \mbox{\texttt{\mdseries\slshape p}} a prime divisor of the order of \mbox{\texttt{\mdseries\slshape G}}. Since this function is intended to be used for faithful characters of groups
that are the defining groups of non-cyclic cyclotomic algebras that result
from \textsf{Wedderga}'s Info functions, it is expected that \texttt{G} is a non-nilpotent cyclic-by-abelian group, and \texttt{Irr(G)[n]} is a faithful character. The Brauer character table records of such groups can
be accessed in \texttt{GAP} (provided \texttt{G} is sufficiently small). 

 The local index calculation uses Benard's theorem, which shows that the local
index at \mbox{\texttt{\mdseries\slshape p}} of the simple component of the rational group algebra \mbox{\texttt{\mdseries\slshape QG}} corresponding to the character \texttt{Irr(G)[n]} is the degree of the extension of the residue field of the center given by
adjoining an irreducible \mbox{\texttt{\mdseries\slshape p}}-Brauer character \texttt{IBr(G,p)[m]} lying in the same block, provided the defect group of the block is cyclic. If
the defect group of the block is not cyclic, the resulting calculation is
unreliable, and the function will output a list whose second term is the
warning label \texttt{"DGnotCyclic"}. The degree of this finite field extension is calculated by \texttt{FinFieldExt}. It determines the local index relative to the field \texttt{F} by dividing the local index at $p$ over the rationals by a constant determied using a theorem of Yamada. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(80,28);|
  <pc group of size 80 with 5 generators>
  !gapprompt@gap>| !gapinput@T:=CharacterTable(G);;                                         |
  !gapprompt@gap>| !gapinput@S:=T mod 5;|
  BrauerTable( <pc group of size 80 with 5 generators>, 5 )
  !gapprompt@gap>| !gapinput@BlocksInfo(S);|
  [ rec( defect := 1, modchars := [ 1, 3, 7, 8 ], 
        ordchars := [ 1, 3, 7, 8, 18 ] ), 
    rec( defect := 1, modchars := [ 2, 4, 5, 6 ], 
        ordchars := [ 2, 4, 5, 6, 17 ] ), 
    rec( defect := 1, modchars := [ 9, 12, 14, 15 ], 
        ordchars := [ 9, 12, 14, 15, 19 ] ), 
    rec( defect := 1, modchars := [ 10, 11, 13, 16 ], 
        ordchars := [ 10, 11, 13, 16, 20 ] ) ]
  !gapprompt@gap>| !gapinput@LocalIndexAtPByBrauerCharacter(Rationals,G,20,5);|
  2
  !gapprompt@gap>| !gapinput@LocalIndexAtPByBrauerCharacter(Rationals,G,10,5);|
  1
  !gapprompt@gap>| !gapinput@FinFieldExt(Rationals,G,5,20,10);|
  2
  !gapprompt@gap>| !gapinput@FinFieldExt(Rationals,G,5,10,10);                |
  1
  !gapprompt@gap>| !gapinput@ValuesOfClassFunction(Irr(G)[20]);  |
  [ 4, 0, 4*E(4), 0, -4, -1, 0, 0, 0, 0, -4*E(4), -E(4), 0, 1, 0, 0, 0, 0, 
    E(4), 0 ]
  !gapprompt@gap>| !gapinput@ValuesOfClassFunction(Irr(G)[10]);  |
  [ 1, -E(8)^3, E(4), -E(4), -1, 1, E(8), -E(8), E(8)^3, 1, -E(4), E(4), E(4), 
    -1, -E(8)^3, -E(8), E(8), -1, -E(4), E(8)^3 ]
  !gapprompt@gap>| !gapinput@ValuesOfClassFunction(IBr(G,5)[10]);|
  [ 1, -E(8)^3, E(4), -E(4), -1, E(8), -E(8), E(8)^3, 1, -E(4), E(4), -E(8)^3, 
    -E(8), E(8), -1, E(8)^3 ]
  
\end{Verbatim}
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(72,20);|
  <pc group of size 72 with 5 generators>
  !gapprompt@gap>| !gapinput@LocalIndexAtPByBrauerCharacter(Rationals,G,Irr(G)[11],3);|
  [ 2, "DGnotCyclic" ]
  !gapprompt@gap>| !gapinput@LocalIndexAtPByBrauerCharacter(Rationals,G,Irr(G)[13],2);|
  1
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{LocalIndexAtOddPByCharacter}}
\logpage{[ 7, 4, 7 ]}\nobreak
\hyperdef{L}{X82A979548619CB85}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtOddPByCharacter({\mdseries\slshape F, G, n, p})\index{LocalIndexAtOddPByCharacter@\texttt{LocalIndexAtOddPByCharacter}}
\label{LocalIndexAtOddPByCharacter}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndexAtTwoByCharacter({\mdseries\slshape F, G, n})\index{LocalIndexAtTwoByCharacter@\texttt{LocalIndexAtTwoByCharacter}}
\label{LocalIndexAtTwoByCharacter}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsDyadicSchurGroup({\mdseries\slshape G})\index{IsDyadicSchurGroup@\texttt{IsDyadicSchurGroup}}
\label{IsDyadicSchurGroup}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first two function determines the local index at the given prime $p$ of the simple component of \mbox{\texttt{\mdseries\slshape FG}} corresponding to the irreducible character \texttt{Irr(G)[n]}. The third one returns \texttt{'true'} if \texttt{G} is a dyadic Schur group, and otherwise \texttt{'false'} . 



 \texttt{LocalIndexAtOddPByCharacter} and \texttt{LocalIndexAtTwoByCharacter} first determine a cyclotomic algebra representing the simple component of \mbox{\texttt{\mdseries\slshape FG}} corresponding to the character \texttt{Irr(G)[n]}. They then extend the field $F$ to $K$, where $K$ is the maximal $p$-split subextension of \texttt{F(E(n))/F}, and recalculates the simple component of \texttt{KG} corresponding to \texttt{Irr(G)[n]}. It then uses the \texttt{DefiningGroup...} functions to reduce to a faithful character of a possibly smaller
cyclic-by-abelian group. If the simple component for this character is given
in \textsf{Wedderga} as a list of length 2 or 4, they make use of \texttt{LocalIndexAtOddP} (\ref{LocalIndexAtOddP}) or \texttt{LocalIndexAtTwo} (\ref{LocalIndexAtTwo}) as appropriate. If the simple component over $F$ has length 5, it checks if the defect group of the $p$-block containing \texttt{Irr(G)[n]} is cyclic. If this is definitely so, they use \texttt{LocalIndexAtPByBrauerCharacter} (\ref{LocalIndexAtPByBrauerCharacter}) to calculate the $p$-local index. Exceptions can occur when $p$ is $2$. When the defect group is not necessarily cyclic, \texttt{LocalIndexAtTwoByCharacter} makes use of \texttt{IsDyadicSchurGroup}, which checks if a quasi-elementary group has a faithful irreducible
character \texttt{2}-local index \texttt{2}, then verifies that $K$ does not split the simple component generated by this character. 

 These functions are designed for faithful characters of groups that faithfully
represent cyclotomic algebras, and so should be used with caution in other
situations. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(48,15);|
  <pc group of size 48 with 5 generators>
  !gapprompt@gap>| !gapinput@Size(Irr(G));|
  12
  !gapprompt@gap>| !gapinput@LocalIndexAtOddPByCharacter(Rationals,G,12,3);|
  2
  !gapprompt@gap>| !gapinput@LocalIndexAtTwoByCharacter(Rationals,G,12);  |
  2
  !gapprompt@gap>| !gapinput@LocalIndexAtTwoByCharacter(CF(3),G,12);    |
  1
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Local index functions for Rational Quaternion Algebras}}\label{LocalIndicesOfRationalQuaternionAlgebras}
\logpage{[ 7, 5, 0 ]}
\hyperdef{L}{X82E9840B843D666E}{}
{
  

\subsection{\textcolor{Chapter }{LocalIndicesOfRationalQuaternionAlgebra}}
\logpage{[ 7, 5, 1 ]}\nobreak
\hyperdef{L}{X78E6B3807EDDE82E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndicesOfRationalQuaternionAlgebra({\mdseries\slshape A})\index{LocalIndicesOfRationalQuaternionAlgebra@\texttt{Local}\-\texttt{Indices}\-\texttt{Of}\-\texttt{Rational}\-\texttt{Quaternion}\-\texttt{Algebra}}
\label{LocalIndicesOfRationalQuaternionAlgebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndicesOfRationalSymbolAlgebra({\mdseries\slshape a, b})\index{LocalIndicesOfRationalSymbolAlgebra@\texttt{LocalIndicesOfRationalSymbolAlgebra}}
\label{LocalIndicesOfRationalSymbolAlgebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{LocalIndicesOfTensorProductOfQuadraticAlgs({\mdseries\slshape L, M})\index{LocalIndicesOfTensorProductOfQuadraticAlgs@\texttt{Local}\-\texttt{Indices}\-\texttt{Of}\-\texttt{Tensor}\-\texttt{Product}\-\texttt{Of}\-\texttt{Quadratic}\-\texttt{Algs}}
\label{LocalIndicesOfTensorProductOfQuadraticAlgs}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{GlobalSchurIndexFromLocalIndices({\mdseries\slshape L})\index{GlobalSchurIndexFromLocalIndices@\texttt{GlobalSchurIndexFromLocalIndices}}
\label{GlobalSchurIndexFromLocalIndices}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The first of these functions return a list of pairs \texttt{[p,m]} indicating that \texttt{m} is the local index at the prime $p$ for the given quaternion algebra. The second does the same for \texttt{QuaternionAlgebra(Rationals,a,b)}. The third returns a list of local indices computed from two given lists of
local indices, and the fourth returns the least common multiple of the local
indices in the given list of local indices. 



 For the first function, the input must be a quaternion algebra over the
rationals, output from \texttt{QuaternionAlgebra(Rationals,a,b)}. For the first function, $a$ and $b$ can be any pair of integers, and for the second rational symbol algebra
version, $a$ and $b$ should be either -1 or positive prime integers. The input of the third
function is a pair of lists of $p$-local indices in which the maximum local index at any prime is at most 2. The
input of the fourth function is a list of pairs \texttt{[p,m]} in which each prime that appears only appears in one of the pairs, and the \texttt{m}'s that appear are all positive integers. 

 \texttt{LocalIndicesOfRationalQuaternionAlgebra} first factors the algebra as a tensor product of rational quaternion algebras,
obtaining suitable pairs \texttt{a} and \texttt{b} to which \texttt{LocalIndicesOfRationalSymbolAlgebra} can be applied. The local indices are calculated using well-known formulas
involving the Legendre Symbol. The local indices of the original algebra are
then determined using \texttt{LocalIndicesOfTensorProductOfQuadraticAlgs}, which takes a pair of lists of local indices of quadratic algebras - for
which the maximum local index at any prime $p$ is 2, and finds the list of local indices of the tensor product of two
algebras with these local indices. 

 \texttt{GlobalSchurIndexFromLocalIndices} simply computes the least common multiple of the local indices at each prime
that occurs in the list. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalSymbolAlgebra(-1,-1);|
  [ [ infinity, 2 ], [ 2, 2 ] ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalSymbolAlgebra(3,-1); |
  [ [ 2, 2 ], [ 3, 2 ] ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalSymbolAlgebra(-3,2);|
  [  ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalSymbolAlgebra(3,7); |
  [ [ 2, 2 ], [ 7, 2 ] ]
  !gapprompt@gap>| !gapinput@A:=QuaternionAlgebra(Rationals,-30,-15);   |
  <algebra-with-one of dimension 4 over Rationals>
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalQuaternionAlgebra(A);|
  [ [ 5, 2 ], [ infinity, 2 ] ]
  !gapprompt@gap>| !gapinput@A:=QuaternionAlgebra(CF(5),3,-2);          |
  <algebra-with-one of dimension 4 over CF(5)>
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalQuaternionAlgebra(A);|
  fail
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{IsRationalQuaternionAlgebraADivisionRing}}
\logpage{[ 7, 5, 2 ]}\nobreak
\hyperdef{L}{X79071DD8853678C0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsRationalQuaternionAlgebraADivisionRing({\mdseries\slshape A})\index{IsRationalQuaternionAlgebraADivisionRing@\texttt{IsRational}\-\texttt{Quaternion}\-\texttt{Algebra}\-\texttt{A}\-\texttt{Division}\-\texttt{Ring}}
\label{IsRationalQuaternionAlgebraADivisionRing}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 If the rational quaternion algebra is a noncommutative division ring, \texttt{true} is returned, and if otherwise, \texttt{false}. 



 The input $A$ must be a quaternion algebra over the rationals, as output from \texttt{QuaternionAlgebra(Rationals,a,b)}. $a$ and $b$ must be rational integers. When applied to other algebras, it returns \texttt{fail}. 

 The function calculates the rational Schur index of the algebra using \texttt{LocalIndicesOfRationalQuaternionAlgebra} (\ref{LocalIndicesOfRationalQuaternionAlgebra}), and returns \texttt{true} if the rational Schur index of the algebra is \texttt{2}, and \texttt{false} if the rational Schur index is \texttt{1}. 

 This function should be preferred over \texttt{GAP}'s \texttt{IsDivisionRing} (\textbf{Reference: IsDivisionRing}) when dealing with rational quaternion algebras, since the result of latter
function only depends on the local index at infinity for quaternion algebras,
and makes no use of the local indices at the finite primes. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=QuaternionAlgebra(Rationals,-30,-15);           |
  <algebra-with-one of dimension 4 over Rationals>
  !gapprompt@gap>| !gapinput@IsRationalQuaternionAlgebraADivisionRing(A);|
  true
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalQuaternionAlgebra(A);|
  [ [ 5, 2 ], [ infinity, 2 ] ]
  !gapprompt@gap>| !gapinput@A:=QuaternionAlgebra(Rationals,3,-2);       |
  <algebra-with-one of dimension 4 over Rationals>
  !gapprompt@gap>| !gapinput@IsRationalQuaternionAlgebraADivisionRing(A);|
  false
  !gapprompt@gap>| !gapinput@LocalIndicesOfRationalQuaternionAlgebra(A);|
  [  ]
  
\end{Verbatim}
 }

 }

  
\section{\textcolor{Chapter }{Functions involving Cyclic Algebras}}\label{Cyclic}
\logpage{[ 7, 6, 0 ]}
\hyperdef{L}{X8164EAE07A90DB11}{}
{
  Cyclic algebras are represented in \textsf{Wedderga} as lists of length 3, in the form \texttt{[F,K,[c]]}, which stands for a cyclic crossed product algebra of the form \texttt{(K/F,c)}, with \texttt{K/F} a cyclic galois extension of abelian number fields, and \texttt{c} an element of \texttt{F} determining the factor set. Schur indices of cyclic algebras can be determined
through the solution of inverse norm equations in general. Though currently
algorithms for this are not available in \textsf{GAP}, algorithms have been implemented in some computational number theory
software systems such as \textsf{PARI/GP}. 

 The functions in this section allow one to convert cyclotomic algebras into
cyclic algebras (or possibly as tensor products of two cyclic algebras), to
convert generalized quaternion algebras into quadratic algebras (i.e. cyclic
algebras for a Galois extension of degree 2), to convert quadratic algebras
into generalized quaternion algebras, and to convert cyclic algebras into
cyclic cyclotomic algebras, whenever possible. 

\subsection{\textcolor{Chapter }{DecomposeCyclotomicAlgebra}}
\logpage{[ 7, 6, 1 ]}\nobreak
\hyperdef{L}{X8671E3BD788B709F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{DecomposeCyclotomicAlgebra({\mdseries\slshape A})\index{DecomposeCyclotomicAlgebra@\texttt{DecomposeCyclotomicAlgebra}}
\label{DecomposeCyclotomicAlgebra}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 Two lists, each representing a cyclic algebra over the center of $A$, whose tensor product is isomorphic to the cyclotomic algebra described by $A$. 



 The input must be list representing a cyclotomic algebra of length 5 whose
Galois group has \texttt{2} generators. This is represented in \textsf{Wedderga} as a list of the form \texttt{[r,F,n,[[m1,k1,l1],[m2,k2,l2]],[[d]]]}. (Longer presentations of cyclotomic algebras do occur in \textsf{Wedderga} output. Currently we do not have a general decomposition algorithm for them.) 

 For these algebras, the extension \texttt{F(E(n))/F} is the tensor product of two disjoint extensions \texttt{K1} and \texttt{K2} of \texttt{F}, and the program adjusts one of the factor sets (corresponding to $l1$ or $l2$) so that $d$ becomes \texttt{0}. After this adjustment, the algebra is then the tensor product of cyclic
algebras of the form \texttt{[F,K1,[c1]]} and \texttt{[F,K2,[c2]]} provided \texttt{c1} and \texttt{c2} lie in \texttt{F}. If the latter condition is not satisfied, the string ``fails'' is appended to the output. (We have not encountered this problem among the
group algebras of small groups we have tested so far.) 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=SmallGroup(96,35);|
  <pc group of size 96 with 6 generators>
  !gapprompt@gap>| !gapinput@W:=WedderburnDecompositionInfo(GroupRing(Rationals,G));;|
  !gapprompt@gap>| !gapinput@Size(W);|
  12
  !gapprompt@gap>| !gapinput@A:=W[12];|
  [ 1, NF(8,[ 1, 7 ]), 24, [ [ 2, 7, 12 ], [ 2, 17, 9 ] ], [ [ 3 ] ] ]
  !gapprompt@gap>| !gapinput@DecomposeCyclotomicAlgebra(A);|
  [ [ NF(8,[ 1, 7 ]), CF(8), [ -1 ] ], 
    [ NF(8,[ 1, 7 ]), NF(24,[ 1, 7 ]), [ -2-E(8)+E(8)^3 ] ] ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{ConvertCyclicAlgToCyclicCyclotomicAlg}}
\logpage{[ 7, 6, 2 ]}\nobreak
\hyperdef{L}{X8129F9307969D473}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ConvertCyclicAlgToCyclicCyclotomicAlg({\mdseries\slshape A})\index{ConvertCyclicAlgToCyclicCyclotomicAlg@\texttt{Convert}\-\texttt{Cyclic}\-\texttt{Alg}\-\texttt{To}\-\texttt{Cyclic}\-\texttt{CyclotomicAlg}}
\label{ConvertCyclicAlgToCyclicCyclotomicAlg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of the form \texttt{[1,F,n,[a,b,c]]} which represents a cyclic cyclotomic algebra. 



 This function converts a cyclic algebra given by a list \texttt{[F,F(E(n)),[E(n)\texttt{\symbol{94}}c]]} to an isomorphic cyclic cyclotomic algebra represented as the list \texttt{[1,F,n,[a,b,c]]}. \noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ConvertQuadraticAlgToQuaternionAlg({\mdseries\slshape A})\index{ConvertQuadraticAlgToQuaternionAlg@\texttt{ConvertQuadraticAlgToQuaternionAlg}}
\label{ConvertQuadraticAlgToQuaternionAlg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A generalized quaternion algebra. 



 The input should be a list of the form \texttt{[F,K,[c]]} where the field \texttt{K} must be obtained by adjoining the square root of a nonsquare element \texttt{d} of \texttt{F}. The function then returns the quaternion algebra given in \texttt{GAP} by \texttt{QuaternionAlgebra(F,d,c);}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=[NF(24,[1,11]),CF(24),[-1]];|
  [ NF(24,[ 1, 11 ]), CF(24), [ -1 ] ]
  !gapprompt@gap>| !gapinput@ConvertCyclicAlgToCyclicCyclotomicAlg(A);|
  [ 1, NF(24,[ 1, 11 ]), 24, [ 2, 11, 12 ] ]
  !gapprompt@gap>| !gapinput@LocalIndicesOfCyclicCyclotomicAlgebra(last);|
  [  ]
  !gapprompt@gap>| !gapinput@ConvertQuadraticAlgToQuaternionAlg(A);|
  <algebra-with-one of dimension 4 over NF(24,[ 1, 11 ])>
  !gapprompt@gap>| !gapinput@b:=Basis(last);|
  CanonicalBasis( <algebra-with-one of dimension 4 over NF(24,[ 1, 11 ])> )
  !gapprompt@gap>| !gapinput@b[1]^2; b[2]^2; b[3]^2; b[4]^2;|
  e
  (-1)*e
  (-1)*e
  (-1)*e
  !gapprompt@gap>| !gapinput@b[2]*b[3]+b[3]*b[2];|
  0*e
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{ConvertQuaternionAlgToQuadraticAlg}}
\logpage{[ 7, 6, 3 ]}\nobreak
\hyperdef{L}{X81FAC27A829D5FF9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ConvertQuaternionAlgToQuadraticAlg({\mdseries\slshape A})\index{ConvertQuaternionAlgToQuadraticAlg@\texttt{ConvertQuaternionAlgToQuadraticAlg}}
\label{ConvertQuaternionAlgToQuadraticAlg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of the form \texttt{[F,K,[c]]} representing a cyclic algebra for which the degree of the extension \texttt{K/F} is \texttt{2}. 



 The input must be a quaternion algebra whose center is an abelian number field $F$, presented as in the output from \texttt{QuaternionAlgebra( F, a, b )}, with $a$, $b$ in $F$. It returns a list \texttt{[F,F(ER(a)),[b]]} representing the cyclic algebra isomorphic to $A$. \noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ConvertCyclicCyclotomicAlgToCyclicAlg({\mdseries\slshape A})\index{ConvertCyclicCyclotomicAlgToCyclicAlg@\texttt{Convert}\-\texttt{Cyclic}\-\texttt{Cyclotomic}\-\texttt{Alg}\-\texttt{To}\-\texttt{CyclicAlg}}
\label{ConvertCyclicCyclotomicAlgToCyclicAlg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 A list of the form \texttt{[F,K,[c]]}. 



The input should be a list \texttt{[r,F,n,[a,b,c]]} representing a matrix ring over a cyclic cyclotomic algebra. The function
returns the list \texttt{[F,F(E(n)),[E(n)\texttt{\symbol{94}}c]]}, which represents a cyclic algebra that is Morita equivalent to the given
cyclic cyclotomic algebra. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@A:=QuaternionAlgebra(CF(5),-3,-1);|
  <algebra-with-one of dimension 4 over CF(5)>
  !gapprompt@gap>| !gapinput@ConvertQuaternionAlgToQuadraticAlg(A);|
  [ CF(5), CF(15), [ -1 ] ]
  !gapprompt@gap>| !gapinput@ConvertCyclicAlgToCyclicCyclotomicAlg(last);|
  [ 1, CF(5), 30, [ 2, 11, 15 ] ]
  !gapprompt@gap>| !gapinput@SchurIndex(last);|
  1
  !gapprompt@gap>| !gapinput@ConvertCyclicCyclotomicAlgToCyclicAlg(last2);|
  [ 1, [ CF(5), CF(15), [ -1 ] ] ]
  !gapprompt@gap>| !gapinput@ConvertQuadraticAlgToQuaternionAlg(last[2]);|
  <algebra-with-one of dimension 4 over CF(5)>
  !gapprompt@gap>| !gapinput@b:=Basis(last); b[1]^2; b[2]^2; b[3]^2; b[4]^2;|
  Basis( <algebra-with-one of dimension 4 over CF(5)>, ... )
  e
  (-3)*e
  (-1)*e
  (-3)*e
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Applications of the Wedderga package}}\label{Applications}
\logpage{[ 8, 0, 0 ]}
\hyperdef{L}{X83FD4D318127261B}{}
{
  
\section{\textcolor{Chapter }{Coding theory applications}}\label{CodingTheory}
\logpage{[ 8, 1, 0 ]}
\hyperdef{L}{X8582FB957C58DFB3}{}
{
  

\subsection{\textcolor{Chapter }{CodeWordByGroupRingElement}}
\logpage{[ 8, 1, 1 ]}\nobreak
\hyperdef{L}{X7AE55D3C7BFCF3A9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CodeWordByGroupRingElement({\mdseries\slshape F, S, a})\index{CodeWordByGroupRingElement@\texttt{CodeWordByGroupRingElement}}
\label{CodeWordByGroupRingElement}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 The code word of length the length of \mbox{\texttt{\mdseries\slshape S}} associated to the group ring element \mbox{\texttt{\mdseries\slshape a}}. 



 The input \mbox{\texttt{\mdseries\slshape F}} should be a finite field. The input \mbox{\texttt{\mdseries\slshape S}} is a fixed ordering of a group $G$ and \mbox{\texttt{\mdseries\slshape a}} is an element in the group algebra $FG$. 

 Each element $c$ in $FG$ is of the form $ c=\sum_{i=1}^n f_i g_i$, where we fix an ordering $\{g_1,g_2,...,g_n \}$ of the group elements of $G$ and $f_i\in F$. If we look at $c$ as a codeword, we will write $[f_1 f_2 ... f_n]$. (\ref{codes}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(8);;|
  !gapprompt@gap>| !gapinput@F:=GF(3);;          |
  !gapprompt@gap>| !gapinput@FG:=GroupRing(F,G);;|
  !gapprompt@gap>| !gapinput@a:=AsList(FG)[27];|
  (Z(3)^0)*<identity> of ...+(Z(3)^0)*f1+(Z(3)^0)*f2+(Z(3)^0)*f3+(Z(3)^
  0)*f1*f2+(Z(3)^0)*f2*f3+(Z(3))*f1*f2*f3
  !gapprompt@gap>| !gapinput@S:=AsSet(G);|
  [ <identity> of ..., f1, f2, f3, f1*f2, f1*f3, f2*f3, f1*f2*f3 ]
  !gapprompt@gap>| !gapinput@CodeWordByGroupRingElement(F,S,a);|
  [ Z(3)^0, Z(3)^0, Z(3)^0, Z(3)^0, Z(3)^0, 0*Z(3), Z(3)^0, Z(3) ]
  
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{CodeByLeftIdeal}}
\logpage{[ 8, 1, 2 ]}\nobreak
\hyperdef{L}{X7C8BBBDB78A1678E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CodeByLeftIdeal({\mdseries\slshape F, G, S, I})\index{CodeByLeftIdeal@\texttt{CodeByLeftIdeal}}
\label{CodeByLeftIdeal}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
 All code words of length the length of \mbox{\texttt{\mdseries\slshape S}} associated to the group ring elements in the ideal \mbox{\texttt{\mdseries\slshape I}} of \mbox{\texttt{\mdseries\slshape FG}}. 



 The input \mbox{\texttt{\mdseries\slshape F}} should be a finite field. The input \mbox{\texttt{\mdseries\slshape S}} is a fixed ordering of a group $G$ and \mbox{\texttt{\mdseries\slshape I}} is a left ideal of the group algebra $FG$. 

 Each element $c$ in $FG$ is of the form $ c=\sum_{i=1}^n f_i g_i$, where we fix an ordering $\{g_1,g_2,...,g_n \}$ of the group elements of $G$ and $f_i\in F$. If we look at $c$ as a codeword, we will write $[f_1 f_2 ... f_n]$. (\ref{codes}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  
  !gapprompt@gap>| !gapinput@G:=DihedralGroup(8);;|
  !gapprompt@gap>| !gapinput@F:=GF(3);;          |
  !gapprompt@gap>| !gapinput@FG:=GroupRing(F,G);;|
  !gapprompt@gap>| !gapinput@S:=AsSet(G);|
  [ <identity> of ..., f1, f2, f3, f1*f2, f1*f3, f2*f3, f1*f2*f3 ]
  !gapprompt@gap>| !gapinput@H:=StrongShodaPairs(G)[5][1];|
  Group([ f1*f2, f3, f3 ])
  !gapprompt@gap>| !gapinput@K:=StrongShodaPairs(G)[5][2];|
  Group([ f1*f2 ])
  !gapprompt@gap>| !gapinput@N:=Normalizer(G,K);|
  Group([ f1*f2*f3, f3 ])
  !gapprompt@gap>| !gapinput@epi:=NaturalHomomorphismByNormalSubgroup(N,K);|
  [ f1*f2*f3, f3 ] -> [ f1, f1 ]
  !gapprompt@gap>| !gapinput@QHK:=Image(epi,H);|
  Group([ <identity> of ..., f1, f1 ])
  !gapprompt@gap>| !gapinput@gq:=MinimalGeneratingSet(QHK)[1];|
  f1
  !gapprompt@gap>| !gapinput@C:=CyclotomicClasses(Size(F),Index(H,K))[2];|
  [ 1 ]
  !gapprompt@gap>| !gapinput@e:=PrimitiveIdempotentsNilpotent(FG,H,K,C,[epi,gq]);   |
  [ (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3)^0)*f1*f2+(Z(3))*f1*f2*f3, 
    (Z(3)^0)*<identity> of ...+(Z(3))*f3+(Z(3))*f1*f2+(Z(3)^0)*f1*f2*f3 ]
  !gapprompt@gap>| !gapinput@FGe := LeftIdealByGenerators(FG,[e[1]]);;|
  !gapprompt@gap>| !gapinput@V := VectorSpace(F,CodeByLeftIdeal(F,G,S,FGe));;|
  !gapprompt@gap>| !gapinput@B := Basis(V);;|
  !gapprompt@gap>| !gapinput@LoadPackage("guava");;|
  !gapprompt@gap>| !gapinput@code := GeneratorMatCode(B,F);|
  a linear [8,2,1..4]4..5 code defined by generator matrix over GF(3)
  !gapprompt@gap>| !gapinput@MinimumDistance(code);|
  4
  
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{The basic theory behind \textsf{Wedderga}}}\label{Theory}
\logpage{[ 9, 0, 0 ]}
\hyperdef{L}{X8487E7AD7D6B2EA5}{}
{
  In this chapter we describe the theory that is behind the algorithms used by \textsf{Wedderga}. 

 All the rings considered in this chapter are associative and have an identity. 

 We use the following notation: ${\ensuremath{\mathbb Q}}$ denotes the field of rationals and $\mathbb F_q$ the finite field of order $q$. For every positive integer $k$, we denote a complex $k$-th primitive root of unity by $\xi_k$ and so ${\ensuremath{\mathbb Q}}(\xi_k)$ is the $k$-th cyclotomic extension of ${\ensuremath{\mathbb Q}}$. 
\section{\textcolor{Chapter }{Group rings and group algebras}}\label{GroupRings}
\logpage{[ 9, 1, 0 ]}
\hyperdef{L}{X815ECCD97B18314B}{}
{
  \index{group ring} Given a group $G$ and a ring $R$, the \emph{group ring} $RG$ over the group $G$ with coefficients in $R$ is the ring whose underlying additive group is a right $R-$module with basis $G$ such that the product is defined by the following rule 
\[ (gr)(hs)=(gh)(rs) \]
 for $r,s \in R$ and $g, h \in G$, and extended to $RG$ by linearity. 

 \index{group algebra} A \emph{group algebra} is a group ring in which the coefficient ring is a field. }

  
\section{\textcolor{Chapter }{Semisimple group algebras}}\label{Semisimple}
\logpage{[ 9, 2, 0 ]}
\hyperdef{L}{X7FDD93FB79ADCC91}{}
{
  \index{semisimple ring} We say that a ring $R$ is semisimple if it is a direct sum of simple left (alternatively right)
ideals or equivalently if $R$ is isomorphic to a direct product of simple algebras each one isomorphic to a
matrix ring over a division ring. 

 By Maschke's Theorem, if $G$ is a finite group then the group algebra $FG$ is semisimple if and only the characteristic of the coefficient field $F$ does not divide the order of $G$. 

 In fact, an arbitrary group ring $RG$ is semisimple if and only if the coefficient ring $R$ is semisimple, the group $G$ is finite and the order of $G$ is invertible in $R$. 

 Some authors use the notion semisimple ring for rings with zero Jacobson
radical. To avoid confusion we usually refer to semisimple rings as semisimple
artinian rings. }

  
\section{\textcolor{Chapter }{Wedderburn components}}\label{WedDec}
\logpage{[ 9, 3, 0 ]}
\hyperdef{L}{X84BB4A6081EAE905}{}
{
  \index{Wedderburn decomposition} \index{Wedderburn components} If $R$ is a \emph{semisimple ring} (\ref{Semisimple}) then the \emph{Wedderburn decomposition} of $R$ is the decomposition of $R$ as a direct product of simple algebras. The factors of this Wedderburn
decomposition are called \emph{Wedderburn components} of $R$. Each Wedderburn component of $R$ is of the form $Re$ for $e$ a \emph{primitive central idempotent} (\ref{Idempotents}) of $R$. 

 Let $FG$ be a \emph{semisimple group algebra} (\ref{Semisimple}). If $F$ has positive characteristic, then the Wedderburn components of $FG$ are matrix algebras over finite extensions of $F$. If $F$ has zero characteristic then by the \emph{Brauer-Witt Theorem} \cite{Y}, the \emph{Wedderburn components} of $FG$ are \emph{Brauer equivalent} (\ref{Brauer}) to \emph{cyclotomic algebras} (\ref{Cyclotomic}). 

 The main functions of \textsf{Wedderga} compute the Wedderburn components of a semisimple group algebra $FG$, such that the coefficient field is either an abelian number field (i.e. a
subfield of a finite cyclotomic extension of the rationals) or a finite field.
In the finite case, the Wedderburn components are matrix algebras over finite
fields and so can be described by the size of the matrices and the size of the
finite field. 

 In the zero characteristic case each Wedderburn component $A$ is \emph{Brauer equivalent} (\ref{Brauer}) to a \emph{cyclotomic algebra} (\ref{Cyclotomic}) and therefore $A$ is a (possibly fractional) matrix algebra over \emph{cyclotomic algebra} and can be described numerically in one of the following three forms: 
\[ [n,K], \]
 
\[ [n,K,k,[d,\alpha,\beta]], \]
 
\[ [n,K,k,[d_i,\alpha_i,\beta_i]_{i=1}^m, [\gamma_{i,j}]_{1\le i < j \le n} ], \]
 where $n$ is the matrix size, $K$ is the centre of $A$ (a finite field extension of $F$) and the remaining data are integers whose interpretation is explained in \ref{NumDesc}. 

 In some cases (for the zero characteristic coefficient field) the size $n$ of the matrix algebras is not a positive integer but a positive rational
number. This is a consequence of the fact that the \emph{Brauer-Witt Theorem} \cite{Y} only ensures that each \emph{Wedderburn component} (\ref{WedDec}) of a semisimple group algebra is Brauer equivalent (\ref{Brauer}) to a \emph{cyclotomic algebra} (\ref{Cyclotomic}), but not necessarily isomorphic to a full matrix algebra of a cyclotomic
algebra. For example, a Wedderburn component $D$ of a group algebra can be a division algebra but not a cyclotomic algebra. In
this case $M_n(D)$ is a cyclotomic algebra $C$ for some $n$ and therefore $D$ can be described as $M_{1/n}(C)$ (see last Example in \texttt{WedderburnDecomposition} (\ref{WedderburnDecomposition})). 

 The main algorithm of \textsf{Wedderga} is based on a computational oriented proof of the Brauer-Witt Theorem due to
Olteanu \cite{O} which uses previous work by Olivieri, del R{\a'\i}o and Sim{\a'o}n \cite{ORS} for rational group algebras of \emph{strongly monomial groups} (\ref{StMon}). }

  
\section{\textcolor{Chapter }{Characters and primitive central idempotents}}\label{Idempotents}
\logpage{[ 9, 4, 0 ]}
\hyperdef{L}{X87B6505C7C2EE054}{}
{
  \index{primitive central idempotent} \index{field of character values} A \emph{primitive central idempotent} of a ring $R$ is a non-zero central idempotent $e$ which cannot be written as the sum of two non-zero central idempotents of $Re$, or equivalently, such that $Re$ is indecomposable as a direct product of two non-trivial two-sided ideals. 

 The \emph{Wedderburn components} (\ref{WedDec}) of a semisimple ring $R$ are the rings of the form $Re$ for $e$ running over the set of primitive central idempotents of $R$. 

 Let $FG$ be a \emph{semisimple group algebra} (\ref{Semisimple}) and $\chi$ an irreducible character of $G$ (in an algebraic closure of $F$). Then there is a unique Wedderburn component $A=A_F(\chi)$ of $FG$ such that $\chi(A)\ne 0$. Let $e_F(\chi)$ denote the unique primitive central idempotent of $FG$ in $A_F(\chi)$, that is the identity of $A_F(\chi)$, i.e. 
\[ A_F(\chi)=FGe_F(\chi). \]
 The centre of $A_F(\chi)$ is $F(\chi)=F(\chi(g):g \in G)$, the \emph{field of character values} of $\chi$ over $F$. 

 The map $\chi \mapsto A_F(\chi)$ defines a surjective map from the set of irreducible characters of $G$ (in an algebraic closure of $F$) onto the set of Wedderburn components of $FG$. 

 Equivalently, the map $\chi \mapsto e_F(\chi)$ defines a surjective map from the set of irreducible characters of $G$ (in an algebraic closure of $F$) onto the set of primitive central idempontents of $FG$. 

 If the irreducible character $\chi$ of $G$ takes values in $F$ then 
\[ e_F(\chi) = e(\chi) = \frac{\chi(1)}{|G|} \sum_{g\in G} \chi(g^{-1}) g. \]


 In general one has 
\[ e_F(\chi) = \sum_{\sigma \in Gal(F(\chi)/F)} e(\sigma \circ \chi). \]


 }

  
\section{\textcolor{Chapter }{Central simple algebras and Brauer equivalence}}\label{Brauer}
\logpage{[ 9, 5, 0 ]}
\hyperdef{L}{X7A24D5407F72C633}{}
{
  Let $K$ be a field. \index{central simple algebra@central simple algebra} A \emph{central simple $K$-algebra} is a finite dimensional $K$-algebra with center $K$ which has no non-trivial proper ideals. Every central simple $K$-algebra is isomorphic to a matrix algebra $M_n(D)$ where $D$ is a division algebra (which is finite-dimensional over $K$ and has centre $K$). The division algebra $D$ is unique up to $K$-isomorphisms. 

 \index{Brauer equivalence@(Brauer) equivalence} \index{equivalence (Brauer)@equivalence (Brauer)} Two central simple $K$-algebras $A$ and $B$ are said to be \emph{Brauer equivalent}, or simply \emph{equivalent}, if there is a division algebra $D$ and two positive integers $m$ and $n$ such that $A$ is isomorphic to $M_m(D)$ and $B$ is isomorphic to $M_n(D)$. 

 }

  
\section{\textcolor{Chapter }{Crossed Products}}\label{CrossedProd}
\logpage{[ 9, 6, 0 ]}
\hyperdef{L}{X7FB21779832CE1CB}{}
{
  \index{Crossed Product@Crossed Product} Let $R$ be a ring and $G$ a group. 

 \textsc{Intrinsic definition}. A \emph{crossed product} \cite{P} of $G$ over $R$ (or with coefficients in $R$) is a ring $R*G$ with a decomposition into a direct sum of additive subgroups 
\[ R*G = \bigoplus_{g \in G} A_g \]
 such that for each $g,h$ in $G$ one has:

 * $A_1=R$ (here $1$ denotes the identity of $G$),

 * $A_g A_h = A_{gh}$ and 

 * $A_g$ has a unit of $R*G$.

 \textsc{Extrinsic definition}. Let $Aut(R)$ denote the group of automorphisms of $R$ and let $R^*$ denote the group of units of $R$.

 Let $a:G \rightarrow Aut(R)$ and $t:G \times G \rightarrow R^*$ be mappings satisfying the following conditions for every $g$, $h$ and $k$ in $G$: 

 (1) $a(gh)^{-1} a(g) a(h)$ is the inner automorphism of $R$ induced by $t(g,h)$ (i.e. the automorphism $x\mapsto t(g,h)^{-1} x t(g,h)$) and 

 (2) $t(gh,k) t(g,h)^k = t(g,hk) t(h,k)$, where for $g \in G$ and $x \in R$ we denote $a(g)(x)$ by $x^g$. 

 The \emph{crossed product} \cite{P} of $G$ over $R$ (or with coefficients in $R$), action $a$ and twisting $t$ is the ring 
\[ R*_a^t G = \bigoplus_{g\in G} u_g R \]
 where $\{u_g : g\in G \}$ is a set of symbols in one-to-one correspondence with $G$, with addition and multiplication defined by 
\[ (u_g r) + (u_g s) = u_g(r+s), \quad (u_g r)(u_h s) = u_{gh} t(g,h) r^h s \]
 for $g,h \in G$ and $r,s\in R$, and extended to $R*_a^t G$ by linearity.

 The associativity of the product defined is a consequence of conditions (1)
and (2) \cite{P}.

 \textsc{Equivalence of the two definitions}. Obviously the crossed product of $G$ over $R$ defined using the extrinsic definition is a crossed product of $G$ over $u_1 R$ in the sense of the first definition. Moreover, there is $r_0$ in $R^*$ such that $u_1r_0$ is the identity of $R*_a^t G$ and the map $r \mapsto u_1 r_0 r $ is a ring isomorphism $R \rightarrow u_1R $. 

 \index{Basis of units@Basis of units (for crossed product)} Conversely, let $R*G=\bigoplus_{g\in G} A_g$ be an (intrinsic) crossed product and select for each $g\in G$ a unit $u_g\in A_g$ of $R*G$. This is called a \emph{basis of units for the crossed product} $R*G$. Then the maps $a:G \rightarrow Aut(R)$ and $t:G\times G \rightarrow R^*$ given by 
\[ r^g = u_g^{-1} r u_g, \quad t(g,h) = u_{gh}^{-1} u_g u_h \quad (g,h \in G, r
\in R) \]
 satisfy conditions (1) and (2) and $R*G = R*_a^t G$. 

 The choice of a basis of units $u_g \in A_g$ determines the action $a$ and twisting $t$. If $\{u_g \in A_g : g \in G \}$ and $\{v_g \in A_g : g \in G \}$ are two sets of units of $R*G$ then $v_g = u_g r_g$ for some units $r_g$ of $R$. Changing the basis of units results in a change of the action and the
twisting and so changes the extrinsic definition of the crossed product but it
does not change the intrinsic crossed product. 

 It is customary to select $u_1=1$. In that case $a(1)$ is the identity map of $R$ and $t(1,g)=t(g,1)=1$ for each $g$ in $G$. }

  
\section{\textcolor{Chapter }{Cyclic Crossed Products}}\label{CyclicCP}
\logpage{[ 9, 7, 0 ]}
\hyperdef{L}{X828C42CD86AF605F}{}
{
  \index{Cyclic Crossed Product@Cyclic Crossed Product} Let $R*G=\bigoplus_{g \in G} A_g$ be a \emph{crossed product} (\ref{CrossedProd}) and assume that $G = \langle g \rangle $ is cyclic. Then the crossed product can be given using a particularly nice
description. 

 Select a unit $u$ in $A_{g}$, and let $a$ be the automorphism of $R$ given by $r^a = u^{-1} r u$. 

 If $G$ is infinite then set $u_{g^k} = u^k$ for every integer $k$. Then 
\[ R*G = R[ u | ru = u r^a ], \]
 a skew polynomial ring. Therefore in this case $R*G$ is determined by 
\[ [ R, a ]. \]
 If $G$ is finite of order $d$ then set $u_{g^k} = u^k$ for $0 \le k < d$. Then $ b = u^d \in R $ and 
\[ R*G = R[ u | ru = u r^a, u^d = b ] \]
 Therefore, $R*G$ is completely determined by the following data: 
\[ [ R , [ d , a , b ] ] \]
 }

  
\section{\textcolor{Chapter }{Abelian Crossed Products}}\label{AbelianCP}
\logpage{[ 9, 8, 0 ]}
\hyperdef{L}{X7869E2A48784C232}{}
{
  \index{Abelian Crossed Product@Abelian Crossed Product} Let $R*G=\bigoplus_{g \in G} A_g$ be a \emph{crossed product} (\ref{CrossedProd}) and assume that $G$ is abelian. Then the crossed product can be given using a simple description. 

 Express $G$ as a direct sum of cyclic groups: 
\[ G = \langle g_1 \rangle \times \cdots \times \langle g_n \rangle \]
 and for each $i=1,\dots,n$ select a unit $u_i$ in $A_{g_i}$. 

 Each element $g$ of $G$ has a unique expression 
\[ g = g_1^{k_1} \cdots g_n^{k_n}, \]
 where $k_i$ is an arbitrary integer, if $g_i$ has infinite order, and $0 \le k_i < d_i$, if $g_i$ has finite order $d_i$. Then one selects a basis for the crossed product by taking 
\[ u_g = u_{g_1^{k_1} \cdots g_n^{k_n}} = u_1^{k_1} \cdots u_n^{k_n}. \]
 

 * For each $i=1,\dots, n$, let $a_i$ be the automorphism of $R$ given by $r^{a_i} = u_i^{-1} r u_i$. 

 * For each $1 \le i < j \le n$, let $t_{i,j} = u_j^{-1} u_i^{-1} u_j u_i \in R$. 

 * If $g_i$ has finite order $d_i$, let $b_i=u_i^{d_i} \in R$. 

 Then 
\[ R*G = R[u_1,\dots,u_n | ru_i = u_i r^{a_i}, u_j u_i = t_{ij} u_i u_j,
u_i^{d_i} = b_i (1 \le i < j \le n) ], \]
 where the last relation vanishes if $g_i$ has infinite order.

 Therefore $R*G$ is completely determined by the following data: 
\[ [ R , [ d_i , a_i , b_i ]_{i=1}^n, [ t_{i,j} ]_{1 \le i < j \le n} ]. \]
 }

  
\section{\textcolor{Chapter }{Classical crossed products}}\label{ClassCP}
\logpage{[ 9, 9, 0 ]}
\hyperdef{L}{X80BABE5078A29793}{}
{
  \index{ClassicalCP@Classical Crossed Product} A \emph{classical crossed product} is a crossed product $L*_a^t G$, where $L/K$ is a finite Galois extension, $G=Gal(L/K)$ is the Galois group of $L/K$ and $a$ is the natural action of $G$ on $L$. Then $t$ is a $2$-cocycle and the \emph{crossed product} (\ref{CrossedProd}) $L*_a^t G$ is denoted by $(L/K,t)$. The crossed product $(L/K,t)$ is known to be a central simple $K$-algebra \cite{R}. 

 }

  
\section{\textcolor{Chapter }{Cyclic Algebras}}\label{CycAlg}
\logpage{[ 9, 10, 0 ]}
\hyperdef{L}{X84C98BB8859BBEE2}{}
{
  \index{Cyclic Algebra@Cyclic Algebra} A \emph{cyclic algebra} is a \emph{classical crossed product} (\ref{ClassCP}) $(L/K,t)$ where $L/K$ is a finite cyclic field extension. The cyclic algebras have a very simple
form. 

 Assume that $Gal(L/K)$ is generated by $g$ and has order $d$. Let $u=u_g$ be the basis unit (\ref{CrossedProd}) of the crossed product corresponding to $g$ and take the remaining basis units for the crossed product by setting $u_{g^i} = u^i$, ($ i = 0, 1, \dots, d-1 $). Then $a = u^n \in K$. The cyclic algebra is usually denoted by $(L/K,a)$ and one has the following description of $(L/K,t)$ 
\[ (L/K,t) = (L/K,a) = L[u| r u = u r^g, u^d = a ]. \]
 

 }

  
\section{\textcolor{Chapter }{Cyclotomic algebras}}\label{Cyclotomic}
\logpage{[ 9, 11, 0 ]}
\hyperdef{L}{X8099A8C784255672}{}
{
  \index{Cyclotomic algebra@Cyclotomic algebra} A \emph{cyclotomic algebra} over $F$ is a \emph{classical crossed product} (\ref{ClassCP}) $(F(\xi)/F,t)$, where $F$ is a field, $\xi$ is a root of unity in an extension of $F$ and $t(g,h)$ is a root of unity for every $g$ and $h$ in $Gal(F(\xi)/F)$. 

 The \emph{Brauer-Witt Theorem} \cite{Y} asserts that every \emph{Wedderburn component} (\ref{WedDec}) of a group algebra is \emph{Brauer equivalent} (\ref{Brauer}) (over its centre) to a cyclotomic algebra. 

 }

  
\section{\textcolor{Chapter }{Numerical description of cyclotomic algebras}}\label{NumDesc}
\logpage{[ 9, 12, 0 ]}
\hyperdef{L}{X84A142407B7565E0}{}
{
  Let $A=(F(\xi)/F,t)$ be a \emph{cyclotomic algebra} (\ref{Cyclotomic}), where $\xi=\xi_k$ is a $k$-th root of unity. Then the Galois group $G=Gal(F(\xi)/F)$ is abelian and therefore one can obtain a simplified form for the description
of cyclotomic algebras as for any \emph{abelian crossed product} (\ref{AbelianCP}). 

 Then the $n \times n$ matrix algebra $M_n(A)$ can be described numerically in one of the following forms: 

 * If $F(\xi)=F$, (i.e. $G=1$) then $A=M_n(F)$ and thus the only data needed to describe $A$ are the matrix size $n$ and the field $F$: 
\[ [n,F] \]
 

 * If $G$ is cyclic (but not trivial) of order $d$ then $A$ is a cyclic cyclotomic algebra 
\[ A = F(\xi) [ u | \xi u = u \xi^\alpha, u^d = \xi^\beta ] \]
 and so $M_n(A)$ can be described with the following data 
\[ [n,F,k,[d,\alpha,\beta]], \]
 where the integers $k$, $d$, $\alpha$ and $\beta$ satisfy the following conditions: 
\[ \alpha^d \equiv 1 \; mod \; k, \quad \beta(\alpha-1) \equiv 0 \; mod \; k. \]
 

 * If $G$ is abelian but not cyclic then $M_n(A)$ can be described with the following data (see \ref{AbelianCP}): 
\[ [n,F,k,[d_i,\alpha_i,\beta_i]_{i=1}^m, [\gamma_{i,j}]_{1\le i < j \le m} ] \]
 representing the $n \times n$ matrix ring over the following algebra: 
\[ A = F(\xi)[ u_1, \ldots, u_m \mid \xi u_i = u_i \xi^{\alpha_i}, \quad
u_i^{d_i}=\xi^{\beta_i}, \quad u_s u_r = \xi^{\gamma_{rs}} u_r u_s, \quad i =
1, \ldots, m, \quad 0 \le r < s \le m ] \]
 where 

 * $\{g_1,\ldots,g_m\}$ is an independent set of generators of $G$, 

 * $d_i$ is the order of $g_i$, 

 * $\alpha_i$, $\beta_i$ and $\gamma_{rs}$ are integers, and 
\[ \xi^{g_i} = \xi^{\alpha_i}. \]
 }

  
\section{\textcolor{Chapter }{Idempotents given by subgroups}}\label{IdempotentsSbgps}
\logpage{[ 9, 13, 0 ]}
\hyperdef{L}{X8310E96086509397}{}
{
  \index{$\varepsilon(K,H)$} \index{$e(G,K,H)$} \index{$e_C(G,K,H)$} Let $G$ be a finite group and $F$ a field whose characteristic does not divide the order of $G$. If $H$ is a subgroup of $G$ then set 
\[ \widehat{H} = |H|^{-1}\sum_{x \in H} x. \]
 The element $\widehat{H}$ is an idempotent of $FG$ which is central in $FG$ if and only if $H$ is normal in $G$. 

 If $H$ is a proper normal subgroup of a subgroup $K$ of $G$ then set 
\[ \varepsilon(K,H) = \prod_{L} (\widehat{N}-\widehat{L}) \]
 where $L$ runs on the normal subgroups of $K$ which are minimal among the normal subgroups of $K$ containing $N$ properly. By convention, $\varepsilon(K,K)=\widehat{K}$. The element $\varepsilon(K,H)$ is an idempotent of $FG$. 

 If $H$ and $K$ are subgroups of $G$ such that $H$ is normal in $K$ then $e(G,K,H)$ denotes the sum of all different $G$-conjugates of $\varepsilon(K,H)$. The element $e(G,K,H)$ is central in $FG$. In general it is not an idempotent but if the different conjugates of $\varepsilon(K,H)$ are orthogonal then $e(G,K,H)$ is a central idempotent of $FG$. 

 If $(K,H)$ is a Shoda Pair (\ref{SPDef}) of $G$ then there is a non-zero rational number $a$ such that $ae(G,K,H))$ is a \emph{primitive central idempotent} (\ref{Idempotents}) of the rational group algebra ${\ensuremath{\mathbb Q}} G$. If $(K,H)$ is a strong Shoda pair (\ref{SSPDef}) of $G$ then $e(G,K,H)$ is a primitive central idempotent of ${\ensuremath{\mathbb Q}} G$. 

 Assume now that $F$ is a finite field of order $q$, $(K,H)$ is a strong Shoda pair of $G$ and $C$ is a cyclotomic class of $K/H$ containing a generator of $K/H$. Then $e_C(G,K,H)$ is a primitive central idempotent of $FG$ (see \ref{CyclotomicClass}). 

 }

  
\section{\textcolor{Chapter }{Shoda pairs of a group}}\label{SPDef}
\logpage{[ 9, 14, 0 ]}
\hyperdef{L}{X7D518BAB80EDE190}{}
{
  Let $G$ be a finite group. \index{Shoda pair} A \emph{Shoda pair} of $G$ is a pair $(K,H)$ of subgroups of $G$ for which there is a linear character $\chi$ of $K$ with kernel $H$ such that the induced character $\chi^G$ in $G$ is irreducible. By \cite{S} or \cite{ORS}, $(K,H)$ is a Shoda pair if and only if the following conditions hold:

 * $H$ is normal in $K$, 

 * $K/H$ is cyclic and 

 * if $K^g \cap K \subseteq H$ for some $g \in G$ then $g \in K$. 

 \index{primitive central idempotent realized by a Shoda pair} If $(K,H)$ is a Shoda pair and $\chi$ is a linear character of $K\le G$ with kernel $H$ then the \emph{primitive central idempotent} (\ref{Idempotents}) of ${\ensuremath{\mathbb Q}} G$ associated to the irreducible character $\chi^G$ is of the form $e=e_{\ensuremath{\mathbb Q}} (\chi^G)=a e(G,K,H)$ for some $a \in {\ensuremath{\mathbb Q}} $ \cite{ORS} (see \ref{IdempotentsSbgps} for the definition of $e(G,K,H)$). In that case we say that $e$ is the \emph{primitive central idempotent realized by the Shoda pair} $(K,H)$ of $G$. 

 A group $G$ is monomial, that is every irreducible character of $G$ is monomial, if and only if every primitive central idempotent of ${\ensuremath{\mathbb Q}} G$ is realizable by a Shoda pair of $G$. 

 }

  
\section{\textcolor{Chapter }{Strong Shoda pairs of a group}}\label{SSPDef}
\logpage{[ 9, 15, 0 ]}
\hyperdef{L}{X7E3479527BAE5B9E}{}
{
  \index{strong Shoda pair} A \emph{strong Shoda pair} of $G$ is a pair $(K,H)$ of subgroups of $G$ satisfying the following conditions:

 * $H$ is normal in $K$ and $K$ is normal in the normalizer $N$ of $H$ in $G$, 

 * $K/H$ is cyclic and a maximal abelian subgroup of $N/H$ and 

 * for every $g \in G\setminus N$ , $\varepsilon(K,H)\varepsilon(K,H)^g=0$. (See \ref{IdempotentsSbgps} for the definition of $\varepsilon(K,H)$). 

 Let $(K,H)$ be a strong Shoda pair of $G$. Then $(K,H)$ is a Shoda pair (\ref{SPDef}) of $G$. Thus there is a linear character $\theta$ of $K$ with kernel $H$ such that the induced character $\chi=\chi(G,K,H)=\theta^G$ is irreducible. Moreover the \emph{primitive central idempotent} (\ref{Idempotents}) $e_{{\ensuremath{\mathbb Q}} }(\chi)$ of ${\ensuremath{\mathbb Q}} G$ realized by $(K,H)$ is $e(G,K,H)$, see \cite{ORS}. 

 \index{equivalent strong Shoda pairs} Two \emph{strong Shoda pairs} (\ref{SSPDef}) $(K_1,H_1)$ and $(K_2,H_2)$ of $G$ are said to be \emph{equivalent} if the characters $\chi(G,K_1,H_1)$ and $\chi(G,K_2,H_2)$ are Galois conjugate, or equivalently if $e(G,K_1,H_1)=e(G,K_2,H_2)$.

 The advantage of strong Shoda pairs over Shoda pairs is that one can describe
the simple algebra $FGe_F(\chi)$ as a matrix algebra of a \emph{cyclotomic algebra} (\ref{Cyclotomic}, see \cite{ORS} for $F={\ensuremath{\mathbb Q}} $ and \cite{O} for the general case). 

 More precisely, ${\ensuremath{\mathbb Q}} Ge(G,K,H)$ is isomorphic to $M_n({\ensuremath{\mathbb Q}} (\xi)*_a^t N/K)$, where $\xi$ is a $[K:H]$-th root of unity, $N$ is the normalizer of $H$ in $G$, $n=[G:N]$ and ${\ensuremath{\mathbb Q}} (\xi)*_a^t N/K$ is a \emph{crossed product} (see \ref{CrossedProd}) with action $a$ and twisting $t$ given as follows: 

 Let $x$ be a fixed generator of $K/H$ and $\varphi : N/K \rightarrow N/H$ a fixed left inverse of the canonical projection $N/H\rightarrow N/K$. Then 
\[ \xi^{a(r)} = \xi^i, \mbox{ if } x^{\varphi(r)}= x^i \]
 and 
\[ t(r,s) = \xi^j, \mbox{ if } \varphi(rs)^{-1} \varphi(r)\varphi(s) = x^j, \]
 for $r,s \in N/K$ and integers $i$ and $j$, see \cite{ORS}. Notice that the cocycle is the one given by the natural extension 
\[ 1 \rightarrow K/H \rightarrow N/H \rightarrow N/K \rightarrow 1 \]
 where $K/H$ is identified with the multiplicative group generated by $\xi$. Furthermore the centre of the algebra is ${\ensuremath{\mathbb Q}} (\chi)$, the field of character values over ${\ensuremath{\mathbb Q}} $, and $N/K$ is isomorphic to $Gal({\ensuremath{\mathbb Q}} (\xi)/{\ensuremath{\mathbb Q}} (\chi))$. 

 If the rational field is changed to an arbitrary ring $F$ of characteristic $0$ then the Wedderburn component $A_F(\chi)$, where $\chi = \chi(G,K,H)$ is isomorphic to $F(\chi)\otimes_{{\ensuremath{\mathbb Q}} (\chi)}A_{\ensuremath{\mathbb Q}}
(\chi)$. Using the description given above of $A_{\ensuremath{\mathbb Q}} (\chi)={\ensuremath{\mathbb Q}} G e(G,K,H)$ one can easily describe $A_F(\chi)$ as $M_{nd}(F(\xi)/F(\chi),t')$, where $d=[{\ensuremath{\mathbb Q}} (\xi): {\ensuremath{\mathbb
Q}}(\chi)]/[F(\xi):F(\chi)]$ and $t'$ is the restriction to $Gal(F(\xi)/F(\chi))$ of $t$ (a cocycle of $N/K = Gal({\ensuremath{\mathbb Q}} (\xi)/{\ensuremath{\mathbb Q}} (\chi))$). 

 }

  
\section{\textcolor{Chapter }{Strongly monomial characters and strongly monomial groups}}\label{StMon}
\logpage{[ 9, 16, 0 ]}
\hyperdef{L}{X84C694978557EFE5}{}
{
  \index{SMCh@strongly monomial character} Let $G$ be a finite group an $\chi$ an irreducible character of $G$.

 One says that $\chi$ is \emph{strongly monomial} if there is a \emph{strong Shoda pair} (\ref{SSPDef}) $(K,H)$ of $G$ and a linear character $\theta$ of $K$ of $G$ with kernel $H$ such that $\chi=\theta^G$.

 \index{SMG@strongly monomial group} The group $G$ is \emph{strongly monomial} if every irreducible character of $G$ is strongly monomial. 

 Strong Shoda pairs where firstly introduced by Olivieri, del R{\a'\i}o and
Sim{\a'o}n who proved that every abelian-by-supersolvable group is strongly
monomial \cite{ORS}. The algorithm to compute the Wedderburn decomposition of rational group
algebras for strongly monomial groups was explained in \cite{OR}. This method was extended for semisimple finite group algebras by Broche
Cristo and del R{\a'\i}o in \cite{BR} (see Section \ref{CyclotomicClass}). Finally, Olteanu \cite{O} shows how to compute the \emph{Wedderburn decomposition} (\ref{WedDec}) of an arbitrary semisimple group ring by making use of not only the strong
Shoda pairs of $G$ but also the strong Shoda pairs of the subgroups of $G$. }

  \pagebreak. 
\section{\textcolor{Chapter }{Cyclotomic Classes and Strong Shoda Pairs}}\label{CyclotomicClass}
\logpage{[ 9, 17, 0 ]}
\hyperdef{L}{X800D8C5087D79DC8}{}
{
  Let $G$ be a finite group and $F$ a finite field of order $q$, coprime to the order of $G$. 

 \index{cyclotomic class} Given a positive integer $n$, coprime to $q$, the $q$-\emph{cyclotomic classes} modulo $n$ are the set of residue classes module $n$ of the form 
\[ \{i,iq,iq^2,iq^3, \dots \} \]
 The $q$-cyclotomic classes module $n$ form a partition of the set of residue classes module $n$. 

 \index{generating cyclotomic class} A \emph{generating cyclotomic class } module $n$ is a cyclotomic class containing a generator of the additive group of residue
classes module $n$, or equivalently formed by integers coprime to $n$. 

 Let $(K,H)$ be a strong Shoda pair (\ref{SSPDef}) of $G$ and set $n=[K:H]$. Fix a primitive $n$-th root of unity $\xi$ in some extension of $F$ and an element $g$ of $K$ such that $gH$ is a generator of $K/H$. Let $C$ be a generating $q$-cyclotomic class modulo $n$. Then set 
\[ \varepsilon_C(K,H) = [K:H]^{-1} \widehat{H} \sum_{i=0}^{n-1} tr(\xi^{-ci})g^i, \]
 where $c$ is an arbitrary element of $C$ and $tr$ is the trace map of the field extension $F(\xi)/F$. Then $\varepsilon_C(K,H)$ does not depend on the choice of $c \in C$ and is a \emph{primitive central idempotent} (\ref{Idempotents}) of $FK$. 

 \index{primitive central idempotent realized by a strong Shoda pair and a cyclotomic class} Finally, let $e_C(G,K,H)$ denote the sum of the different $G$-conjugates of $\varepsilon_C(K,H)$. Then $e_C(G,K,H)$ is a \emph{primitive central idempotent} (\ref{Idempotents}) of $FG$ \cite{BR}. We say that $e_C(G,K,H)$ is the primitive central idempotent realized by the strong Shoda pair $(K,H)$ of the group $G$ and the cyclotomic class $C$. 

 If $G$ is \emph{strongly monomial} (\ref{StMon}) then every primitive central idempotent of $FG$ is realizable by some \emph{strong Shoda pair} (\ref{SSPDef}) of $G$ and some cyclotomic class $C$ \cite{BR}. As in the zero characteristic case, this explain how to compute the \emph{Wedderburn decomposition} (\ref{WedDec}) of $FG$ for a finite semisimple algebra of a strongly monomial group (see \cite{BR} for details). For non strongly monomial groups the algorithm to compute the
Wedderburn decomposition just uses the Brauer characters. 

 }

  \pagebreak. 
\section{\textcolor{Chapter }{Theory for Local Schur Index and Division Algebra Part Calculations}}\label{DivAlgTheory}
\logpage{[ 9, 18, 0 ]}
\hyperdef{L}{X803562E087325AF6}{}
{
  (By Allen Herman, May 2013. Updated October 2014.) 

 The division algebra parts of simple algebras in the Wedderburn Decomposition
of the group algebra of a finite group over an abelian number field $F$ correspond to elements of the Schur Subgroup $S(F)$ of the Brauer group of $F$. Like all classes in the Brauer group of an algebraic number field $F$, the division algebra part of a representative of a given Brauer class is
determined up to $F$-algebra isomorphism by its list of local Hasse invariants at all primes (i.e.
places) of $F$. The local invariant at a prime $P$ of $F$ is a lowest terms fraction $r/m_P$ whose denominator is the local Schur index $m_P$ of the simple algebra at the prime $q$ (see \cite{R}). For division algebras whose Brauer class lies in the Schur Subgroup of an
abelian number field $F$, the local indices at any of the primes $P$ lying over the same rational prime $p$ are equal to the same positive integer $m_p$, and the numerator of the local invariants among these primes are uniformly
distributed among the integers $r$ coprime to $m_p$ \cite{BS}. 

 The local Schur index functions in wedderga produce a list of the nontrivial
local indices of the division algebra part of the simple algebra at all
rational primes. The Schur index of the simple algebra over $F$ is the least common multiple $m$ of these local indices, and the dimension of the division algebra part of the
simple algebra over $F$ is $m^2$. While not sufficient to identify these division algebras up to ring
isomorphism in general, this list of local indices does identify the division
algebra up to ring isomorphism whenever there is no pair of local indices at
odd primes that are greater than 2. (This is at least the case for groups of
order less than 3\texttt{\symbol{94}}2*7*13.) So it gives the information
desired in most basic situations, and allows one to distinguish almost all
pairs of simple components of group algebras. 

 Wedderga's functions compute local indices for generalized quaternion algebras
defined over the rationals and cyclotomic algebras defined over any abelian
number field. Special shortcut functions are available for cyclic cyclotomic
algebras. There are also versions of the functions that compute the local and
global Schur index of a character of a finite group over a given abelian
number field. The steps in the general character- theoretic method involve 1)
a Brauer-Witt reduction to a cyclic-by-abelian group, 2) use of the
Frobenius-Schur indicator to compute the local index at infinity, 3) computing
the $p$-local index for an ordinary irreducible character $\chi$ of a $p$-solvable group using the values of an irreducible Brauer character in the
same $p$-block in cases where the $p$-defect group of $\chi$ is cyclic, and 4) use of Riese and Schmid's characterization of dyadic Schur
groups (\cite{Sch} and \cite{RSch}) to handle the exceptional cases where step 3) is not available. Our approach
to rational quaternion algebras is the standard one given, for example, in \cite{Pi}. The Legendre symbol operation in GAP is used to determine the local index at
odd primes. The local index of the generalized quaternion algebra $(a,b)$ over $Q$ at the infinite prime will be $2$ if both $a$ and $b$ are negative, and otherwise $1$. We avoid the complicated case of quadratic reciprocity when working over Q
by using the Hasse-Brauer-Albert-Noether Theorem (\cite{R}, pg. 276): since we know the other primes of $Q$ where the local index is $2$, it determines the local index at the prime $2$. For generalized quaternion algebras over number fields $F$ other than $Q$, we have to convert to cyclic or cyclic cyclotomic algebras and use the other
local index functions, or appeal to a number theory system outside of GAP that
can solve norm equations. 

 There are three shortcut functions used to compute local indices of cyclic
cyclotomic algebras, which wedderga's -Info functions produce in the form $[r,F,n,[a,b,c]]$. The local index at infinity is calculated by determining if the real
completion of the corresponding algebra will produce a real quaternion
algebra. In order to do this, $F$ must be a real subfield, $n$ must be strictly greater than $2$, and $E(n)^c$ (which has to be a root of unity in $F$) must be $-1$. These facts can be checked directly, so this is faster than calculating the
character table of the group and checking the value of a Frobenius-Schur
indicator. The shortcut to calculate the local index of a cyclic cyclotomic
algebra at an odd prime makes direct use of the following lemma of Janusz: If $E_p/F_p$ is a Galois extension of $p$-local fields with ramification index $e$, and $z$ is a root of unity with order prime to $p$, then $z$ is a norm in $E_p/F_p$ if and only if it is the $e$-th power of a root of unity in $F$. (\cite{J}, pg. 535). It follows that in order to calculate the local index at $p$ of a cyclic cyclotomic algebra $[r,F,n,[a,b,c]]$, we first determine the splitting degree, residue degree, and ramification
index $e$ of the extension $F(\zeta_n)/F$ at $p$. Comparing the behaviour of the Galois automorphism $\sigma_b$ to the behaviour of the Frobenius automorphism at $p$ allows us to determine the order of the largest root of unity $z$ with order coprime to $p$ in the $p$-completion $F_p$. The local index $m_p$ is then the least power of $E(n)^c$ that lies in the group generated by $z^e$. 

 Calculation of the local index at the prime $2$ makes use of the following consequence of (\cite{J}, Theorem 5): A cyclic cyclotomic algebra $[r,F_2,n,[a,b,c]]$ over a $2$-local field $F_2$ that is a subfield of a cyclotomic extension of the rational $2$-local field $Q_2$ has Schur index at most $2$. It has Schur index $2$ if and only if $4$ divides $n$, $F_2(\zeta_4)$ is totally ramified of degree 2, the Galois automorphism $\sigma_b$ of $F_2(\zeta_n)/F_2$ inverts all $2$-power roots of unity in $F_2(\zeta_n)$, the order of $E(n)^c$ is 2 times an odd number, and $(F_2:Q_2)$ is odd. The same approach to cyclotomic reciprocity makes it possible to check
all of these conditions in the $2$-local situation. 

 The wedderga function that computes the $p$-local index of an ordinary irreducible character $\chi$ of a finite non-nilpotent cyclic-by- abelian group $G$ is based directly on a theorem of Benard \cite{B} that applies whenever the $p$-defect group of $\chi$ is cyclic. We have to restrict our application of it to groups whose orders
are small because the \textsf{GAP} records for irreducible Brauer characters are only available in these cases.
In order to use this approach effectively, we developed a function that
computes the defect group of the block containing a given ordinary irreducible
character $\chi$. This function makes use of the Min half of Brauer's Min-Max theorem (see
Theorem 4.4 of \cite{N}), and thus is able to find the defect group directly from the ordinary
character table. It is thus available for nonsolvable groups, even in cases
where \textsf{GAP}'s Brauer character records are not available. We are indebted to Michael
Geline and Friederich Ladisch for discussions concerning the calculation of
defect groups in \textsf{GAP}. The current algorithm we use is based on an approach suggested by Ladisch. }

  
\section{\textcolor{Chapter }{ Obtaining Algebras with structure constants as terms of the Wedderburn
decomposition }}\label{SCAlgebras}
\logpage{[ 9, 19, 0 ]}
\hyperdef{L}{X7B18AF347AE68020}{}
{
  Some users may find it desirable to have an alternative description for the
components of the Wedderburn decomposition of a group ring as algebras with
structure constants, because the operations for algebras in \textsf{GAP} are designed for algebras with structure constants. We have provided such an
algorithm that converts the output of \texttt{WedderburnDecompositionInfo} (\ref{WedderburnDecompositionInfo}) into algebras with structure constants. Matrix rings over fields are converted
directly. For components that are cyclotomic algebras, it calculates their
defining group and defining character using those \textsf{Wedderga} operations, then uses \texttt{IrreducibleRepresentationsDixon} (\textbf{Reference: IrreducibleRepresentationsDixon}) to obtain matrix generators of an algebra isomorphic to the simple component
corresponding to the character over a suitable field. An algebra with
structure constants version of this is finally obtained by applying \texttt{IsomorphismSCAlgebra} (\textbf{Reference: IsomorphismSCAlgebra (w.r.t. a given basis)}) to this algebra. }

  
\section{\textcolor{Chapter }{A complete set of orthogonal primitive idempotents}}\label{TheoryPI}
\logpage{[ 9, 20, 0 ]}
\hyperdef{L}{X8472ACCF802EC188}{}
{
  When $R$ is a semisimple ring, then every left ideal $L$ of $R$ is of the form $L=Re$, where $e$ is an idempotent of $R$. Therefore, we can use the idempotents to characterize the decompositions of
semisimple rings as a direct sum of minimal left ideals. In particular, let $R=\oplus_{i=1}^t L_i$ be a decomposition of a semisimple ring as a direct sum of minimal left
ideals. Then, there exists a family $\{e_1,\dots,e_t\}$ of elements of $R$ such that: each $e_i\neq 0$ is an idempotent element, if $i\neq j$, then $e_ie_j=0$, $1=e_1+\cdots+e_t$ and each $e_i$ cannot be written as $e_i=e_i'+e_i''$, where $e_i',e_i''$ are idempotents such that $e_i',e_i''\neq 0$ and $e_i'e_i''=0$, $1\leq i\leq $. Conversely, if there exists a family of idempotents $\{e_1,\dots,e_t\}$ satisfying the previous conditions, then the left ideals $L_i=Re_i$ are minimal and $R=\oplus_{i=1}^t L_i$. Such a set of idempotents is called a \emph{complete set of orthogonal primitive idempotents} of the ring $R$. Such a set is not uniquely determined. \index{Complete set of orthogonal primitive idempotents} 

 Let $\mathbb F$ be a finite field and $G$ a finite nilpotent group such that $\mathbb F G$ is semisimple. Let $(H,K)$ be a strong Shoda pair of $G$, $C\in\mathcal{C}(H/K)$ and set $e_C=e_C(G,H,K)$, $\varepsilon_C=\varepsilon_C(H,K)$, $H/K=\langle\overline{a}\rangle$, $E=E_G(H/K)$. Let $E_2/K$ and $H_2/K=\langle\overline{a_2}\rangle$ (respectively $E_{2'}/K$ and $H_{2'}/K=\langle\overline{a_{2'}}\rangle$) denote the 2-parts (respectively 2'-parts) of $E/K$ and $H/K$ respectively. Then $\langle\overline{a_{2'}}\rangle$ has a cyclic complement $\langle\overline{b_{2'}}\rangle$ in $E_{2'}/K$. Using the description of the primitive central idempotents and the
Wedderburn components of a semisimple finite group algebra $F G$ (\ref{CyclotomicClass}), a complete set of orthogonal primitive idempotents of $\mathbb F Ge_C$ is described (see \cite{OV}) as the set of conjugates of $\beta_{e_C}=\widetilde{b_{2'}}\beta_2\varepsilon_C$ by the elements of $T_{e_C}=T_{2'}T_2T_E$, where $T_{2'}=\{1,a_{2'},a_{2'}^2,\dots,a_{2'}^{[E_{2'}:H_{2'}]-1}\}$, $T_E$ denotes a right transversal of $E$ in $G$ and $\beta_2$ and $T_2$ are given according to the cases below. 
\begin{enumerate}
\item  If $H_2/K$ has a complement $M_2/K$ in $E_2/K$ then $\beta_2=\widetilde{M_2}$. Moreover, if $M_2/K$ is cyclic, then there exists $b_2\in E_2$ such that $E_2/K$ is given by the following presentation 
\[\langle \overline{a_2},\overline{b_2}\mid
\overline{a_2}\hspace{1pt}^{2^n}=\overline{b_2}\hspace{1pt}^{2^k}=1,
\overline{a_2}\hspace{1pt}^{\overline{b_2}}=\overline{a_2}\hspace{1pt}^r
\rangle,\]
 and if $M_2/K$ is not cyclic, then there exist $b_2,c_2\in E_2$ such that $E_2/K$ is given by the following presentation 
\[\langle \overline{a_2},\overline{b_2},\overline{c_2}\mid
\overline{a_2}\hspace{1pt}^{2^n}=
\overline{b_2}\hspace{1pt}^{2^k}=\overline{c_2}\hspace{1pt}^2=1,
\overline{a_2}\hspace{1pt}^{\overline{b_2}}=\overline{a_2}\hspace{1pt}^r,
\overline{a_2}\hspace{1pt}^{\overline{c_2}}=\overline{a_2}\hspace{1pt}^{-1},
[\overline{b_2},\overline{c_2}]=1 \rangle,\]
 with $r \equiv 1 {\rm \,mod\,} 4$ (or equivalently $\overline{a_2}\hspace{1pt}^{2^{n-2}}$ is central in $E_2/K$). Then 
\begin{enumerate}
\item  $T_2=\{1,a_2,a_2^2,\dots, a_2^{2^k-1}\}$, if $\overline{a_2}\hspace{1pt}^{2^{n-2}}$ is central in $E_2/K$ (unless $n\leq 1$) and $M_2/K$ is cyclic; and 
\item  $T_2=\{1,a_2,a_2^2,\dots,a_2^{d/2-1},a_2^{2^{n-2}},a_2^{2^{n-2}+1},\dots,a_2^{2^{n-2}+d/2-1}\}$, where $d=[E_2:H_2]$, otherwise. 
\end{enumerate}
 
\item  If $H_2/K$ has no complement in $E_2/K$, then there exist $b_2,c_2\in E_2$ such that $E_2/K$ is given by the following presentation 
\[ \langle \overline{a_2},\overline{b_2},\overline{c_2}\mid
\overline{a_2}\hspace{1pt}^{2^n}= \overline{b_2}\hspace{1pt}^{2^k}=1,
\overline{c_2}\hspace{1pt}^2=\overline{a_2}\hspace{1pt}^{2^{n-1}},
\overline{a_2}\hspace{1pt}^{\overline{b_2}}=\overline{a_2}\hspace{1pt}^r,\\
\overline{a_2}\hspace{1pt}^{\overline{c_2}}=\overline{a_2}\hspace{1pt}^{-1},[\overline{b_2},\overline{c_2}]=1
\rangle, \]
 with $r\equiv 1 {\rm \,mod\,} 4$. In this case, $\beta_2=\widetilde{b_2}\frac{1+xa_2^{2^{n-2}}+ya_2^{2^{n-2}}c_2}{2}$ and 
\[T_2=\{1,a_2,a_2^2,\dots,
a_2^{2^k-1},c_2,c_2a_2,c_2a_2^2,\dots,c_2a_2^{2^k-1}\},\]
 with $x,y\in\mathbb F$, satisfying $x^2+y^2=-1$ and $y\neq 0$. 
\end{enumerate}
 When $G$ is not nilpotent, we can still use the following description in some specific
cases. Let $G$ be a finite group and $\mathbb F$ a finite field of order $s$ such that $s$ is coprime to the order of $G$. Let $(H,K)$ be a strong Shoda pair of $G$ such that $\tau(gH,g'H)=1$ for all $g,g'\in E=E_G(H/K)$, and let $C\in\mathcal{C}(H/K)$. Let $\varepsilon=\varepsilon_C(H,K)$ and $e=e_C(G,H,K)$ (\ref{CyclotomicClass}). Let $w$ be a normal element of $\mathbb F_{s^o}/\mathbb F_{s^{o/[E:H]}}$ (with $o$ the multiplicative order of $s$ modulo $[H:K]$) and $B$ the normal basis determined by $w$. Let $\psi$ be the isomorphism between $\mathbb F E \varepsilon$ and the matrix algebra $M_{[E:H]}(\mathbb F_{s^{o/[E:H]}})$ with respect to the basis $B$ as stated in Corollary 29.8 in \cite{R}. Let $P,A\in M_{[E:H]}(\mathbb F_{s^{o/[E:H]}})$ be the matrices 
\[ P= \left( \begin{array}{rrrrrr} 1 & 1 & 1 & \cdots & 1 & 1\\ 1 & -1 & 0 &
\cdots & 0 & 0\\ 1 & 0 & -1 & \cdots & 0 & 0\\ \vdots & \vdots & \vdots &
\ddots & \vdots & \vdots\\ 1 & 0 & 0 & \cdots & -1 & 0\\ 1 & 0 & 0 & \cdots &
0 & -1\\ \end{array} \right) \quad {\rm and } \quad A= \left(
\begin{array}{ccccc} 0 & 0 & \cdots & 0 & 1\\ 1 & 0 & \cdots & 0 & 0\\ 0 & 1 &
\cdots & 0 & 0\\ \vdots & \vdots & \ddots & \vdots & \vdots\\ 0 & 0 & \cdots &
0 & 0\\ 0 & 0 & \cdots & 1 & 0\\ \end{array} \right). \]
 Then 
\[ \{x\widehat{T_1}\varepsilon x^{-1} \mid x\in T_2\langle{x_e}\rangle\} \]
 is a complete set of orthogonal primitive idempotents of $\mathbb F G e$ where $x_e=\psi^{-1}(PAP^{-1})$, $T_1$ is a transversal of $H$ in $E$ and $T_2$ is a right transversal of $E$ in $G$ (\cite{OV2}). By $\widehat{T_1}$ we denote the element $\frac{1}{|T_1|}\sum_{t\in T_1}{t}$ in $\mathbb F G$. }

 
\section{\textcolor{Chapter }{Applications to coding theory}}\label{codes}
\logpage{[ 9, 21, 0 ]}
\hyperdef{L}{X856D7975810BF987}{}
{
  \index{linear code} A \emph{linear code} of length $n$ and rank $k$ is a linear subspace $C$ with dimension $k$ of the vector space $\mathbb F_q^n$. The standard basis of $\mathbb F_q^n$ is denoted by $E=\{e_1,...,e_n\}$. The vectors in $C$ are called codewords, the size of a code is the number of codewords and equals $q^k$. The distance of a code is the minimum distance between distinct codewords,
i.e. the number of elements in which they differ. 

 \index{group code} For any group $G$, we denote by $\mathbb F_q G$ the group algebra over $G$ with coefficients in $\mathbb F_q$. If $G$ is a group of order $n$ and $C\subseteq \mathbb F_q^n$ is a linear code, then we say that $C$ is a left $G$-code (respectively a $G$-code) if there is a bijection $\phi:E\rightarrow G$ such that the linear extension of $\phi$ to an isomorphism $\phi:\mathbb F_q^n\rightarrow \mathbb F_q G$ maps $C$ to a left ideal (respectively a two-sided ideal) of $\mathbb F_q G$. A left \emph{group code} (respectively a group code) is a linear code which is a left $G$-code (respectively a $G$-code) for some group $G$. 

 Since left ideals in $\mathbb F_q G$ are generated by idempotents, there is a one-one relation between (sums of)
primitive idempotents of $\mathbb F_q G$ and left $G$-codes over $\mathbb F_q$.

 Note that each element $c$ in $\mathbb F_q G$ is of the form $c=\sum_{i=1}^n f_i g_i$, where we fix an ordering $\{g_1,g_2,...,g_n \}$ of the group elements of $G$ and $f_i\in \mathbb F_q$. If one looks at $c$ as a codeword, one writes $[f_1 f_2 ... f_n]$. 

 }

 }

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

\bibliographystyle{alpha}
\bibliography{manualbib.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}
