# Preface

The computer algebra system Magma is designed to provide a software environment
for computing with the structures which arise in areas such as algebra, number
theory, algebraic geometry and (algebraic) combinatorics. Magma enables users
to define and to compute with structures such as groups, rings, fields, modules,
algebras, schemes, curves, graphs, designs, codes and many others. The main
features of Magma include:

**Algebraic Design Philosophy**
The design principles underpinning both the user language and system
architecture are based on ideas from universal algebra and category theory.
The language attempts to approximate as closely as possible the usual
mathematical modes of thought and notation. In particular, the principal
constructs in the user language are set, (algebraic) structure and morphism.

**Explicit Typing**
The user is required to explicitly define most of the algebraic structures in
which calculations are to take place. Each object arising in the computation is
then defined in terms of these structures.

**Integration**
The facilities for each area are designed in a similar manner using generic
constructors wherever possible. The uniform design makes it a simple matter to
program calculations that span different classes of mathematical structures or
which involve the interaction of structures.

**Relationships**
Magma provides a mechanism that manages “relationships” between complex
bodies of information. For example, when substructures and quotient structures
are created by the system, the natural homomorphisms that arise are always
stored. These are then used to support automatic coercion between parent and
child structures.

**Mathematical Databases**
Magma has access to a large number of databases containing information that
may be used in searches for interesting examples or which form an integral
part of certain algorithms. Examples of current databases include
factorizations of integers of the form pn ∓ 1, p a prime; modular equations;
strongly regular graphs; maximal subgroups of simple groups; integral
lattices; K3 surfaces; best known linear codes and many others.

**Performance**
The intention is that Magma provide the best possible performance both in
terms of the algorithms used and their implementation. The design philosophy
permits the kernel implementor to choose optimal data structures at the
machine level. Most of the major algorithms currently installed in the Magma
kernel are state-of-the-art and give performance similar to, or better than,
specialized programs.

The theoretical basis for the design of Magma is founded on the concepts and
methodology of modern algebra. The central notion is that of an algebraic
structure. Every object created during the course of a computation is
associated with a unique parent algebraic structure. The type of an object is
then simply its parent structure.

Algebraic structures are first classified by variety: a variety being a class
of structures having the same set of defining operators and satisfying a common
set of axioms. Thus, the collection of all rings forms a variety. Within a
variety, structures are partitioned into categories. Informally, a family of
algebraic structures forms a category if its members all share a common
representation. All varieties possess an abstract category of structures (the
finitely presented structures). However, categories based on a concrete
representation are as least as important as the abstract category in most
varieties. For example, within the variety of algebras, the family of finitely
presented algebras constitutes an abstract category, while the family of matrix
algebras constitutes a concrete category.

Magma comprises a novel user programming language based on the principles
outlined above together with program code and databases designed to support
computational research in those areas of mathematics which are algebraic in
nature. The major areas represented in Magma include group theory, ring theory,
commutative algebra, arithmetic fields and their completions, module theory and
lattice theory, finite dimensional algebras, Lie theory, representation theory,
homological algebra, general schemes and curve schemes, modular forms and
modular curves, L-functions, finite incidence structures, linear codes and much
else.

Although the Handbook has been compiled with care, it is possible that the
semantics of some facilities have not been described adequately. We regret any
inconvenience that this may cause, and we would be most grateful for any
comments and suggestions for improvement. We would like to thank users for
numerous helpful suggestions for improvement and for pointing out misprints in
previous versions.

The development of Magma has only been possible through the dedication and
enthusiasm of a group of very talented mathematicians and computer scientists.
Since 1990, the principal members of the Magma group have included: Eran Assaf,
Geoff Bailey, Mark Bofinger, Wieb Bosma, Gavin Brown, John Brownie, Herbert
Brückner, Nils Bruin, John Cannon, Steve Collins, Scott Contini, Edgar Costa,
Bruce Cox, Brendan Creutz, Steve Donnelly, Willem de Graaf, Andreas-Stephan
Elsenhans, Claus Fieker, Damien Fisher, Alexandra Flynn, Volker Gebhardt,
Katharina Geißler, Sergei Haller, Michael Harrison, Emanuel Herrmann, Florian
Heß, David Howden, Al Kasprzyk, David Kohel, Madeleine Kyng, Paulette Lieby,
Graham Matthews, Scott Murray, Anne O`Kane, Catherine Playoust, Richard
Rannard, Colva Roney-Dougal, Dan Roozemond, Andrew Solomon, Bernd Souvignier,
Ben Smith, Allan Steel, Damien Stehlé, Nicole Sutherland, Don Taylor, Bill
Unger, John Voight, Alexa van der Waall, Mark Watkins and Greg White.

Sydney, September 2025
