Systems related to Group Theory
GUAVA: A Computer Algebra Package for Coding Theory
November 8, 1994
What is GUAVA?
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
188.8.131.52). If you get GAP, the authors would like to be notified, e.g.
by means of a short e-mail to
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
The functions within GUAVA can be divided into four categories:
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
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.
- Construction of codes. GUAVA can construct non-linear, linear and
cyclic codes over an arbitrary finite field. Examples are HadamardCode, ReedMullerCode, BestKnownLinearCode, QRCode and
- 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 following features are planned to be incorporated in GUAVA in the near
- 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
Special Purpose Systems
Last updated: March 14, 1995