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