Magma is a Computer Algebra system designed to solve problems in algebra, number theory, geometry and combinatorics that may involve sophisticated mathematics and which are computationally hard. Magma provides a mathematically rigorous environment which emphasizes structural computation. A key feature is the ability to construct canonical representations of structures, thereby making possible such operations as membership testing, the determination of structural properties and isomorphism testing. The kernel of Magma contains implementations of many of the important concrete classes of structure in five fundamental branches of algebra, namely group theory, ring theory, field theory, module theory and the theory of algebras. In addition, certain families of structures from algebraic geometry and finite incidence geometry are included.
The main features of the Magma system 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.
Universality: In-depth coverage of all the major branches of algebra, number theory, algebraic geometry and finite incidence geometry.
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.
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 purpose of this document is to provide an overview of the structures and operations that are implemented in Magma. A collection of illustrative examples may be found at the Magma home page: http://magma.maths.usyd.edu.au/ – also available from this web site are a number of short papers written by experts describing applications of Magma in various branches of mathematics.
Computation in Magma always takes place in one or more explicitly defined structures. A family of structures whose members satisfy a common set of axioms and which share a common representation is termed a category. In the first of the following sections we summarise the facilities of the Magma language and environment. Following this we summarise many of the kernel categories grouped together under the broad headings listed below.
The Magma Language and System
Groups
Semigroups and Monoids
Rings and their Fields
Commutative Rings
Linear Algebra and Module Theory
Lattices and Quadratic Forms
Algebras
Representation Theory
Homological Algebra
Lie Theory
Algebraic Geometry
Finite Incidence Geometry
Differential Galois Theory
Error-correcting Codes
Cryptography
Mathematical Databases
All timings given below are for a Sun 400Mhz UltraSPARC 2 unless otherwise indicated.