# Systems related to Group Theory

# GUAVA: A Computer Algebra Package for Coding Theory

**Juriaan Simonis**

**November 8, 1994 **

## Contents

GUAVA is a share library package that implements coding theory algorithms.
It has been developed by Reinald Baart, Jasper Cramwinckel and Erik
Roijackers at Delft University of Technology and RWTH Aachen. Almost all
of GUAVA has been written in the GAP language. GUAVA is distributed
together with GAP.
GAP (Groups, Algorithms, and Programming) is a powerful computer algebra
system designed for doing computations with algebraic structures like
groups, finite fields, vector spaces etc.. It has been created at the
Lehrstuhl für Mathematik, RWTH Aachen. GAP is freely obtainable by
anonymous ftp from

samson.math.rwth-aachen.de (internet number
137.226.152.6). If you get GAP, the authors would like to be notified, e.g.
by means of a short e-mail to

gap@samson.math.rwth-aachen.de.
An important data type in GAP is a ''record'', and the basic object in GUAVA
is the ''code record''. A code record contains several components that give
information about the code. Some of these components, like **name**,
**basefield** and **size**, are mandatory. Other components, like **minimumDistance**, **weightDistribution**, **coveringRadius** and **isSelfDualCode**, are created in the course of a session and contain
knowledge about the code. The use of these code records has proven to be
very versatile.
The functions within GUAVA can be divided into four categories:

- Construction of codes. GUAVA can construct non-linear, linear and
cyclic codes over an arbitrary finite field. Examples are
**HadamardCode**, **ReedMullerCode**, **BestKnownLinearCode**, **QRCode** and
**GoppaCode**.

- Manipulation of codes. These functions allow the user to transform
one code into another or to construct a new code from two codes. Examples
are
**PuncturedCode**, **DualCode**, **DirectProductCode** and **UUVCode**.

- Computation of information about codes. This information is stored in
the code record. Examples are
**MinimumDistance**, **OuterDistribution**, **IsSelfDualCode** and **AutomorphismGroup** .

- Generation of bounds on linear codes. The table by Brouwer and
Verhoeff is incorporated into GUAVA.

The most important parameter of a code is its minimum distance. To increase
speed in the binary case, the code vectors are converted into Boolean lists (**Blists**). Then the distance of two vectors can be calculated
by means
of the (very fast) XOR instruction. In the linear case, a considerable
improvement of the minimum distance canculation is obtained by taking
advantage of the weight ordering of the information vectors. All this
results in a calculation speed that is usually vastly superior to the speed
of the commercial package MAGMA.
The following features are planned to be incorporated in GUAVA in the near
future:

- Automorphism group computations. Presently, GUAVA computes the
automorphism group of a code by means of external C programs written by J.S.
Leon. These programs only work for binary, ternary and quaternary codes. We
aim to implement the automorfism group calculations in GAP and to remove the
restriction on the alphabet.

- Codes over rings. GUAVA can only handle codes over finite fields. The
growing of interest of the coding community in Z_4-codes suggests an extension of the code alphabet
to rings.

Special Purpose Systems

webmaster@can.nl

######
Last updated: March 14, 1995