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

\hypersetup{pdftitle=CoReLG}
\markright{\scriptsize \mbox{}\hfill CoReLG \hfill\mbox{}}
{\Huge \textbf{Computing with real Lie Algebras\mbox{}}}\\
\vfill

{\Huge Version 1.20\mbox{}}\\[1cm]
{December 2014 \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{ Heiko Dietrich   \mbox{}}}\\
{\Large \textbf{ Paolo Faccin   \mbox{}}}\\
{\Large \textbf{ Willem de Graaf    \mbox{}}}\\
\hypersetup{pdfauthor= Heiko Dietrich   ;  Paolo Faccin   ;  Willem de Graaf    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Heiko Dietrich   }  Email: \href{mailto://heiko.dietrich@monash.edu} {\texttt{heiko.dietrich@monash.edu}}\\
  Homepage: \href{http://users.monash.edu.au/~heikod/} {\texttt{http://users.monash.edu.au/\texttt{\symbol{126}}heikod/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 School of Mathematical Sciences\\
 Monash University\\
 Wellington Road 1\\
 VIC 3800, Melbourne, Australia\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Paolo Faccin   }  Email: \href{mailto://paolofaccin86@gmail.com} {\texttt{paolofaccin86@gmail.com}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Dipartimento di Matematica\\
 Via Sommarive 14\\
 I-38050 Povo (Trento), Italy\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Willem de Graaf    }  Email: \href{mailto://degraaf@science.unitn.it} {\texttt{degraaf@science.unitn.it}}\\
  Homepage: \href{http://www.science.unitn.it/~degraaf/} {\texttt{http://www.science.unitn.it/\texttt{\symbol{126}}degraaf/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Dipartimento di Matematica\\
 Via Sommarive 14\\
 I-38050 Povo (Trento), Italy\\
 \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Abstract}
\logpage{[ 0, 0, 1 ]}
 This package provides functions for computing with various aspects of the
theory of real simple Lie algebras. \mbox{}}\\[1cm]
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 3 ]}
 {\copyright} 2014 Heiko Dietrich, Paolo Faccin, and Willem de Graaf \mbox{}}\\[1cm]
{\small 
\section*{Acknowledgements}
\logpage{[ 0, 0, 2 ]}
 The research leading to this package has received funding from the European
Union's Seventh Framework Program FP7/2007-2013 under grant agreement no
271712. \mbox{}}\\[1cm]
\newpage

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

\tableofcontents
\newpage

  
\chapter{\textcolor{Chapter }{Introduction}}\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X7DFB63A97E67C0A1}{}
{
  \textsf{CoReLG} (Computing with Real Lie Groups) is a \textsf{GAP} package for computing with (semi-)simple real Lie algebras. Various
capabilities of the package have to do with the action of the adjoint group of
a real Lie algebra (such as the nilpotent orbits, and non-conjugate Cartan
subalgebras). CoReLG is also the acronym of the EU funded Marie Curie project
carried out by the first author of the package at the University of Trento. 

 The simple real Lie algebras have been classified, and this classification is
the main theoretical tool that we use, as it determines the objects that we
work with. In Section \ref{srl} we give a brief account of this classification. We refer to the standard works
in the literature (e.g., \cite{knapp}) for an in-depth discussion. The algorithms of this package are described in \cite{hdwdg12} and \cite{dfg12}. 

 We remark that the package still is under development, and its functionality
is continuously extended. The package \textsf{SLA}, \cite{sla}, is required. 
\section{\textcolor{Chapter }{The simple real Lie algebras}}\label{srl}
\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7A0F3100829CD1E1}{}
{
  Let $\mathfrak{g}^c$ denote a complex simple Lie algebra. Then there are two types of simple real
Lie algebras associated to $\mathfrak{g}^c$: the \emph{realification} of $\mathfrak{g}^c$ (this means that $\mathfrak{g}^c$ is viewed as an algebra over $\mathbb{R}$, of dimension $2\dim \mathfrak{g}^c$), and the \emph{real forms} $\mathfrak{g}$ of $\mathfrak{g}^c$ (this means that $\mathfrak{g}\otimes_\mathbb{R}\mathbb{C}$ is isomorphic to $\mathfrak{g}^c$). It is straightforward to construct the realification of $\mathfrak{g}^c$; so in the rest of this section we concentrate on the real forms of $\mathfrak{g}^c$. 

 A Lie algebra is said to be \emph{compact} if its Killing form is negative definite. The complex Lie algebra $\mathfrak{g}^c$ has a unique (up to isomorphism) compact real form $\mathfrak{u}$. In the sequel we fix the compact form $\mathfrak{u}$. Then $\mathfrak{g}^c = \mathfrak{u} + \imath \mathfrak{u}$, where $\imath$ is the complex unit; so we get an antilinear map $\tau : \mathfrak{g}^c\to \mathfrak{g}^c$ by $\tau(x+ \imath y) = x- \imath y$, where $x,y\in \mathfrak{u}$. This is called the \emph{conjugation} of $\mathfrak{g}^c$ with respect to $\mathfrak{u}$. 

 Now let $\theta$ be an automorphism of $\mathfrak{g}^c$ of order 2, commuting with $\tau$. Then $\theta$ stabilises $\mathfrak{u}$, so the latter is the direct sum of the $\pm 1$-eigenspaces of $\theta$, say $\mathfrak{u} = \mathfrak{u}_1 \oplus \mathfrak{u}_{-1}$. Set $\mathfrak{k} = \mathfrak{u}_1$ and $\mathfrak{p} = i\mathfrak{u}_{-1}$. Then $\mathfrak{g} =\mathfrak{g}(\theta)= \mathfrak{k} \oplus \mathfrak{p}$ is a real form of $\mathfrak{g}^c$. Regarding this construction we remark the following: 
\begin{itemize}
\item  $\mathfrak{g} = \mathfrak{k}\oplus \mathfrak{p}$ is called a \emph{Cartan decomposition}. It is unique up to inner automorphisms of $\mathfrak{g}$. 
\item  The map $\theta$ is a \emph{Cartan involution}; it is the identity on $\mathfrak{k}$ and acts as multiplication by $-1$ on $\mathfrak{p}$) 
\item  $\mathfrak{k}$ is compact, and it is a maximal compact subalgebra of $\mathfrak{g}$. 
\item  Two real forms are isomorphic if and only if the corresponding Cartan
involutions are conjugate in the automorphism group of $\mathfrak{g}^c$. 
\item  The automorphism $\theta$ is described by two pieces of data: a list of signs $(s_1,\ldots,s_r)$ of length equal to the rank $r$ of $\mathfrak{g}$, and a permutation $\pi$ of $1,\ldots, r$, leaving the list of signs invariant. Let $\alpha_1,\ldots, \alpha_r$ denote the simple roots of $\mathfrak{g}^c$ with corresponding canonical generators $x_i, y_i, h_i$. Then $\theta(x_i) = s_i x_{\pi(i)}$, $\theta(y_i) = s_i y_{\pi(i)}$, $\theta(h_i) = h_{\pi(i)}$. 
\end{itemize}
 }

 
\section{\textcolor{Chapter }{Cartan subalgebras and more}}\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X80030DB07E5F4FBF}{}
{
  Let $\mathfrak{g}$ be a real form of the complex Lie algebra $\mathfrak{g}^c$, with Cartan decomposition $\mathfrak{g} = \mathfrak{k}\oplus \mathfrak{p}$. A Cartan subalgebra $\mathfrak{h}$ of $\mathfrak{g}$ is \emph{standard} (with respect to this Cartan decomposition) if $\mathfrak{h} = (\mathfrak{h}\cap \mathfrak{k})\oplus
(\mathfrak{h}\cap\mathfrak{p})$, or, equivalently, when $\mathfrak{h}$ is stable under the Cartan involution $\theta$. 

 It is a fact that every Cartan subalgebra of $\mathfrak{g}$ is conjugate by an inner automorphism to a standard one (\cite{knapp}, Proposition 6.59). Moreover, there is a finite number of non-conjugate (by
inner automorphisms) Cartan subalgebras of $\mathfrak{g}$ (\cite{knapp}, Proposition 6.64). A standard Cartan subalgebra $\mathfrak{h}$ is said to be \emph{maximally compact} if the dimension of $\mathfrak{h}\cap \mathfrak{k}$ is maximal (among all standard Cartan subalgebras). It is called \emph{maximally non-compact} if the dimension of $\mathfrak{h}\cap \mathfrak{p}$ is maximal. We have that all maximally compact Cartan subalgebras are
conjugate via the inner automorphism group. The same holds for all maximally
non-compact Cartan subalgebras (\cite{knapp}, Proposition 6.61). 

 A subspace of $\mathfrak{p}$ is said to be a \emph{Cartan subspace} if it consists of commuting elements. If $\mathfrak{h}$ is a maximally non-compact standard Cartan subalgebra, then $\mathfrak{c} = \mathfrak{h}\cap \mathfrak{p}$ is a Cartan subspace. The other Cartan subalgebras (i.e., representatives of
the conjugacy classes of the Cartan subalgebras under the inner automorphism
group) can be constructed such that their intersection with $\mathfrak{p}$ is contained in $\mathfrak{c}$. 

 Every standard Cartan subalgebra $\mathfrak{h}$ of $\mathfrak{g}$ yields a corresponding root system $\Phi$ of $\mathfrak{g}^c$. Let $\alpha\in\Phi$, then a short argument shows that $\alpha\circ\theta$ (where $\alpha\circ\theta (h) = \alpha(\theta(h))$ for $h\in \mathfrak{h}$) is also a root (i.e., lies in $\Phi$). This way we get an automorphism of order 2 of the root system $\Phi$. 

 Now let $\mathfrak{h}$ be a maximally compact standard Cartan subalgebra of $\mathfrak{g}$, with root system $\Phi$. Then it can be shown that there is a basis of simple roots $\Delta\subset\Phi$ which is $\theta$-stable. Write $\Delta = \{\alpha_1,\ldots,\alpha_r\}$, and let $x_i,y_i,h_i$ be a corresponding set of canonical generators. Then there is a sequence of
signs $(s_1,\ldots,s_r)$ and a permutation $\pi$ of $1,\ldots,r$ such that $\theta(x_i) = s_i x_{\pi(i)}$. Now we encode this information in the Dynkin diagram of $\Phi$. If $s_i=-1$ then we paint the node corresponding to $\alpha_i$ black. Also, if $\pi(i)=j \neq i$ then the nodes corresponding to $\alpha_i$, $\alpha_j$ are connected by an arrow. The resulting diagram is called a \emph{Vogan diagram} of $\mathfrak{g}$. It determines the real form $\mathfrak{g}$ up to isomorphism. The signs $s_i$ are not uniquely determined. However, it is possible to make a ``canonical''
choice for the signs so that the Vogan diagram is uniquely determined. 

 Now let $\mathfrak{h}$ be a maximally non-compact standard Cartan subalgebra of $\mathfrak{g}$, with root system $\Phi$. Then, in general, there is no basis of simple roots which is stable under $\theta$. However we can still define a diagram, in the following way. Let $\mathfrak{c} = \mathfrak{h}\cap \mathfrak{p}$ be the Cartan subspace contained in $\mathfrak{h}$. Let $\Phi_c = \{ \alpha\in \Phi \mid \alpha\circ\theta = \alpha\} = \{ \alpha\in
\Phi \mid \alpha(\mathfrak{c}) = 0\}$ be the set of \emph{compact roots }. Then there is a choice of positive roots $\Phi^+$ such that $\alpha\circ\theta \in \Phi^-$ for all \emph{non-compact} positive roots $\alpha\in \Phi^+$. Let $\Delta$ denote the basis of simple roots corresponding to $\Phi^+$. A theorem due to Satake says that there is a bijection $\tau : \Delta\to \Delta$ such that $\tau(\alpha) = \alpha$ if $\alpha\in \Phi_c$, and for non-compact $\alpha\in\Delta$ we have $\alpha\circ\theta = -\tau(\alpha) - \sum_{\gamma\in\Delta_c} c_{\alpha,\gamma}
\gamma$, where $\Delta_c = \Delta \cap \Phi_c$ and the $c_{\alpha,\gamma}$ are non-negative integers. Now we take the Dynkin diagram corresponding to $\Delta$, where the nodes corresponding to the compact roots are painted black, and
the nodes corresponding to a pair $\alpha,\tau(\alpha)$, if they are unequal, are joined by arrows. The resulting diagram is called
the \emph{Satake diagram} of $\mathfrak{g}$. It determines the real form $\mathfrak{g}$ up to isomorphism. }

 
\section{\textcolor{Chapter }{Nilpotent orbits}}\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X8295733081A2BFF8}{}
{
  By $G^c$, $G$ we denote the adjoint groups of $\mathfrak{g}^c$ and $\mathfrak{g}$ respectively. The nilpotent $G^c$-orbits in $\mathfrak{g}^c$ have been classified by so-called weighted Dynkin diagrams. A nilpotent $G^c$-orbit in $\mathfrak{g}^c$ may have no intersection with the real form $\mathfrak{g}$. On the other hand, when it does have an intersection, then this may split
into several $G$-orbits. 

 Let $e$ be an element of a nilpotent $G$-orbit in $\mathfrak{g}$. By the Jacobson-Morozov theorem, $e$ lies in an $\mathfrak{sl}_2$-triple $(e,h,f)$; here this means that $[h,e]=2e$, $[h,f]=-2f$, and $[e,f]=h$. The triple is called a \emph{real Cayley triple} if $\theta(e) = -f$, $\theta(f)=-e$ and $\theta(h) = -h$, where $\theta$ is the Cartan involution of $\mathfrak{g}$. Every nilpotent orbit has a representative lying in a real Cayley triple. }

 
\section{\textcolor{Chapter }{On base fields}}\logpage{[ 1, 4, 0 ]}
\hyperdef{L}{X7C0A369A841F5BC9}{}
{
  To define a Lie algebra by a multiplication table over the reals, it usually
suffices to take a subfield of the real field as base field. However, the
algorithms contained in this package very often need a Chevalley basis of the
Lie algebra at hand, which is defined only over the complex field.
Computations with such a Chevalley basis take place behind the scenes, and the
result is again defined over the reals. However, the computations would not be
possible if the Lie algebra is just defined over (a subfield of) the reals.
For this reason, we require that the base field contains the imaginary unit \mbox{\texttt{\mdseries\slshape E(4)}}. 

 Furthermore, in many algorithms it is necessary to take square roots of
elements of the base field. So the ideal base field would contain the
imaginary unit, as well as being closed under taking square roots. However,
such a field is difficult to construct and to work with on a computer. For
this reason we have provided the field \mbox{\texttt{\mdseries\slshape SqrtField}} containing the square roots of all rational numbers. Mathematically, this is
the field $\mathbb{Q}^{\sqrt{}}(\imath)$ with $\mathbb{Q}^{\sqrt{}}=\mathbb{Q}(\{\sqrt{p}\mid p\textrm{ a prime}\})$ and $\imath=\sqrt{-1}\in\mathbb{C}$. Clearly, $\mathbb{Q}^{\sqrt{}}(\imath)$ is an infinite extension of the rationals $\mathbb{Q}$, and every $f$ in $\mathbb{Q}^{\sqrt{}}(\imath)$ can be uniquely written as $f=\sum_{j=1}^m r_i \sqrt{k_j}$ for Gaussian rationals $r_i\in\mathbb{Q}(\imath)$ and pairwise distinct squarefree positive integers $k_1,\ldots,k_m$. Thus, $f$ can be described efficiently by its coefficient vector $[[r_1,k_1],\ldots,[r_j,k_j]]$. We comment on our implementation of $\mathbb{Q}^{\sqrt{}}(\imath)$ in Chapter \ref{sqrt}. 

 Although it is possible to try most functions of the package using the base
field \mbox{\texttt{\mdseries\slshape CF(4)}}, for example, it is likely that many computations will result in an error,
because of the lack of square roots in that field. Many more computations are
possible over \mbox{\texttt{\mdseries\slshape SqrtField}}, but also in that case, of course, a computation may result in an error
because we cannot construct a particular square root. Also, computations over \mbox{\texttt{\mdseries\slshape SqrtField}} tend to be significantly slower than over, say, \mbox{\texttt{\mdseries\slshape CF(4)}}; see the next example. But that is a price we have to pay (at least, in order
to be able to do some computations). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:=RealFormById("E",8,2);|
  <Lie algebra of dimension 248 over SqrtField>
  !gapprompt@gap>| !gapinput@allCSA := CartanSubalgebrasOfRealForm(L);;time;|
  67224
  !gapprompt@gap>| !gapinput@L:=RealFormById("E",8,2,CF(4));|
  <Lie algebra of dimension 248 over GaussianRationals>
  !gapprompt@gap>| !gapinput@allCSA := CartanSubalgebrasOfRealForm(L);;time;|
  7301
  # We remark that both computations are exactly the same; 
  # the difference in timing is caused by the fact that 
  # arithmetic over SqrtField is slower.
\end{Verbatim}
 }

 }

  
\chapter{\textcolor{Chapter }{The field \mbox{\texttt{\mdseries\slshape SqrtField}}}}\label{sqrt}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X7BC64D3583EAEA34}{}
{
  
\section{\textcolor{Chapter }{ Definition of the field }}\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X80E89FFF7F52BE64}{}
{
  The field $\mathbb{Q}^{\sqrt{}}(\imath)$ with $\mathbb{Q}^{\sqrt{}}=\mathbb{Q}(\{\sqrt{p}\mid p\textrm{ a prime}\})$ and $\imath=\sqrt{-1}\in\mathbb{C}$ is realised as \mbox{\texttt{\mdseries\slshape SqrtField}}. A few functions print some information on what they are doing to the info
class \mbox{\texttt{\mdseries\slshape InfoSqrtField}}; this can be turned off by setting \mbox{\texttt{\mdseries\slshape SetInfoLevel( InfoSqrtField, 0 );}}. 

\subsection{\textcolor{Chapter }{SqrtFieldIsGaussRat}}
\logpage{[ 2, 1, 1 ]}\nobreak
\hyperdef{L}{X7E924375789E5F98}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SqrtFieldIsGaussRat({\mdseries\slshape q})\index{SqrtFieldIsGaussRat@\texttt{SqrtFieldIsGaussRat}}
\label{SqrtFieldIsGaussRat}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape q}} is an element of \mbox{\texttt{\mdseries\slshape SqrtField}}; this function returns \mbox{\texttt{\mdseries\slshape true}} if and only if \mbox{\texttt{\mdseries\slshape q}} is the product of \mbox{\texttt{\mdseries\slshape One(SqrtField)}} and a Gaussian rational. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@F := SqrtField;|
  SqrtField
  !gapprompt@gap>| !gapinput@IsField( F ); LeftActingDomain( F ); Size( F ); Characteristic( F );|
  true
  GaussianRationals
  infinity
  0
  !gapprompt@gap>| !gapinput@one := One( F );|
  1
  !gapprompt@gap>| !gapinput@2 in F; 2*one in F; 2*E(4)*one in F;|
  false
  true
  true
  !gapprompt@gap>| !gapinput@a := 2/3*E(4)*one;; |
  !gapprompt@gap>| !gapinput@a in SqrtField; a in GaussianRationals; SqrtFieldIsGaussRat( a );|
  true
  false
  true
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{ Construction of elements }}\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X850FE9D385B653D9}{}
{
  Every $f$ in \mbox{\texttt{\mdseries\slshape SqrtField}} can be uniquely written as $f=\sum_{j=1}^m r_i \sqrt{k_j}$ for Gaussian rationals $r_i\in\mathbb{Q}(\imath)$ and pairwise distinct squarefree positive integers $k_1,\ldots,k_m$. Thus, $f$ can be described efficiently by its coefficient vector $[[r_1,k_1],\ldots,[r_j,k_j]]$. 

\subsection{\textcolor{Chapter }{Sqroot}}
\logpage{[ 2, 2, 1 ]}\nobreak
\hyperdef{L}{X84E7D3D787000313}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{Sqroot({\mdseries\slshape q})\index{Sqroot@\texttt{Sqroot}}
\label{Sqroot}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape q}} is a rational number and \mbox{\texttt{\mdseries\slshape Sqroot(q)}} is the element $\sqrt{q}$ as an element of \mbox{\texttt{\mdseries\slshape SqrtField}}. If $q=(-1)^\epsilon a/b$ with coprime integers $ a,b\geq 0$ and $\epsilon\in\{0,1\}$, then \mbox{\texttt{\mdseries\slshape Sqroot(q)}} is represented as the element \mbox{\texttt{\mdseries\slshape E(4)}}$^\varepsilon$\mbox{\texttt{\mdseries\slshape *b*Sqroot(ab)}} of \mbox{\texttt{\mdseries\slshape SqrtField}}. }

 

\subsection{\textcolor{Chapter }{CoefficientsOfSqrtFieldElt}}
\logpage{[ 2, 2, 2 ]}\nobreak
\hyperdef{L}{X86C3EA257D7CF10C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CoefficientsOfSqrtFieldElt({\mdseries\slshape f})\index{CoefficientsOfSqrtFieldElt@\texttt{CoefficientsOfSqrtFieldElt}}
\label{CoefficientsOfSqrtFieldElt}
}\hfill{\scriptsize (function)}}\\


 If \mbox{\texttt{\mdseries\slshape f}} is an element in \mbox{\texttt{\mdseries\slshape SqrtField}}, then \mbox{\texttt{\mdseries\slshape CoefficientsOfSqrtFieldElt(f)}} returns its coefficient vector $[[r_1,k_1],\ldots,[r_m,k_m]]$ as described above, that is, $r_1,\ldots,r_m\in\mathbb{Q}(\imath)$ and $k_1,\ldots,k_m$ are pairwise distinct positive squarefree integers such that $f=\sum_{j=1}^m r_j\sqrt{k_j}$. }

 

\subsection{\textcolor{Chapter }{SqrtFieldEltByCoefficients}}
\logpage{[ 2, 2, 3 ]}\nobreak
\hyperdef{L}{X7B0063817B03422F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SqrtFieldEltByCoefficients({\mdseries\slshape l})\index{SqrtFieldEltByCoefficients@\texttt{SqrtFieldEltByCoefficients}}
\label{SqrtFieldEltByCoefficients}
}\hfill{\scriptsize (function)}}\\


 If \mbox{\texttt{\mdseries\slshape l}} is a list $[[r_1,k_1],\ldots,[r_m,k_m]]$ with Gaussian rationals $r_j$ and rationals $k_j$, then \mbox{\texttt{\mdseries\slshape SqrtFieldEltByCoeffiients(l)}} returns the element $\sum_{j=1}^m r_j\sqrt{k_j}$ as an element of \mbox{\texttt{\mdseries\slshape SqrtField}}. Note that here $k_1,\ldots,k_m$ need not to be positive, squarefree, or pairwise distinct. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@Sqroot(-(2*3*4)/(11*13)); Sqroot(245/15); Sqroot(16/9);|
  2/143*E(4)*Sqroot(858)
  7/3*Sqroot(3)
  4/3
  !gapprompt@gap>| !gapinput@a := 2+Sqroot(7)+Sqroot(99);|
  2 + Sqroot(7) + 3*Sqroot(11)
  !gapprompt@gap>| !gapinput@CoefficientsOfSqrtFieldElt(a);|
  [ [ 2, 1 ], [ 1, 7 ], [ 3, 11 ] ]
  !gapprompt@gap>| !gapinput@SqrtFieldEltByCoefficients([[2,9],[1,7],[E(4),13]]);|
  6 + Sqroot(7) + E(4)*Sqroot(13)
\end{Verbatim}
 }

 

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


 If \mbox{\texttt{\mdseries\slshape f}} lies in \mbox{\texttt{\mdseries\slshape SqrtField}} with coefficient vector $[[r_1,k_1],\ldots,[r_m,k_m]]$, then \mbox{\texttt{\mdseries\slshape SqrtFieldEltToCyclotomic(f)}} returns $\sum_{j=1}^m r_j\sqrt{k_j}$ lying in a suitable cyclotomic field \mbox{\texttt{\mdseries\slshape CF(n)}}. The degree $n$ can easily become too large, hence this function should be used with caution. }

 

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


 If \mbox{\texttt{\mdseries\slshape c}} is an element of $\mathbb{Q}^{\sqrt{}}(\imath)$ represented as an element of a cyclotomic field \mbox{\texttt{\mdseries\slshape CF(n)}}, then \mbox{\texttt{\mdseries\slshape SqrtFieldEltByCyclotomic(c)}} returns the corresponding element in \mbox{\texttt{\mdseries\slshape SqrtField}}. Our algorithm for doing this is described in \cite{hdwdg12}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@SqrtFieldEltToCyclotomic( Sqroot(2) );|
  E(8)-E(8)^3
  !gapprompt@gap>| !gapinput@SqrtFieldEltToCyclotomic( Sqroot(2)+E(4)*Sqroot(7) );|
  E(56)^5+E(56)^8+E(56)^13-E(56)^15+E(56)^16-E(56)^23-E(56)^24+E(56)^29-E(56)^31+
  E(56)^32+E(56)^37-E(56)^39-E(56)^40+E(56)^45-E(56)^47-E(56)^48+E(56)^53-E(56)^55
  !gapprompt@gap>| !gapinput@SqrtFieldEltByCyclotomic( E(8)-E(8)^3 );|
  Sqroot(2)
  !gapprompt@gap>| !gapinput@SqrtFieldEltByCyclotomic( 3*E(4)*Sqrt(11)-2/4*Sqrt(-13/7) );|
  3*E(4)*Sqroot(11) + (-1/14*E(4))*Sqroot(91)
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{ Basic operations }}\logpage{[ 2, 3, 0 ]}
\hyperdef{L}{X82EB5BE77F9F686A}{}
{
  All basic field operations are available. The inverse of an element $f$ in \mbox{\texttt{\mdseries\slshape SqrtField}} as follows: We first compute the minimal polynomial $p(X)$ of $f$ over $\mathbb{Q}(\imath)$, that is, a non-trivial linear combination $0=p(f)=a_0+a_1 f+\ldots a_{i-1}f^{i-1}+f^i$. Then $f^{-1}=-(a_1+a_2f+\ldots+a_{i-1}f^{i-2}+f^{i-1})/a_0$. Although the inverse of $f$ can be computed with linear algebra methods only, the degree of the minimal
polynomial of $f$ can become rather large. For example, if $f=\sum_{j=1}^m r_i \sqrt{k_j}$ for rational $r_i$ and pairwise distinct positive squarefree integers $k_1,\ldots,k_m$, then $f$ is a primitive element of the number field $\mathbb{Q}(\sqrt{k_1},\ldots,\sqrt{k_m})$, see for example Lemma A.5 in \cite{hdwdg12}. For larger degree, the progress of the computation of the inverse is printed
via the InfoClass \mbox{\texttt{\mdseries\slshape InfoSqrtField}}. We remark that the method \mbox{\texttt{\mdseries\slshape Random}} simply returns a sum of a few terms $a\sqrt{b}$ where $a,b$ are random rationals constructed with \mbox{\texttt{\mdseries\slshape Random(Rationals)}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@a := Sqroot( 2 ) + 3 * Sqroot( 3/7 ); b := Sqroot( 21 ) - Sqroot( 2 );|
  Sqroot(2) + 3/7*Sqroot(21)
  (-1)*Sqroot(2) + Sqroot(21)
  !gapprompt@gap>| !gapinput@a + b; a * b; a - b;|
  10/7*Sqroot(21)
  7 + 4/7*Sqroot(42)
  2*Sqroot(2) + (-4/7)*Sqroot(21)
  !gapprompt@gap>| !gapinput@c := ( a - b )^-2;|
  91/8 + 7/4*Sqroot(42)
  !gapprompt@gap>| !gapinput@a := Sum( List( [2,3,5,7], x -> Sqroot( x ) ) );|
  Sqroot(2) + Sqroot(3) + Sqroot(5) + Sqroot(7)
  !gapprompt@gap>| !gapinput@b := a^-1; a*b;                                  |
  37/43*Sqroot(2) + (-29/43)*Sqroot(3) + (-133/215)*Sqroot(5) + 
  27/43*Sqroot(7) + 62/215*Sqroot(30) + (-10/43)*Sqroot(42) + (-34/215)*Sqroot(70) 
  + 22/215*Sqroot(105)
  1
  !gapprompt@gap>| !gapinput@ComplexConjugate(Sqroot(17)+Sqroot(-7));|
  (-E(4))*Sqroot(7) + Sqroot(17)
  !gapprompt@gap>| !gapinput@Random( SqrtField );|
  -1 + 1/4*Sqroot(3) + 1/9*Sqroot(6)
\end{Verbatim}
 Most methods for list, matrices, and polynomials also work over \mbox{\texttt{\mdseries\slshape SqrtField}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@m:=[[Sqroot(2),Sqroot(3)],[Sqroot(2),Sqroot(5)],[1,0]]*One(SqrootField);|
  [ [ Sqroot(2), Sqroot(3) ], [ Sqroot(2), Sqroot(5) ], [ 1, 0 ] ]
  !gapprompt@gap>| !gapinput@NullspaceMat(m);|
  [ [ (-5/4)*Sqroot(2) + (-1/4)*Sqroot(30), 3/4*Sqroot(2) + 1/4*Sqroot(30), 1 ] ]
  !gapprompt@gap>| !gapinput@RankMat(m);|
  2
  !gapprompt@gap>| !gapinput@m := [[Sqroot(2),Sqroot(3)],[Sqroot(2),Sqroot(5)]];  |
  [ [ Sqroot(2), Sqroot(3) ], [ Sqroot(2), Sqroot(5) ] ]
  !gapprompt@gap>| !gapinput@Determinant( m );  DefaultFieldOfMatrix( m );|
  (-1)*Sqroot(6) + Sqroot(10)
  SqrtField
  !gapprompt@gap>| !gapinput@x := Indeterminate( SqrtField, "x" );; f := x^2+x+1;|
  x^2+x+1
\end{Verbatim}
 

\subsection{\textcolor{Chapter }{SqrtFieldMakeRational}}
\logpage{[ 2, 3, 1 ]}\nobreak
\hyperdef{L}{X873983AD867AC476}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SqrtFieldMakeRational({\mdseries\slshape m})\index{SqrtFieldMakeRational@\texttt{SqrtFieldMakeRational}}
\label{SqrtFieldMakeRational}
}\hfill{\scriptsize (function)}}\\


 If \mbox{\texttt{\mdseries\slshape m}} is an element of \mbox{\texttt{\mdseries\slshape SqrtField}}, or a list or a matrix over \mbox{\texttt{\mdseries\slshape SqrtField}}, defined over the Gaussian rationals, then \mbox{\texttt{\mdseries\slshape SqrtFieldMakeRational( m )}} returns the corresponding element in $\mathbb{Q}(\imath)$ or defined over $\mathbb{Q}(\imath)$, respectively. This function is used internally, for example, to compute the
determinant or rank of a rational matrix over \mbox{\texttt{\mdseries\slshape SqrtField}} more efficiently. It is also used in the following three functions. }

 

\subsection{\textcolor{Chapter }{SqrtFieldPolynomialToRationalPolynomial}}
\logpage{[ 2, 3, 2 ]}\nobreak
\hyperdef{L}{X860A58627B6D5999}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SqrtFieldPolynomialToRationalPolynomial({\mdseries\slshape f})\index{SqrtFieldPolynomialToRationalPolynomial@\texttt{Sqrt}\-\texttt{Field}\-\texttt{Polynomial}\-\texttt{To}\-\texttt{Rational}\-\texttt{Polynomial}}
\label{SqrtFieldPolynomialToRationalPolynomial}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape f}} is a polynomial over \mbox{\texttt{\mdseries\slshape SqrtField}} but with coefficients in the Gaussian rationals. The function returns the
corresponding polynomial defined over the Gaussian rationals. }

 

\subsection{\textcolor{Chapter }{SqrtFieldRationalPolynomialToSqrtFieldPolynomial}}
\logpage{[ 2, 3, 3 ]}\nobreak
\hyperdef{L}{X79C882567BC98D65}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SqrtFieldRationalPolynomialToSqrtFieldPolynomial({\mdseries\slshape f})\index{SqrtFieldRationalPolynomialToSqrtFieldPolynomial@\texttt{Sqrt}\-\texttt{Field}\-\texttt{Rational}\-\texttt{Polynomial}\-\texttt{To}\-\texttt{Sqrt}\-\texttt{Field}\-\texttt{Polynomial}}
\label{SqrtFieldRationalPolynomialToSqrtFieldPolynomial}
}\hfill{\scriptsize (function)}}\\


 If \mbox{\texttt{\mdseries\slshape f}} is a polynomial over the Gaussian rationals, then the function returns the
corresponding polynomial defined over \mbox{\texttt{\mdseries\slshape SqrtField}}. }

 

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


 If \mbox{\texttt{\mdseries\slshape f}} is a rational polynomial defined over \mbox{\texttt{\mdseries\slshape SqrtField}}, then the previous two functions are used to obtain its factorisation over $\mathbb{Q}$. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@F := SqrtField;; one := One( SqrtField );;                 |
  !gapprompt@gap>| !gapinput@x := Indeterminate( F, "x" );; f := x^5 + 4*x^3 + E(4)*one*x;|
  x^5+4*x^3+E(4)*x
  !gapprompt@gap>| !gapinput@SqrtFieldPolynomialToRationalPolynomial(f);|
  x_1^5+4*x_1^3+E(4)*x_1
  !gapprompt@gap>| !gapinput@SqrtFieldRationalPolynomialToSqrtFieldPolynomial(last);|
  x^5+4*x^3+E(4)*x
  !gapprompt@gap>| !gapinput@f := x^2-1;; Factors(f);|
  [ x-1, x+1 ]
  !gapprompt@gap>| !gapinput@f := x^2+1;; Factors(f);|
  [ x^2+1 ]
\end{Verbatim}
 }

 }

 }

  
\chapter{\textcolor{Chapter }{Real Lie Algebras}}\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X81152A5D7B4BF910}{}
{
  
\section{\textcolor{Chapter }{ Construction of simple real Lie algebras }}\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X86598A16853C825D}{}
{
  A few functions print some information on what they are doing to the info
class \mbox{\texttt{\mdseries\slshape InfoCorelg}}. 

\subsection{\textcolor{Chapter }{RealFormsInformation}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X7BB53454857133FF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealFormsInformation({\mdseries\slshape type, rank})\index{RealFormsInformation@\texttt{RealFormsInformation}}
\label{RealFormsInformation}
}\hfill{\scriptsize (function)}}\\


 This function displays information regarding the simple real Lie algebras that
can be constructed from the complex Lie algebra of type \mbox{\texttt{\mdseries\slshape type}} (which is a string) and rank \mbox{\texttt{\mdseries\slshape rank}} (a positive integer). Each Lie algebra is given an index which is an integer,
and for each index some information is given on the Lie algebra, such as a
commonly used name. In all cases the index 0 refers to the realification of
the complex Lie algebra. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RealFormsInformation( "A", 4 );|
  
    There are 4 simple real forms with complexification A4
      1 is of type su(5), compact form
      2 - 3 are of type su(p,5-p) with 1 <= p <= 2
      4 is of type sl(5,R)
    Index '0' returns the realification of A4
  
  !gapprompt@gap>| !gapinput@RealFormsInformation( "E", 6 );|
   
    There are 5 simple real forms with complexification E6
      1 is the compact form
      2 is EI   = E6(6), with k_0 of type sp(4) (C4)
      3 is EII  = E6(2), with k_0 of type su(6)+su(2) (A5+A1)
      4 is EIII = E6(-14), with k_0 of type so(10)+R (D5+R)
      5 is EIV  = E6(-26), with k_0 of type f_4 (F4)
    Index '0' returns the realification of E6
  
  !gapprompt@gap>| !gapinput@NumberRealForms("D",10);|
  12
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{NumberRealForms}}
\logpage{[ 3, 1, 2 ]}\nobreak
\hyperdef{L}{X78143E4187893A79}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{NumberRealForms({\mdseries\slshape type, rank})\index{NumberRealForms@\texttt{NumberRealForms}}
\label{NumberRealForms}
}\hfill{\scriptsize (function)}}\\


 This function returns the number of (isomorphism types of) all real forms of
the simple complex Lie algebras of type \mbox{\texttt{\mdseries\slshape type}} and rank \mbox{\texttt{\mdseries\slshape rank}}. }

 

\subsection{\textcolor{Chapter }{RealFormById}}
\logpage{[ 3, 1, 3 ]}\nobreak
\hyperdef{L}{X8443E03C868CA7D3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealFormById({\mdseries\slshape type, rank, id})\index{RealFormById@\texttt{RealFormById}}
\label{RealFormById}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealFormById({\mdseries\slshape type, rank, id, F})\index{RealFormById@\texttt{RealFormById}}
\label{RealFormById}
}\hfill{\scriptsize (function)}}\\


 Let $L$ be the complex Lie algebra of type \mbox{\texttt{\mdseries\slshape type}} and rank \mbox{\texttt{\mdseries\slshape rank}}. This function constructs the real form of $L$ with index \mbox{\texttt{\mdseries\slshape id}} (see \texttt{RealFormsInformation} (\ref{RealFormsInformation})). By default this Lie algebra is constructed over the field \mbox{\texttt{\mdseries\slshape SqrtField}}. However, by adding as an optional fourth argument the field \mbox{\texttt{\mdseries\slshape F}}, it is possible to construct the Lie algebra output by this function over \mbox{\texttt{\mdseries\slshape F}}. It is required that the complex unit \mbox{\texttt{\mdseries\slshape E(4)}} is contained in \mbox{\texttt{\mdseries\slshape F}}. If the index \mbox{\texttt{\mdseries\slshape ind}} is 0, then the realification of $L$ is constructed, which, strictly speaking is not a real form of $L$. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@RealFormById( "A", 4, 2 );|
  <Lie algebra of dimension 24 over SqrtField>
  !gapprompt@gap>| !gapinput@RealFormById( "A", 4, 2, CF(4) );|
  <Lie algebra of dimension 24 over GaussianRationals>
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{AllRealForms}}
\logpage{[ 3, 1, 4 ]}\nobreak
\hyperdef{L}{X85C3549A8537FBF6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AllRealForms({\mdseries\slshape type, rank})\index{AllRealForms@\texttt{AllRealForms}}
\label{AllRealForms}
}\hfill{\scriptsize (function)}}\\


 This function returns all real forms of the simple complex Lie algebras of
type \mbox{\texttt{\mdseries\slshape type}} and rank \mbox{\texttt{\mdseries\slshape rank}} up to isomorphism. In the same way as with \texttt{RealFormById} (\ref{RealFormById}) it is possible to add the base field as an optional third argument. }

  

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


 For a real Lie algebra \mbox{\texttt{\mdseries\slshape L}} constructed by the function \texttt{RealFormById} (\ref{RealFormById}), this function returns a list of the parameters defining \mbox{\texttt{\mdseries\slshape L}} as a real form of its complexification. The first element of the list is the
type of \mbox{\texttt{\mdseries\slshape L}} (given by a string), the second element is its rank, the third and fourth
elements are the list of signs and the permutation defining the Cartan
involution (see Section \ref{srl}). }

  

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


 Returns \mbox{\texttt{\mdseries\slshape true}} if and only if the real form \mbox{\texttt{\mdseries\slshape L}} is a defined by an inner involutive automorphism. }

 

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


 Returns \mbox{\texttt{\mdseries\slshape true}} if and only if the real form \mbox{\texttt{\mdseries\slshape L}} is the realification of a complex simple Lie algebra. }

 

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


 The Cartan decomposition of \mbox{\texttt{\mdseries\slshape L}} as a record with entries \mbox{\texttt{\mdseries\slshape K}}, \mbox{\texttt{\mdseries\slshape P}}, and \mbox{\texttt{\mdseries\slshape CartanInv}}, such that $L=K\oplus P$ is the Cartan decomposition with corresponding Cartan involution \mbox{\texttt{\mdseries\slshape CartanInv}}, which is defined as a function on \mbox{\texttt{\mdseries\slshape L}}. 

 The Lie algebras constructed by \texttt{RealFormById} (\ref{RealFormById}) have this attribute stored. For other semisimple real Lie algebras it is
computed. However, we do remark that the in the computation the root system is
computed with respect to a Cartan subalgebra. If the program does not succeed
in splitting the Cartan subalgebra over the base field of \mbox{\texttt{\mdseries\slshape L}}, then the computation will not succeed. }

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:= RealFormById( "A", 5, 3 );|
  <Lie algebra of dimension 35 over SqrtField>
  !gapprompt@gap>| !gapinput@H := CartanSubalgebra(L);;|
  !gapprompt@gap>| !gapinput@K:= LieCentralizer( L, Subalgebra( L, [Basis( H )[1]] ) );|
  <Lie algebra of dimension 17 over SqrtField>
  !gapprompt@gap>| !gapinput@DK:= LieDerivedSubalgebra( K );|
  <Lie algebra of dimension 15 over SqrtField>
  !gapprompt@gap>| !gapinput@CartanDecomposition( DK );|
  rec( CartanInv := function( v ) ... end, 
  K := <Lie algebra of dimension 15 over SqrtField>, 
  P := <vector space over SqrtField, with 0 generators> )
  # We see that the semisimple subalgebra DK is compact. 
\end{Verbatim}
 

\subsection{\textcolor{Chapter }{RealStructure}}
\logpage{[ 3, 1, 9 ]}\nobreak
\hyperdef{L}{X8318965D8692FC43}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealStructure({\mdseries\slshape L})\index{RealStructure@\texttt{RealStructure}}
\label{RealStructure}
}\hfill{\scriptsize (attribute)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealStructure({\mdseries\slshape L: basis := B})\index{RealStructure@\texttt{RealStructure}}
\label{RealStructure}
}\hfill{\scriptsize (attribute)}}\\


 The real structure of the real form \mbox{\texttt{\mdseries\slshape L}} is the (complex) conjugation with respect to \mbox{\texttt{\mdseries\slshape L}}, that is, the function which maps an element in \mbox{\texttt{\mdseries\slshape L}} to the element constructed as follows: write it as a linear combination of the
basis elements of \mbox{\texttt{\mdseries\slshape L}} and replace each coefficient by its complex conjugate. If the optional
argument \mbox{\texttt{\mdseries\slshape basis:=B}} is given, then \mbox{\texttt{\mdseries\slshape B}} has to be a basis whose span contains \mbox{\texttt{\mdseries\slshape L}} (which is not checked by the code); in this case the linear combination is
done with respect to \mbox{\texttt{\mdseries\slshape B}}. The latter construction is important when one considers a subalgebra \mbox{\texttt{\mdseries\slshape M}} of a real form \mbox{\texttt{\mdseries\slshape L}}; here one could either do \mbox{\texttt{\mdseries\slshape Realstructure(M:basis:=Basis(L))}} or \mbox{\texttt{\mdseries\slshape SetRealStructure(M,RealStructure(L))}}. }

 }

 
\section{\textcolor{Chapter }{ Isomorphisms}}\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X7D702EA087C1C5EF}{}
{
  

\subsection{\textcolor{Chapter }{IsomorphismOfRealSemisimpleLieAlgebras}}
\logpage{[ 3, 2, 1 ]}\nobreak
\hyperdef{L}{X7F84150B84B62412}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{IsomorphismOfRealSemisimpleLieAlgebras({\mdseries\slshape K, L})\index{IsomorphismOfRealSemisimpleLieAlgebras@\texttt{Isomorphism}\-\texttt{Of}\-\texttt{Real}\-\texttt{Semisimple}\-\texttt{Lie}\-\texttt{Algebras}}
\label{IsomorphismOfRealSemisimpleLieAlgebras}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape K}}, \mbox{\texttt{\mdseries\slshape L}} are two real forms of a semisimple complex Lie algebra. This function returns
an isomorphism if one exists. Otherwise \mbox{\texttt{\mdseries\slshape false}} is returned. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:=RealFormById("E",6,3);;                            |
  !gapprompt@gap>| !gapinput@H:=CartanSubalgebra(L);;|
  !gapprompt@gap>| !gapinput@K:=LieCentralizer(L,Subalgebra(L,Basis(H){[1,2,4]}));;|
  !gapprompt@gap>| !gapinput@DK:=LieDerivedSubalgebra(K);|
  <Lie algebra of dimension 8 over SqrtField>
  !gapprompt@gap>| !gapinput@IdRealForm(DK);          |
  [ "A", 2, 2 ]
  !gapprompt@gap>| !gapinput@M:=RealFormById("A",2,2);|
  <Lie algebra of dimension 8 over SqrtField>
  !gapprompt@gap>| !gapinput@IsomorphismOfRealSemisimpleLieAlgebras(DK,M);|
  <Lie algebra isomorphism between Lie algebras of dimension 8 over SqrtField>
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Cartan subalgebras and root systems}}\logpage{[ 3, 3, 0 ]}
\hyperdef{L}{X82EAE07A8557719A}{}
{
  

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns a maximally compact
Cartan subalgebra of \mbox{\texttt{\mdseries\slshape L}}. }

 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns a maximally
non-compact Cartan subalgebra of \mbox{\texttt{\mdseries\slshape L}}. }

 

\subsection{\textcolor{Chapter }{CompactDimensionOfCartanSubalgebra}}
\logpage{[ 3, 3, 3 ]}\nobreak
\hyperdef{L}{X7F5A10E0782A4DBC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CompactDimensionOfCartanSubalgebra({\mdseries\slshape L})\index{CompactDimensionOfCartanSubalgebra@\texttt{CompactDimensionOfCartanSubalgebra}}
\label{CompactDimensionOfCartanSubalgebra}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CompactDimensionOfCartanSubalgebra({\mdseries\slshape L, H})\index{CompactDimensionOfCartanSubalgebra@\texttt{CompactDimensionOfCartanSubalgebra}}
\label{CompactDimensionOfCartanSubalgebra}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns the compact dimension
of the Cartan subalgebra \mbox{\texttt{\mdseries\slshape H}}. If \mbox{\texttt{\mdseries\slshape H}} is not given, then \mbox{\texttt{\mdseries\slshape CartanSubalgebra(L)}} will be taken. The compact dimension will be stored in the Cartan subalgebra,
so that a new call to this function, with the same input, will return the
compact dimension immediately. }

 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real form of a complex semisimple Lie algebra. This function returns a
list of Cartan subalgebras of \mbox{\texttt{\mdseries\slshape L}}. They are representatives of all classes of conjugate (by the adjoint group)
Cartan subalgebras of \mbox{\texttt{\mdseries\slshape L}}. }

 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns a Cartan subspace of \mbox{\texttt{\mdseries\slshape L}}. That is a maximal abelian subspace of the subspace \mbox{\texttt{\mdseries\slshape P}} given in the \texttt{CartanDecomposition} (\ref{CartanDecomposition}) of \mbox{\texttt{\mdseries\slshape L}}. }

 

\subsection{\textcolor{Chapter }{RootsystemOfCartanSubalgebra}}
\logpage{[ 3, 3, 6 ]}\nobreak
\hyperdef{L}{X7F9943407A2F367E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RootsystemOfCartanSubalgebra({\mdseries\slshape L})\index{RootsystemOfCartanSubalgebra@\texttt{RootsystemOfCartanSubalgebra}}
\label{RootsystemOfCartanSubalgebra}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RootsystemOfCartanSubalgebra({\mdseries\slshape L, H})\index{RootsystemOfCartanSubalgebra@\texttt{RootsystemOfCartanSubalgebra}}
\label{RootsystemOfCartanSubalgebra}
}\hfill{\scriptsize (operation)}}\\


 Here \mbox{\texttt{\mdseries\slshape L}} is a semisimple Lie algebra, and \mbox{\texttt{\mdseries\slshape H}} is a Cartan subalgebra. (If \mbox{\texttt{\mdseries\slshape H}} is not given, then \mbox{\texttt{\mdseries\slshape CartanSubalgebra(L)}} will be taken.) This function returns the root system of \mbox{\texttt{\mdseries\slshape L}} with respect to \mbox{\texttt{\mdseries\slshape H}}. It is necessary that the eigenvalues of the adjoint maps corresponding to
all elements of \mbox{\texttt{\mdseries\slshape H}} lie in the ground field of \mbox{\texttt{\mdseries\slshape L}}. However, even if they do, it is not guaranteed that this function succeeds,
as it may happen that \textsf{GAP} has no polynomial factorisation algorithm over the ground field. 

 The root system is stored in \mbox{\texttt{\mdseries\slshape H}}, so that a new call to this function, with the same input, will return the
same root system. }

 

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


 Here \mbox{\texttt{\mdseries\slshape R}} is a root system of a semisimple Lie algebra \mbox{\texttt{\mdseries\slshape L}}. This function returns a Chevalley basis of \mbox{\texttt{\mdseries\slshape L}}, consisting of root vectors of \mbox{\texttt{\mdseries\slshape R}}. }

 }

 
\section{\textcolor{Chapter }{Diagrams}}\logpage{[ 3, 4, 0 ]}
\hyperdef{L}{X78932FB48237B18F}{}
{
  In this section we document the functionality for computing the Satake and
Vogan diagrams of a real semisimple Lie algebra. In both cases the relevant
function computes an object, which, when printed, does not reveal much
information. However, \mbox{\texttt{\mdseries\slshape Display}} with as input such an object, displays the diagram. Here we use the convention
that every node is represented by an integer; nodes that are painted black are
represented by integers in brackets; and the involution (i.e., the arrows in
the diagram) are represented by a permutation of the nodes, printed on a line
below the diagram. 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns the Vogan diagram of \mbox{\texttt{\mdseries\slshape L}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:= RealFormById( "E", 6, 3 );;|
  !gapprompt@gap>| !gapinput@K:= LieCentralizer( L, Subalgebra( L, Basis( CartanSubalgebra(L) ){[1]} ) );|
  <Lie algebra of dimension 36 over SqrtField>
  !gapprompt@gap>| !gapinput@DK:= LieDerivedSubalgebra( K );|
  <Lie algebra of dimension 35 over SqrtField>
  !gapprompt@gap>| !gapinput@vd:= VoganDiagram(DK);|
  <Vogan diagram in Lie algebra of type A5>
  !gapprompt@gap>| !gapinput@Display( vd );|
  A5:  1---(2)---3---4---5
  Involution: ()
  
\end{Verbatim}
 }

 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra. This function returns the Satake diagram of \mbox{\texttt{\mdseries\slshape L}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:= RealFormById( "E", 6, 3 );;|
  !gapprompt@gap>| !gapinput@K:= LieCentralizer( L, Subalgebra( L, Basis( CartanSubalgebra(L) ){[1]} ) );|
  <Lie algebra of dimension 36 over SqrtField>
  !gapprompt@gap>| !gapinput@DK:= LieDerivedSubalgebra( K );|
  <Lie algebra of dimension 35 over SqrtField>
  !gapprompt@gap>| !gapinput@sd:= SatakeDiagram( DK );|
  <Satake diagram in Lie algebra of type A5>
  !gapprompt@gap>| !gapinput@Display( sd );|
  A5:  1---2---(3)---4---5
  Involution:  (1,5)(2,4)
\end{Verbatim}
 }

 }

 }

 
\chapter{\textcolor{Chapter }{Real nilpotent orbits}}\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X845E3A7E87C93239}{}
{
  
\section{\textcolor{Chapter }{Nilpotent orbits in real Lie algebras}}\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X7A6BB7967FE7ABA4}{}
{
  \textsf{CoReLG} has a database of the nilpotent orbits of the real forms of the simple Lie
algebras of ranks up to 8. When called the first time in a GAP session, \textsf{CoReLG} will first read the database of nilpotent orbits. 

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


 Here \mbox{\texttt{\mdseries\slshape L}} is a real form of a complex simple Lie algebra of rank up to 8. This function
returns the list of nilpotent orbits (under the action of the adjoint group)
of \mbox{\texttt{\mdseries\slshape L}}. For this function to work, \mbox{\texttt{\mdseries\slshape L}} must be defined over \mbox{\texttt{\mdseries\slshape SqrtField}}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:= RealFormById( "F", 4, 3 );;|
  !gapprompt@gap>| !gapinput@no:= NilpotentOrbitsOfRealForm( L );;|
  #I CoReLG: read database of real triples ... done
  !gapprompt@gap>| !gapinput@no[1];|
  <nilpotent orbit in Lie algebra>
\end{Verbatim}
 }

 

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


 Here \mbox{\texttt{\mdseries\slshape o}} is a nilpotent orbit constructed by \texttt{NilpotentOrbitsOfRealForm} (\ref{NilpotentOrbitsOfRealForm}) of a simple real Lie algebra. This function returns a real Cayley triple \mbox{\texttt{\mdseries\slshape [ f, h, e ]}} corresponding to the orbit \mbox{\texttt{\mdseries\slshape o}}. The third element \mbox{\texttt{\mdseries\slshape e}} is a representative of the orbit. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@L:= RealFormById( "F", 4, 2 );;|
  !gapprompt@gap>| !gapinput@no:= NilpotentOrbitsOfRealForm( L );;|
  !gapprompt@gap>| !gapinput@o:= no[10];|
  <nilpotent orbit in Lie algebra>
  !gapprompt@gap>| !gapinput@t:=RealCayleyTriple(o);;|
  !gapprompt@gap>| !gapinput@theta:= CartanDecomposition(L).CartanInv;|
  function( v ) ... end
  !gapprompt@gap>| !gapinput@theta(t[1]) = -t[3];|
  true
  !gapprompt@gap>| !gapinput@theta(t[2]) = -t[2];|
  true
  !gapprompt@gap>| !gapinput@t[3]*t[1] = t[2];|
  true
\end{Verbatim}
 }

 

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


 Here \mbox{\texttt{\mdseries\slshape o}} is a nilpotent orbit constructed by \texttt{NilpotentOrbitsOfRealForm} (\ref{NilpotentOrbitsOfRealForm}) of a simple real Lie algebra. This function returns the weighted Dynkin
diagram of the orbit, which identifies its orbit in the complexification of
the real Lie algebra in which \mbox{\texttt{\mdseries\slshape o}} lies. }

 }

 
\section{\textcolor{Chapter }{Nilpotent orbits in real Theta groups}}\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X7B7089407ECA46BC}{}
{
  Let $L=\bigoplus_{i\in \mathbb{Z}_m} L_i$ be a real semisimple Lie algebra, where $\mathbb{Z}_m=\mathbb{Z}/m\mathbb{Z}$ if $m\geq 1$, and $\mathbb{Z}_0=\mathbb{Z}$. We provide some functions which help to determine the $G_0$-orbits of nilpotent elements in $L_1$, where $G_0$ is the adjoint group of $L_0$. An approach to compute these orbits is described in \cite{dfg15}; the first step is to construct, up to $G_0$-conjugacy, all carrier subalgebras of $L$. Functions \texttt{CarrierAlgsForNilpOrbsInZGrading} (\ref{CarrierAlgsForNilpOrbsInZGrading}) and \texttt{CarrierAlgsForNilpOrbsInZmGrading} (\ref{CarrierAlgsForNilpOrbsInZmGrading}) do this in the case that $L$ is a split real form of a complex simple Lie algebra. 

\subsection{\textcolor{Chapter }{RealWeylGroup}}
\logpage{[ 4, 2, 1 ]}\nobreak
\hyperdef{L}{X8196CAF57F4CD8C7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealWeylGroup({\mdseries\slshape L})\index{RealWeylGroup@\texttt{RealWeylGroup}}
\label{RealWeylGroup}
}\hfill{\scriptsize (function)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{RealWeylGroup({\mdseries\slshape L, H})\index{RealWeylGroup@\texttt{RealWeylGroup}}
\label{RealWeylGroup}
}\hfill{\scriptsize (function)}}\\


 Here \mbox{\texttt{\mdseries\slshape L}} is a real semisimple Lie algebra with Cartan subalgebra \mbox{\texttt{\mdseries\slshape H}}. (If \mbox{\texttt{\mdseries\slshape H}} is not given, then \mbox{\texttt{\mdseries\slshape CartanSubalgebra(L)}} will be taken.) This function returns the real Weyl group $N_G(H)/C_G(H)$ associated with \mbox{\texttt{\mdseries\slshape H}}, where $G$ is the adjoint group of \mbox{\texttt{\mdseries\slshape L}}. The real Weyl group will be stored in the Cartan subalgebra, so that a new
call to this function, with the same input, will return the real Weyl group
immediately. }

 

\subsection{\textcolor{Chapter }{CarrierAlgsForNilpOrbsInZGrading}}
\logpage{[ 4, 2, 2 ]}\nobreak
\hyperdef{L}{X7F579EDA7EDD0C87}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CarrierAlgsForNilpOrbsInZGrading({\mdseries\slshape type, rank, d})\index{CarrierAlgsForNilpOrbsInZGrading@\texttt{CarrierAlgsForNilpOrbsInZGrading}}
\label{CarrierAlgsForNilpOrbsInZGrading}
}\hfill{\scriptsize (attribute)}}\\


 Gives a record containing (up to conjugacy) the carrier algebras of the real
theta group specified by the input: here \mbox{\texttt{\mdseries\slshape type}} and \mbox{\texttt{\mdseries\slshape rank}} are the type and rank of the simple real Lie algebra (split real form) where
everything happens; \mbox{\texttt{\mdseries\slshape d}} is a list of degrees of the simple roots, defining a $\mathbb{Z}$ grading on the Lie algebra. The output is a record with the following entries: \mbox{\texttt{\mdseries\slshape L}} the Lie algebra, \mbox{\texttt{\mdseries\slshape grad}} the grading that was used (different format for Z-grading, \mbox{\texttt{\mdseries\slshape L0}} the 0-component of the grading, \mbox{\texttt{\mdseries\slshape Hs}} the Cartan subalgebras of \mbox{\texttt{\mdseries\slshape L0}} that are used, \mbox{\texttt{\mdseries\slshape cars}} the carrier algebras. Here \mbox{\texttt{\mdseries\slshape cars}} is a list of lists; for each Cartan subalgebra of \mbox{\texttt{\mdseries\slshape L0}} there is one list: the first corresponds to the split Cartan subalgebra, and
so has just the complex carrier algebras (which are also real), the other
lists contain lists as well, for each complex carrier algebra (i.e., for each
element of the first list) there is a list containing the real carrier
algebras which are strongly $H_i$-regular, and over the complex numbers conjugate to the given complex carrier
algebra. Furthermore, a carrier algebra is given by a record, containing the
fields \mbox{\texttt{\mdseries\slshape g0}}, \mbox{\texttt{\mdseries\slshape gp}} (positive degree), and \mbox{\texttt{\mdseries\slshape gn}} (negative degree). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@ca:=CarrierAlgsForNilpOrbsInZGrading("G",2,[1,0]);|
  rec( 
   Hs  := [ <Lie algebra of dimension 2 over SqrtField>, 
            <Lie algebra of dimension 2 over SqrtField> ], 
    L  :=   <Lie algebra of dimension 14 over SqrtField>, 
    L0 :=   <Lie algebra of dimension 4 over SqrtField>, 
  cars :=  [ 
            [rec( g0 := [ v.13+(3)*v.14 ], gn := [ [ v.9 ] ], gp := [ [ v.3 ] ] )]
              ,[ [  ] ] 
           ], 
  grad := rec( g0 := [ v.2, v.8, v.13, v.14 ], 
                 gn := [ [ v.7, v.9 ], [ v.10 ], [ v.11, v.12 ] ], 
                 gp := [ [ v.1, v.3 ], [ v.4 ], [ v.5, v.6 ] ] ) )
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{CarrierAlgsForNilpOrbsInZmGrading}}
\logpage{[ 4, 2, 3 ]}\nobreak
\hyperdef{L}{X7BAFCFF878612B46}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{CarrierAlgsForNilpOrbsInZmGrading({\mdseries\slshape type, rank, m0, str, num})\index{CarrierAlgsForNilpOrbsInZmGrading@\texttt{CarrierAlgsForNilpOrbsInZmGrading}}
\label{CarrierAlgsForNilpOrbsInZmGrading}
}\hfill{\scriptsize (attribute)}}\\


 Gives a record (up to conjugacy) containing the carrier algebras of the real
theta group specified by the input: here \mbox{\texttt{\mdseries\slshape type}} and \mbox{\texttt{\mdseries\slshape rank}} are the type and rank of the simple real Lie algebra (split real form) where
everything happens; \mbox{\texttt{\mdseries\slshape m0}} is the order of the automorphism defining the grading, \mbox{\texttt{\mdseries\slshape str}} is "inner" or "outer", depending on whether the automorphism is inner or not, \mbox{\texttt{\mdseries\slshape num}} the \mbox{\texttt{\mdseries\slshape num}}-th automorphism in the list \mbox{\texttt{\mdseries\slshape FiniteOrderInnerAutomorpisms( type, rank, m0 )}} or \mbox{\texttt{\mdseries\slshape FiniteOrderOuterAutomorphisms( type, rank, m0, 2 )}} which is used to define the grading. The output is as for \texttt{CarrierAlgsForNilpOrbsInZGrading} (\ref{CarrierAlgsForNilpOrbsInZGrading}), with the exception that the record entry \mbox{\texttt{\mdseries\slshape grad}} is a list with \mbox{\texttt{\mdseries\slshape m0}} entries, the \mbox{\texttt{\mdseries\slshape i}}-th entry containing the basis for the \mbox{\texttt{\mdseries\slshape i}}-th component of the grading. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gap> ca:=CarrierAlgsForNilpOrbsInZmGrading("G",2,2,"inner",1);|
  rec( 
   Hs := [ <Lie algebra of dimension 2 over SqrtField>, 
           <Lie algebra of dimension 2 over SqrtField>, 
           <Lie algebra of dimension 2 over SqrtField>, 
           <Lie algebra of dimension 2 over SqrtField> ], 
    L  :=  <Lie algebra of dimension 14 over SqrtField>, 
    L0 :=  <Lie algebra of dimension 6 over SqrtField>, 
  cars := [ 
           [rec( g0 := [ v.13+v.14 ], gn := [ [ v.11 ] ], gp := [ [ v.5 ] ] ), 
            rec( g0 := [ v.13, v.14 ], gn := [ [ v.2, v.10 ] ], 
                 gp := [ [ v.4, v.8 ] ] ), 
            rec( g0 := [ v.13+(3/2)*v.14 ], gn := [ [ v.10 ] ], 
                 gp := [ [ v.4 ] ] ), 
            rec( g0 := [ v.1, v.7, v.13, v.14 ], 
                 gn := [ [ v.8, v.9, v.10, v.11 ], [ v.12 ] ], 
                 gp := [ [ v.2, v.3, v.4, v.5 ], [ v.6 ] ] ), 
            rec( g0 := [ v.13, v.14 ], 
                 gn := [ [ v.2, v.9 ], [ v.7 ], [ v.10 ], [ v.12 ], [ v.11 ] ], 
                 gp := [ [ v.3, v.8 ], [ v.1 ], [ v.4 ], [ v.6 ], [ v.5 ] ] ) ], 
           [ [  ], [  ], [  ], [  ], [  ] ], [ [  ], [  ], [  ], [  ], [  ] ], 
           [ [  ], [  ], [  ], [  ], [  ] ] ], 
   grad := [ [ v.1, v.6, v.7, v.12, v.13, v.14 ], 
           [ v.2, v.3, v.4, v.5, v.8, v.9, v.10, v.11 ] ] )
  
\end{Verbatim}
 }

 }

 }

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

\bibliographystyle{alpha}
\bibliography{corelg}

\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}
