\documentclass[12pt,a4paper]{amsart}
\title{How to Read and Use the Data Files}

\usepackage[margin=1in]{geometry}

\begin{document}
\maketitle

\section{Contents.}
Each folder contains 4 files:

\begin{itemize}
\item \texttt{hn.g}: to construct the coset table and test it on the
  defining relations of $H$.
\item \texttt{hncentre.g}: to compute the basis of the center, the
  Gram matrix and its determinant, and the dual basis as the inverse
  of the Gram matrix.
\item \texttt{hnchars.g}: to evaluate the irreducible characters of H
  on the dual basis and thus verify the basis of the center in terms
  of class polynomials.
\item \texttt{run.g}: to execute the above three files in that order
  and record the results in a log file.
\end{itemize}

\section{Computing in $H$.}

After loading the first file  \texttt{hn.g} into a GAP session,
one can compute with elements of $H$ expressed as vectors over $H'$
as follows.  The GAP code examples are for $H(G_4)$.

\begin{itemize}
\item \texttt{null}, \texttt{one}, \texttt{u}, \texttt{u1} are the
  elements $0$, $1$, $u$, and $u^{-1}$ of $H'$, where $u$ is the
  reflection generating the parabolic subgroup $W'$, identified with
  the corresponding element of $H$.
\begin{verbatim}
    gap> u1;
    -bc^-1+(-ac^-1)*s+(c^-1)*s^2
\end{verbatim}
\item \texttt{basicVec(i, c)} constructs the element $c x_i \in H$,
  where $c \in H'$.
\begin{verbatim}
    gap> x3:= basicVec(3, one);
    [ 0, 0, 1, 0, 0, 0, 0, 0 ]
\end{verbatim}
\item Such vectors can be added and multiplied with scalars:
\begin{verbatim}
    gap> y:= x3 + basicVec(2, u);
    [ 0, +(1)*s, 1, 0, 0, 0, 0, 0 ]
    gap> u1 * y;
    [ 0, 1, -bc^-1+(-ac^-1)*s+(c^-1)*s^2, 0, 0, 0, 0, 0 ]
\end{verbatim}
\item \texttt{vecUnderWord(vec, word)} computes the image of a vector
  \texttt{vec} under a word \texttt{word} in the generators of $H$ and
  their inverses, represented as a list with entries $i$ for the
  generator $\sigma_i$ and $-i$ for its inverse.
\begin{verbatim}
    gap> x5:= vecUnderWord(x3, [1,2,1]);
    [ 0, 0, 0, 0, 1, 0, 0, 0 ]
    gap> vecUnderWord(x5, -[1,2,1]);
    [ 0, 0, 1, 0, 0, 0, 0, 0 ]
\end{verbatim}
\item In particular, the representation of a word $w$ can be computed as
  the image of $x_1$ under $w$:
\begin{verbatim}
    gap> x1:= basicVec(1, one);
    [ 1, 0, 0, 0, 0, 0, 0, 0 ]
    gap> pi:= vecUnderWord(x1, [1,2,1,2,1,2,1,2,1,2,1,2]);
    [ c^4+(bc^3)*s+(ac^3)*s^2, bc^3+(b^2c^2)*s+(abc^2)*s^2,
      +(bc^2)*s+(b^2c)*s^2, bc^2+(b^2c)*s+(abc)*s^2,
      +(-a^2c)*s+(b^2)*s^2, +(ac)*s, +(-a^2)*s+(a)*s^2, +(a)*s ]
\end{verbatim}
\item $\tau(h)$, the coefficient at $b_1$ can be found as
  $h$\texttt{[1].list[1]}:
\begin{verbatim}
    gap> pi[1].list[1];
    c^4
\end{verbatim}
\end{itemize}

\section{The Center and the Dual Basis.}
\label{sec:center-dual-basis}

Then, after loading the second file \texttt{hncentre.g} into GAP, a
basis for $Z(H)$, the gram matrix $\tau(b_i b_j)$ and the dual basis
$\{b_i^{\vee}\}$ are available as follows.  Note that it can take a
very long time to compute the Gram matrix.
\begin{itemize}
\item \texttt{coeffsVec(vec)} converts a vector \texttt{vec} over $H'$ into a
  vector over $R$.
\begin{verbatim}
    gap> x8:= basicVec(8, one);
    [ 0, 0, 0, 0, 0, 0, 0, 1 ]
    gap> b29:= coeffsVec(x8);
    [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 1, 0, 0 ]
\end{verbatim}
\item \texttt{vecCoeffs(coeffs)} converts a vector \texttt{coeffs} over $R$
  into a vector over $H'$.
\begin{verbatim}
    gap> vecCoeffs(b29);
    [ 0, 0, 0, 0, 0, 0, 0, 1 ]
\end{verbatim}
\item The list \texttt{nul2} contains the basis of $Z(H)$ as vectors over $R$.
\begin{verbatim}
    gap> nul2[1];
    [ 0, 0, ac^3, 0, ac^3, abc^2+c^3, abc^2+c^3,
      bc^2+ab^2c-a^2c^2, ac^2, 0, ac^2, abc+c^2, 0,
      2bc+ab^2-a^2c, 0, 0, 0, c, c, b, 0, 0, 0, 1 ]
    gap> vecCoeffs(nul2[1]);
    [ +(ac^3)*s^2, +(ac^3)*s+(abc^2+c^3)*s^2,
      abc^2+c^3+(bc^2+ab^2c-a^2c^2)*s+(ac^2)*s^2,
      +(ac^2)*s+(abc+c^2)*s^2, +(2bc+ab^2-a^2c)*s, +(c)*s^2,
      c+(b)*s, +(1)*s^2 ]
\end{verbatim}
\item \texttt{gram} is the Gram matrix $\tau(b_i b_j)$:
\begin{verbatim}
    gap> gram{[1..3]}{[1..3]};
    [ [ 1, 0, 0 ], [ 0, 0, c ], [ 0, c, ac ] ]
\end{verbatim}
\item The list \texttt{dual} contains the dual basis as vectors over $R$:
\begin{verbatim}
    gap> dual[2];
    [ 0, -ac^-1, c^-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0, 0, 0, 0, 0, 0 ]
    gap> vecCoeffs(dual[2]);
    [ +(-ac^-1)*s+(c^-1)*s^2, 0, 0, 0, 0, 0, 0, 0 ]
\end{verbatim}
\end{itemize}

\end{document}
