Meat-Axe is a set of programs for working with matrices over finite fields. Its primary purpose is the calculation of modular character tables, although it can be used for other purposes, such as investigating subgroup structure, module structure etc. Indeed, there is a set of programs to compute automatically the submodule lattice of a given module.
There is one common module (ZZZ) which does all the finite field calculations. ZZZ works with single elements and rows of elements, does the input and output, handles the memory allocation and a few miscellaneous simple operations besides. This makes it possible to code the most time-consuming parts in assembler and still have the algorithms presented in C. Another advantage is, that all the system dependent stuff (file i/o, for example) is concentrated in one place.
Each of the programs is self-contained, except that it calls the ZZZ subroutines, reading its input from files, and writing its output to files. To make the Meat-Axe usable, therefore, it is necessary to write operating system commands to run the various programs. This has been done for the GAP system. Meat-Axe can be used inside GAP to speed up computations that are possible also using ordinary GAP functions. GAP is used a shell and Meat-Axe for the actual work.
The primitive objects in Meat-Axe are of two types: matrices and permutations. Permutation objects can be handled, but not as smoothly as you might expect. However, the matrix part is more or less complete. For example, it is hoped that programs such as split (ZSP) and multiply (ZMU) will be able to work with mixed types, but at present ZSP is restricted to matrices only, and ZMU can multiply matrix * permutation, but not vice versa.
Most of the programs (including their documentation) in this package are based on the FORTRAN code written by Richard A. Parker. The translation from FORTRAN to C was done in 1989 and since then both versions have developed independently. The C programs were written by Michael Ringe with many contributions by Klaus Lux and Juergen Mueller. The original version of the ZZZ module was written by Klaus Lux, and the maketab program was developed by Marco van Meegen (RWTH Aachen). The user interface of the C programs has been changed significantly (e.g., command line arguments were introduced) and some new programs have been added which are not available in the FORTRAN Meat-Axe. However, the data formats are still compatible, so it is possible to share even binary data files between FORTRAN and C programs.
The objective of this suite of programs is research, so that where simplicity and power are in contention, power is selected. Nevertheless, the developers have tried to make the programs as straightforward and user-friendly as possible. Moreover, the source code is available, so the user can change any parts he is annoyed with. There are dangers in changing the source, though, in that future versions may then need to have the same changes made to them. It is hoped that the file formats and ZZZ interface will remain the same, so that the user is welcome to write his own programs to do the special parts he needs.
MeatAxe has been encorporated into GAP.