%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%A  intro.tex                  GUAVA documentation              Reinald Baart
%A                                                       & Jasper Cramwinckel
%A                                                          & Erik Roijackers
%
%H  $Id: intro.tex,v 1.5 2003/02/27 22:45:16 gap Exp $
%
%Y  Copyright (C)  1995,  Vakgroep Algemene Wiskunde,  T.U. Delft,  Nederland
%
\Chapter{The GAP error-correcting codes package GUAVA}

\index{guava}
This is the manual of the {\GAP} package ``{\GUAVA}'' 
that provides implementations of some routines in the theory of
error-correcting codes. Except for the automorphism group and isomorphism
testing functions, which make use of J.S.~Leon's partition 
backtrack programs, {\GUAVA} is written in the {\GAP} 
language. Several algorithms that need the speed were integrated 
in the {\GAP} kernel. Please send your bug reports to the 
email address: \Mailto{support@gap-system.org}.

{\GUAVA} is  primarily  designed for the construction and analysis  of
codes.  The functions can be divided into three subcategories:

\beginitems

*Construction of codes*:&
{\GUAVA} can construct unrestricted, linear and cyclic
codes. Information about the code, such as operations applicable 
to the code, is stored in a record-like
data structure called a GAP object.

*Manipulations of codes*:&
Manipulation transforms  one code into  another, or constructs a new code
from two  codes. The new code can  profit from the  data in the record of
the old code(s), so in these cases calculation time decreases.

*Computations of information about codes*:&
{\GUAVA} can calculate important parameters
of codes quickly. The results are stored in the codes'
object components.

\enditems

Good general references for error-correcting codes and the 
technical terms in this manual are MacWilliams and Sloane \cite{MS83}, 
Huffman and Pless \cite{HP03}. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Acknowledgements}

{\GUAVA} was originally written by Jasper Cramwinckel, 
Erik Roijackers, and Reinald Baart as a final project during 
their study of Mathematics at the Delft
University of Technology, Department of Pure Mathematics,
under the direction of Professor Juriaan Simonis. 
This work was continued in Aachen, at Lehrstuhl D f\"ur Mathematik.

In version~1.3, new functions were added by Eric Minkes, also from Delft
University of Technology.

JC, ER and RB would like to  thank the {\GAP} people at the RWTH Aachen for
their support, A.E.~Brouwer for his advice and J.~Simonis for his
supervision.

The {\GAP}~4 version of {\GUAVA} was created by Lea Ruscio and is maintained
by David Joyner, who has added several new functions. 
For further details, see the CHANGES file in the
{\GUAVA} directory, also available at 
\URL{http://cadigweb.ew.usna.edu/~wdj/gap/GUAVA/CHANGES.guava}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Installing GUAVA}

To install {\GUAVA} (as a {\GAP}~4  Package) unpack the archive  file
in a directory in the `pkg' hierarchy of your version of  {\GAP}~4. 
After unpacking {\GUAVA} the {\GAP}-only part of {\GUAVA} is installed.
The parts of {\GUAVA} depending on J.~Leon's backtrack  programs  package
(for  computing  automorphism  groups and related functions)  
are  only  available  in  a linux or unix
environment, where you should proceed as follows:

Go to the newly created `guava' directory and call  `./configure  <path>'
where <path> is the path to the {\GAP} home directory. So for example, if
you install the package in the main `pkg' directory call

\begintt
./configure ../..
\endtt

This will fetch the architecture type for which {\GAP} has been  compiled
last and create a `Makefile'. Now call

\begintt
make
\endtt

to compile the binary and to install it in the appropriate place.

This completes the installation of {\GUAVA} for a single architecture. If
you use this installation of {\GUAVA} on different hardware platforms you
will have to compile the binary for each  platform  separately.  This  is
done by calling `configure' and `make' for the package  anew  immediately
after compiling {\GAP} itself for the respective  architecture. 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Loading GUAVA}

After starting up {\GAP}, the  {\GUAVA} package needs  to be loaded. Load
{\GUAVA} by typing at the {\GAP} prompt:

\beginexample
gap> LoadPackage("guava");
\endexample

If {\GUAVA} isn't  already  in memory,  it is loaded and author information
is displayed:

\begintt
-----------------------------------------------------------------------------
Loading  GUAVA 1.99 (GUAVA Coding Theory Package)
by Jasper Cramwinckel,
   Erik Roijackers,
   Reinald Baart,
   Eric Minkes,
   Lea Ruscio, and
   David Joyner (http://cadigweb.ew.usna.edu/~wdj/homepage.html).
-----------------------------------------------------------------------------
\endtt

If you  are a frequent user of  {\GUAVA}, you might consider putting this
line in your `.gaprc' file.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%E
