% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[11pt]{report}
\usepackage{a4wide}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[latin1]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}
\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{FuncColor}{rgb}{1.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,1.0}

\usepackage{fancyvrb}

\usepackage{pslatex}

\usepackage[
        a4paper=true,bookmarks=false,pdftitle={Written with GAPDoc},
        pdfcreator={LaTeX with hyperref package / GAPDoc},
        colorlinks=true,backref=page,breaklinks=true,linkcolor=RoyalBlue,
        citecolor=RoyalGreen,filecolor=RoyalRed,
        urlcolor=RoyalRed,pagecolor=RoyalBlue]{hyperref}

% 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,}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\F}{\mathbb{F}}

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

\newsavebox{\backslashbox}
\sbox{\backslashbox}{\texttt{\symbol{92}}}
\newcommand{\bs}{\usebox{\backslashbox}}

\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\begin{center}{\Huge \textbf{\textsf{Sophus}}}\\[1cm]
\hypersetup{pdftitle=\textsf{Sophus}}
\markright{\scriptsize \mbox{}\hfill \textsf{Sophus} \hfill\mbox{}}
{\Large \textbf{Computing in nilpotent Lie algebras}}\\[1cm]
{Version 1.23}\\[1cm]
{February 2006}\\[1cm]
\mbox{}\\[2cm]
{\large \textbf{ Csaba Schneider    }}\\
\hypersetup{pdfauthor= Csaba Schneider    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Csaba Schneider    } --- Email: \href{mailto://csaba.schneider@sztaki.hu}{\texttt{csaba.schneider@sztaki.hu}}\\
 --- Homepage: \href{http://www.sztaki.hu/~schneider}{\texttt{http://www.sztaki.hu/\~{}schneider}}\\
 --- Address: \begin{minipage}[t]{8cm}\noindent
 Informatics Laboratory\\
 Computer and Automation Research Institute\\
 The Hungarian Academy of Sciences\\
 1111 Budapest, L\'agym\'anyosi u.\ 11.\\
 Hungary \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Abstract}
\logpage{[ 0, 0, 1 ]}
 \textsf{Sophus} is a GAP~4 package to compute with nilpotent Lie algebras over finite prime
fields. In particular, the package can be used to compute certain central
extensions and the automorphism group of such Lie algebras. \textsf{Sophus} also enables its user to test isomorphism between two nilpotent Lie algebras.
The author of the package used it to construct all Lie algebras of dimension
at most~9 over $\mathbb F_2$ }\\[1cm]
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 2 ]}
 {\copyright} 2004, 2005 Csaba Schneider }\\[1cm]
{\small 
\section*{Acknowledgements}
\logpage{[ 0, 0, 3 ]}
 Most of the work on this package was carried out while I held a research
position at the Technische Universtit\"at Braunschweig. I would like to
express my gratitude to the staff and the students of the Institut f\"ur
Geometrie for their interest in this work. Special thanks go to Bettina Eick
for her r\^ole in completing this project. }\\[1cm]
\newpage

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

\tableofcontents
\newpage

  
\chapter{\textcolor{Chapter }{The theory}}\label{Intro}
\logpage{[ 1, 0, 0 ]}
{
  

 The \textsf{Sophus} package was originally designed to aid the author to classify some
small-dimensional nilpotent Lie algebras over small fields. The classification
follows the ideas that were used to classify small $p$-groups by O'Brien \cite{O'B}. The theory developed by O'Brien could easily be adopted to Lie algebras, and
the details of this new theory can be found in \cite{Sch}. Here we only summarise the main ideas, so that the user can understand the
procedures implemented in this package. In this section $L$ denotes a finitely generated, and hence finite-dimensional, nilpotent Lie
algebra. Suppose that $L$ has nilpotency class $c$, and hence the lower central series is as follows: 
\[ L= \gamma_1(L)>\gamma_2(L)=L'>\gamma_3(L)>\cdots
>\gamma_c(L)>\gamma_{c+1}(L)=0. \]
 We say that a basis $\mathcal B=\{b_1,\ldots,b_n\}$ for $L$ is \emph{compatible with the lower central series} if there are indices $1=i_1{\textless}i_2{\textless}\cdots{\textless}i_{c}{\textless}n$ such that $\{b_{i_k},\ldots,b_n\}$ is a basis of $\gamma_k(L)$ for $k\in\{1,\ldots,c\}$. We compute the structure constants table with respect to this basis, that
is, we compute coefficients $\alpha_{i,j}^k$ for $1\leq i{\textless}j{\textless}k\leq n$ such that 
\[ [b_i,b_j]=\sum_{k=j+1}^n\alpha_{i,j}^k b_k. \]
 Suppose that $b_i\in\gamma_j(L)\setminus\gamma_{j+1}(L)$. Then we say that the number $j$ is the \emph{weight} of the basis element $b_i$. 

 Note that in the nilpotent Lie algebra $L$ minimal generating sets have the same size, namely the dimension of $L/L'$. If $\dim L/L'=d$ then we call $L$ a $d$\emph{-generator algebra}. We call a basis $\mathcal B$ a \emph{nilpotent basis} if the following hold. 
\begin{itemize}
\item  The basis $\mathcal B$ is compatible with the lower central series. 
\item For each $b_i\in \mathcal B$ with weight $w\geq 2$ there are $b_{j_1},\ b_{j_2}\in\mathcal B$ with weight 1 and $w-1$, respectively such that $b_i=[b_{j_1},b_{j_2}]$. The product $[b_{j_1},b_{j_2}]$ is called the definition of $b_i$.
\end{itemize}
 

 A Lie algebra $K$ is said to be a \emph{central extension} of $L$ if $L\cong K/I$ for some ideal $I$ such that $I\leq Z(K)\cap K'$. Suppose that $c$ denotes the nilpotency class of $L$. Then a Lie algebra $K$ is an \emph{immediate descendant} of $L$ if $K$ has class $c+1$ and $K/\gamma_{c+1}(K)\cong L$. As in this case $\gamma_{c+1}(K)\leq Z(K)\cap K'$, it follows that an immediate descendant $K$ is a central extension of $L$. If $s=\dim \gamma_{c+1}(K)$ then $K$ is said to be a \emph{step-$s$} immediate descendant of $L$. 

Let $L$ be a $d$-generator nilpotent Lie algebra with class $c$, and let $F$ be a free Lie algebra of rank $d$. Choose an ideal $I$ of $F$ such that $L\cong F/I$. Then the Lie algebra $L^*=F/[I,F]$ is called the \emph{Lie cover} of $L$. The \emph{Lie multiplicator} in $L^*$ is the subspace $I/[I,F]$ and the \emph{Lie nucleus} is $\gamma_c(L^*)$. It clear from the definition that $L^*/M\cong L$. It is verified in \cite{Sch} that, up to isomorphism, the Lie cover, the Lie multiplicator and the Lie
nucleus are determined by the isomorphism type of $L$. Further, each central extension of the nilpotent Lie algebra $L$ is a quotient of the Lie cover $L^*$. Thus it is possible to obtain all such descendants by first computing the
Lie cover; this procedure is explained in \cite{Sch}. Similar ideas can be used to compute the automorphism group of a nilpotent
Lie algebra, and to verify isomorphism between two nilpotent Lie algebras; see \cite{Sch} for details. 

The main functions in \textsf{Sophus} are thus able to compute 
\begin{itemize}
\item  a nilpotent basis for a nilpotent Lie algebra;
\item  the cover of a nilpotent Lie algebra;
\item  the immediate descendants of a nilpotent Lie algebra;
\item  the full automorphism group of a nilpotent Lie algebra.
\end{itemize}
 There is also a function in the package to check if two nilpotent Lie algebras
are isomorphic. After repeated applications of the immediate descendants
algorithm, it is, in theory, possible to list all nilpotent Lie algebras of a
given dimension over a prime field $\mathbb F_p$. Of course, this computation requires relatively large computational
resources, and quickly becomes unfeasible as the dimension or the
characteristic $p$ grows. 

 The \textsf{Sophus} package was written for the GAP~4 computer algebra system. In many procedures
it is very important that we can compute the stabiliser of a subspace under
some matrix group action. This is carried out using the procedures implemented
in the \mbox{\texttt{autpgrp}} package \cite{autpgrp}. Hence this package is required to run \textsf{Sophus}. 

 The current version of \textsf{Sophus} deals with general nilpotent Lie algebras over finite prime fields. If you are
to compute with Lie algebras obtained from group algebras via the bracket
operation, then another GAP package LAGUNA \cite{Laguna} may also offer some very efficient methods. }

  
\chapter{\textcolor{Chapter }{A sample calculation with \textsf{Sophus}}}\label{Example}
\logpage{[ 2, 0, 0 ]}
{
  Before listing the functions of \textsf{Sophus} we present a sample calculation to show the reader what \textsf{Sophus} is able to compute. We list the isomorphism types of the 7-dimensional
nilpotent Lie algebras over $\mathbb F_2$. 

 There is just one nilpotent Lie algebra with dimension 1 and dimension 2. We
also set \mbox{\texttt{L3}} to be a list containing the abelian Lie algebra with dimension 3. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> L1 := [ AbelianLieAlgebra( GF(2), 1 ) ];;
  gap> L2 := [ AbelianLieAlgebra( GF(2), 2 ) ];;
  gap> L3 := [ AbelianLieAlgebra( GF(2), 3 ) ];;
  
\end{Verbatim}
 

Any 3-dimensional non-abelian nilpotent Lie algebra is an immediate descendant
of a 2-dimensional Lie algebra. So we compute the step-1 descendants of \mbox{\texttt{L1[1]}} and append them to \mbox{\texttt{L3}}. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> Append( L3, Descendants( L2[1], 1 ));
  gap> L3;
  [<Lie algebra of dimension 3 over GF(2)>, 
  <Lie algebra of dimension 3 over GF(2)> ]
  
\end{Verbatim}
 

Now we compute the list of 4-dimensional Lie algebras. First we set \mbox{\texttt{L4}} to contain the 4-dimensional abelian Lie algebra. Then we compute the step-1
descendants of the 3-dimensional algebras and append these descendants to \mbox{\texttt{L4}}. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> L4 := [ AbelianLieAlgebra( GF(2), 4 ) ];;
  gap> for i in L3 do
  gap> Append( L4, Descendants( i, 1 ));
  gap> od;
  gap> L4;
  [ <Lie algebra of dimension 4 over GF(2)>, 
  <Lie algebra of dimension 4 over GF(2)>, 
  <Lie algebra of dimension 4 over GF(2)> ]
  
\end{Verbatim}
 

We continue this way up to dimension~7. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> L5 := [ AbelianLieAlgebra( GF(2), 5 ) ];;
  gap> for i in L3 do
  gap> Append( L5, Descendants( i, 2 ));
  gap> od;
  gap> for i in L4 do
  gap> Append( L5, Descendants( i, 1 ));
  gap> od;
  gap> L6 := [ AbelianLieAlgebra( GF(2), 6 ) ];;
  gap> for i in L3 do
  gap> Append( L6, Descendants( i, 3 ));
  gap> od;
  gap> for i in L4 do
  gap> Append( L6, Descendants( i, 2 ));
  gap> od;
  gap> for i in L5 do
  gap> Append( L6, Descendants( i, 1 ));
  gap> od;
  gap> L7 := [ AbelianLieAlgebra( GF(2), 6 ) ];;
  gap> for i in L4 do
  gap> Append( L7, Descendants( i, 3 ));
  gap> od;
  gap> for i in L5 do
  gap> Append( L7, Descendants( i, 2 ));
  gap> od;
  gap> for i in L6 do
  gap> Append( L7, Descendants( i, 1 ));
  gap> od;
  gap> Length( L7 );
  202
  gap>
  
\end{Verbatim}
 

This computation shows that there are 202 pairwise non-isomorphic nilpotent
Lie algebras over $\mathbb F_2$. 

 Let us compute the automorphism group of a nilpotent Lie algebra from our
list. We compute this automorphism group in the hybrid format used by \textsf{Sophus}, then we compute this group as a standard \textsf{GAP} object. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> AutomorphismGroupOfNilpotentLieAlgebra( L7[100] );
  rec( glAutos := [  ], 
    agAutos := [ Aut: [ v.1, v.1+v.2, v.3, v.4, v.5, v.5+v.6, v.7 ], 
        Aut: [ v.1, v.2+v.3, v.3, v.4, v.5, v.6, v.7 ], 
        Aut: [ v.1+v.3, v.2, v.3, v.4+v.5, v.5, v.6+v.7, v.7 ], 
        Aut: [ v.1+v.4, v.2, v.3+v.5, v.4+v.6, v.5+v.7, v.6+v.7, v.7 ], 
        Aut: [ v.1, v.2+v.4, v.3, v.4+v.5, v.5, v.6+v.7, v.7 ], 
        Aut: [ v.1+v.5, v.2, v.3, v.4+v.7, v.5, v.6, v.7 ], 
        Aut: [ v.1, v.2+v.5, v.3, v.4, v.5, v.6, v.7 ], 
        Aut: [ v.1+v.6, v.2, v.3, v.4+v.7, v.5, v.6, v.7 ], 
        Aut: [ v.1, v.2+v.6, v.3, v.4+v.7, v.5, v.6, v.7 ], 
        Aut: [ v.1+v.7, v.2, v.3, v.4, v.5, v.6, v.7 ], 
        Aut: [ v.1, v.2+v.7, v.3, v.4, v.5, v.6, v.7 ], 
        Aut: [ v.1, v.2, v.3+v.7, v.4, v.5, v.6, v.7 ] ], glOrder := 1, 
    glOper := [  ], agOrder := [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ], 
    liealg := <Lie algebra of dimension 7 over GF(2)>, 
    one := Aut: [ v.1, v.2, v.3, v.4, v.5, v.6, v.7 ], size := 4096, 
    field := GF(2), prime := 2 )
  gap> 
  gap> AutomorphismGroup( L7[100] );                     
  <group with 12 generators>
  gap> 
  
\end{Verbatim}
 

 Finally let us check that two Lie algebras from our list are not isomorphic. 
\begin{Verbatim}[fontsize=\small,frame=single,label=Example]
  
  gap> AreIsomorphicNilpotentLieAlgebras( L7[100], L7[101] );
  false
  
\end{Verbatim}
 }

  
\chapter{\textcolor{Chapter }{\textsf{Sophus} functions}}\label{Funct}
\logpage{[ 3, 0, 0 ]}
{
  
\section{\textcolor{Chapter }{Some general functions to compute with Lie algebras}}\label{LieNB}
\logpage{[ 3, 1, 0 ]}
{
  

\subsection{\textcolor{Chapter }{SophusTest}}
\logpage{[ 3, 1, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{SophusTest(  )\index{SophusTest@\texttt{SophusTest}}
\label{SophusTest}
}\hfill{\scriptsize (function)}}\\


 Tests \textsf{Sophus} functions, returns true if it finds no mistakes, and returns false otherwise.
May take a couple of minutes to complete. }

 

\subsection{\textcolor{Chapter }{IsLieNilpotentOverFp}}
\logpage{[ 3, 1, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsLieNilpotentOverFp( L )\index{IsLieNilpotentOverFp@\texttt{IsLieNilpotentOverFp}}
\label{IsLieNilpotentOverFp}
}\hfill{\scriptsize (property)}}\\


 Returns true if \mbox{\texttt{L}} is a nilpotent Lie algebra and its underlying field is a finite prime field. }

 

\subsection{\textcolor{Chapter }{MinimalGeneratorNumber}}
\logpage{[ 3, 1, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{MinimalGeneratorNumber( L )\index{MinimalGeneratorNumber@\texttt{MinimalGeneratorNumber}}
\label{MinimalGeneratorNumber}
}\hfill{\scriptsize (attribute)}}\\


 Computes the minimal number of generators for $L$, which is the dimension of $L/L'$. }

 

\subsection{\textcolor{Chapter }{AbelianLieAlgebra}}
\logpage{[ 3, 1, 4 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{AbelianLieAlgebra( F, d )\index{AbelianLieAlgebra@\texttt{AbelianLieAlgebra}}
\label{AbelianLieAlgebra}
}\hfill{\scriptsize (function)}}\\


 Returns the Abelian Lie algebra with dimension $d$ over the field \mbox{\texttt{F}}. }

 }

 
\section{\textcolor{Chapter }{Functions to compute with nilpotent bases}}\logpage{[ 3, 2, 0 ]}
{
  

\subsection{\textcolor{Chapter }{NilpotentBasis}}
\logpage{[ 3, 2, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{NilpotentBasis( L )\index{NilpotentBasis@\texttt{NilpotentBasis}}
\label{NilpotentBasis}
}\hfill{\scriptsize (attribute)}}\\


 Computes a nilpotent basis for $L$. Nilpotent bases are defined in Section \ref{Intro}. }

 

\subsection{\textcolor{Chapter }{LieNBWeights}}
\logpage{[ 3, 2, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{LieNBWeights( B )\index{LieNBWeights@\texttt{LieNBWeights}}
\label{LieNBWeights}
}\hfill{\scriptsize (attribute)}}\\


 Every element of the nilpotent basis $B$ has a weight; See Section \ref{Intro}. This function returns the list of these weights. }

 

\subsection{\textcolor{Chapter }{LieNBDefinitions}}
\logpage{[ 3, 2, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{LieNBDefinitions( B )\index{LieNBDefinitions@\texttt{LieNBDefinitions}}
\label{LieNBDefinitions}
}\hfill{\scriptsize (attribute)}}\\


 This function returns a list. The \mbox{\texttt{i}}-th element of this list is 0 if \mbox{\texttt{B[i]}} has weight 1. Otherwise the \mbox{\texttt{i}}-th element is \mbox{\texttt{[k,l]}} if the definition of \mbox{\texttt{B[i]}} is \mbox{\texttt{[B[k],B[l]]}}. See Section \ref{Intro}. }

 

\subsection{\textcolor{Chapter }{IsNilpotentBasis}}
\logpage{[ 3, 2, 4 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsNilpotentBasis( B )\index{IsNilpotentBasis@\texttt{IsNilpotentBasis}}
\label{IsNilpotentBasis}
}\hfill{\scriptsize (property)}}\\


 Returns \texttt{true} if the basis \mbox{\texttt{B}} of a Lie algebra was computed with the function \texttt{NilpotentBasis}; \texttt{false} otherwise. }

 

\subsection{\textcolor{Chapter }{IsLieAlgebraWithNB}}
\logpage{[ 3, 2, 5 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsLieAlgebraWithNB( L )\index{IsLieAlgebraWithNB@\texttt{IsLieAlgebraWithNB}}
\label{IsLieAlgebraWithNB}
}\hfill{\scriptsize (property)}}\\


 Returns \texttt{true} if a nilpotent basis for \mbox{\texttt{L}} has already been computed using the function \texttt{NilpotentBasis}; \texttt{false} otherwise. }

 }

 
\section{\textcolor{Chapter }{The cover}}\logpage{[ 3, 3, 0 ]}
{
  

\subsection{\textcolor{Chapter }{LieCover}}
\logpage{[ 3, 3, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{LieCover( L )\index{LieCover@\texttt{LieCover}}
\label{LieCover}
}\hfill{\scriptsize (attribute)}}\\


 Computes the cover for the nilpotent Lie algebra $L$ as defined in Section \ref{Intro}. }

 

\subsection{\textcolor{Chapter }{CoverHomomorphism}}
\logpage{[ 3, 3, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{CoverHomomorphism( C )\index{CoverHomomorphism@\texttt{CoverHomomorphism}}
\label{CoverHomomorphism}
}\hfill{\scriptsize (attribute)}}\\


 The nilpotent Lie algebra \mbox{\texttt{C}} was obtained from a nilpotent Lie algebra \mbox{\texttt{L}} using the \mbox{\texttt{LieCover( L )}} function call. This function returns the natural homomorphism from \mbox{\texttt{C}} onto \mbox{\texttt{L}}. }

 

\subsection{\textcolor{Chapter }{CoverOf}}
\logpage{[ 3, 3, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{CoverOf( C )\index{CoverOf@\texttt{CoverOf}}
\label{CoverOf}
}\hfill{\scriptsize (attribute)}}\\


 The nilpotent Lie algebra \mbox{\texttt{C}} was obtained from a nilpotent Lie algebra \mbox{\texttt{L}} using the \mbox{\texttt{LieCover( L )}} function call. This function returns \mbox{\texttt{L}}. }

 

\subsection{\textcolor{Chapter }{IsLieCover}}
\logpage{[ 3, 3, 4 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsLieCover( C )\index{IsLieCover@\texttt{IsLieCover}}
\label{IsLieCover}
}\hfill{\scriptsize (property)}}\\


 Returns \texttt{true} if the Lie algebra \mbox{\texttt{C}} was obtained as the Lie cover of another Lie algebra \mbox{\texttt{L}} using the \mbox{\texttt{LieCover( L )}} function call. }

 

\subsection{\textcolor{Chapter }{LieMultiplicator}}
\logpage{[ 3, 3, 5 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{LieMultiplicator( C )\index{LieMultiplicator@\texttt{LieMultiplicator}}
\label{LieMultiplicator}
}\hfill{\scriptsize (attribute)}}\\


 The nilpotent Lie algebra \mbox{\texttt{C}} was obtained from a nilpotent Lie algebra \mbox{\texttt{L}} using the \mbox{\texttt{LieCover( L )}} function call. This function returns the central ideal of \mbox{\texttt{C}} which is the multiplicator of \mbox{\texttt{L}}; see Section \ref{Intro}. }

 

\subsection{\textcolor{Chapter }{LieNucleus}}
\logpage{[ 3, 3, 6 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{LieNucleus( C )\index{LieNucleus@\texttt{LieNucleus}}
\label{LieNucleus}
}\hfill{\scriptsize (attribute)}}\\


 The nilpotent Lie algebra \mbox{\texttt{C}} was obtained from a nilpotent Lie algebra \mbox{\texttt{L}} using the \mbox{\texttt{LieCover( L )}} function call. This function returns the central ideal of \mbox{\texttt{C}} which is the nucleus of \mbox{\texttt{L}}; see Section \ref{Intro}. }

 }

 
\section{\textcolor{Chapter }{Automorphisms of nilpotent Lie algebras}}\logpage{[ 3, 4, 0 ]}
{
  We define a special class of automorphisms for our work. 

\subsection{\textcolor{Chapter }{NilpotentLieAutomorphism}}
\logpage{[ 3, 4, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{NilpotentLieAutomorphism( L, gens, imgs )\index{NilpotentLieAutomorphism@\texttt{NilpotentLieAutomorphism}}
\label{NilpotentLieAutomorphism}
}\hfill{\scriptsize (method)}}\\


 \mbox{\texttt{L}} is a nilpotent Lie algebra, \mbox{\texttt{gens}} is a generating set, and \mbox{\texttt{imgs}} is a subset of \mbox{\texttt{L}} with the same length as \mbox{\texttt{gens}}. Returns the automorphism of \mbox{\texttt{L}} which maps the element of \mbox{\texttt{gens}} to the elements of \mbox{\texttt{imgs}}. It is the responsibility of the user to make sure that the arguments are
given so that the automorphism exists. These automorphisms can be compared,
multiplied using the \mbox{\texttt{*}} sign, and the inverse of such an automorphism can also be computed in the
usual manner. }

 

\subsection{\textcolor{Chapter }{IdentityNilpotentLieAutomorphism}}
\logpage{[ 3, 4, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IdentityNilpotentLieAutomorphism( L )\index{IdentityNilpotentLieAutomorphism@\texttt{IdentityNilpotentLieAutomorphism}}
\label{IdentityNilpotentLieAutomorphism}
}\hfill{\scriptsize (method)}}\\


 \mbox{\texttt{L}} is a nilpotent Lie algebra; returns the identity automorphism of $L$. }

 

\subsection{\textcolor{Chapter }{IsNilpotentLieAutomorphism}}
\logpage{[ 3, 4, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{IsNilpotentLieAutomorphism( A )\index{IsNilpotentLieAutomorphism@\texttt{IsNilpotentLieAutomorphism}}
\label{IsNilpotentLieAutomorphism}
}\hfill{\scriptsize (property)}}\\


 Returns \texttt{true} if \mbox{\texttt{A}} was obtained using a \mbox{\texttt{NilpotentLieAutomorphism}} or an \mbox{\texttt{IdentityNilpotentLieAutomorphism}} function call. }

 }

 
\section{\textcolor{Chapter }{Automorphism group and isomorphism testing}}\logpage{[ 3, 5, 0 ]}
{
  

\subsection{\textcolor{Chapter }{AutomorphismGroup}}
\logpage{[ 3, 5, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{AutomorphismGroup( L )\index{AutomorphismGroup@\texttt{AutomorphismGroup}}
\label{AutomorphismGroup}
}\hfill{\scriptsize (method)}}\\


 \mbox{\texttt{L}} is a nilpotent Lie algebra; returns the automorphism group of \mbox{\texttt{L}} as a group generated by \textsf{GAP} algebra automorphisms. The automorphism group is computed as explained in \cite{Sch}. }

 

\subsection{\textcolor{Chapter }{AutomorphismGroupNilpotentLieAlgebra}}
\logpage{[ 3, 5, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{AutomorphismGroupNilpotentLieAlgebra( L )\index{AutomorphismGroupNilpotentLieAlgebra@\texttt{AutomorphismGroupNilpotentLieAlgebra}}
\label{AutomorphismGroupNilpotentLieAlgebra}
}\hfill{\scriptsize (method)}}\\


 \mbox{\texttt{L}} is a nilpotent Lie algebra; returns the automorphism group of \mbox{\texttt{L}} in the internally used hybrid format. The automorphism group is computed as
explained in \cite{Sch}. The hybrid format, which is very similar to the one used in \cite{autpgrp}, is a record that contains the following fields. 
\begin{itemize}
\item  \texttt{glAutos}: a set of automorphisms which together with \texttt{agAutos} generate the automorphism group; 
\item \texttt{glOrder}: an integer whose product with the numbers in \texttt{agOrder} gives the size of the automorphism group;
\item \texttt{agAutos}: a polycyclic generating sequence for a soluble normal subgroup of the
automorphism group;
\item \texttt{agOrder}: the relative orders corresponding to \texttt{agAutos}; 
\item \texttt{liealg}: The Lie algebra acted upon by the automorphisms.
\item \texttt{size}: the size of the automorphism group.
\item \texttt{field}: the underlying field of the Lie algebra.
\item \texttt{prime}: the characteristic of the underlying field.
\end{itemize}
 We do not return an automorphism group in the standard form because we wish to
distinguish between \texttt{agAutos} and \texttt{glAutos}; the latter act non-trivially on the derived quotient of $L$. This hybrid-group description of the automorphism group permits more
efficient computations with it. }

 

\subsection{\textcolor{Chapter }{AreIsomorphicNilpotentLieAlgebras}}
\logpage{[ 3, 5, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{AreIsomorphicNilpotentLieAlgebras( L, K )\index{AreIsomorphicNilpotentLieAlgebras@\texttt{AreIsomorphicNilpotentLieAlgebras}}
\label{AreIsomorphicNilpotentLieAlgebras}
}\hfill{\scriptsize (method)}}\\


 Returns \texttt{true} if \mbox{\texttt{L}} and \mbox{\texttt{K}} are isomorphic; \texttt{false} otherwise. }

 }

 
\section{\textcolor{Chapter }{Descendants}}\logpage{[ 3, 6, 0 ]}
{
  

\subsection{\textcolor{Chapter }{Descendants}}
\logpage{[ 3, 6, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{Descendants( L, step )\index{Descendants@\texttt{Descendants}}
\label{Descendants}
}\hfill{\scriptsize (method)}}\\


 Returns the \texttt{step}-step descendants of a nilpotent Lie algebra \mbox{\texttt{L}}. }

 

\subsection{\textcolor{Chapter }{DescendantsOfStep1OfAbelianLieAlgebra}}
\logpage{[ 3, 6, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{DescendantsOfStep1OfAbelianLieAlgebra( L, step )\index{DescendantsOfStep1OfAbelianLieAlgebra@\texttt{DescendantsOfStep1OfAbelianLieAlgebra}}
\label{DescendantsOfStep1OfAbelianLieAlgebra}
}\hfill{\scriptsize (method)}}\\


 Returns the \texttt{1}-step descendants of the abelian Lie algebra with dimension \mbox{\texttt{d}} defined over the field of \mbox{\texttt{p}} elements. }

 }

 
\section{\textcolor{Chapter }{Input and output}}\logpage{[ 3, 7, 0 ]}
{
  The package provides with a number of functions that can be used to store
lists of Lie algebras. Here we document only the most important ones, see the
source code \texttt{io.gi} for the rest. 

\subsection{\textcolor{Chapter }{WriteLieAlgebraToString}}
\logpage{[ 3, 7, 1 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{WriteLieAlgebraToString( L )\index{WriteLieAlgebraToString@\texttt{WriteLieAlgebraToString}}
\label{WriteLieAlgebraToString}
}\hfill{\scriptsize (function)}}\\


 Returns a string that encodes the nilpotent Lie algebra \mbox{\texttt{L}} }

 

\subsection{\textcolor{Chapter }{ReadStringToNilpotentLieAlgebra}}
\logpage{[ 3, 7, 2 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{ReadStringToNilpotentLieAlgebra( string, p, d )\index{ReadStringToNilpotentLieAlgebra@\texttt{ReadStringToNilpotentLieAlgebra}}
\label{ReadStringToNilpotentLieAlgebra}
}\hfill{\scriptsize (function)}}\\


 Decodes \mbox{\texttt{string}} into a \mbox{\texttt{d}}-dimensional nilpotent Lie algebra defined over the field of \mbox{\texttt{p}} elements. }

 

\subsection{\textcolor{Chapter }{WriteLieAlgebraListToFile}}
\logpage{[ 3, 7, 3 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{WriteLieAlgebraListToFile( list, name, file )\index{WriteLieAlgebraListToFile@\texttt{WriteLieAlgebraListToFile}}
\label{WriteLieAlgebraListToFile}
}\hfill{\scriptsize (function)}}\\


 \mbox{\texttt{list}} is a list of nilpotent Lie algebras. Encodes each Lie algebra in \mbox{\texttt{list}} to a string. The list so obtained is written into \mbox{\texttt{file}}. The name of this list will be \mbox{\texttt{name}}. }

 

\subsection{\textcolor{Chapter }{SophusBuildManual}}
\logpage{[ 3, 7, 4 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{SophusBuildManual(  )\index{SophusBuildManual@\texttt{SophusBuildManual}}
\label{SophusBuildManual}
}\hfill{\scriptsize (function)}}\\


 Builds Sophus manual. }

 

\subsection{\textcolor{Chapter }{SophusBuildManualHTML}}
\logpage{[ 3, 7, 5 ]}\nobreak
{\noindent\textcolor{FuncColor}{$\Diamond$\ \texttt{SophusBuildManualHTML(  )\index{SophusBuildManualHTML@\texttt{SophusBuildManualHTML}}
\label{SophusBuildManualHTML}
}\hfill{\scriptsize (function)}}\\


 Builds Sophus manual in html format. }

 }

 }

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

\bibliographystyle{alpha}
\bibliography{manual}

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