The Development of Magma

Calculation in mathematics is fundamental to its discovery, development, and application. In Applied Mathematics, Numerical Analysis, and Statistics this has always been self-evident. Algorithms and software to support computation in these areas were developed quite early and are very widely used. However, in the case of non-numerical (exact, symbolic) computation, in most areas of Pure Mathematics few effective algorithms were known until quite recently.

Commencing in 1970, Cannon together with some PhD students developed a substantial body of new algorithms for finite groups. In parallel, a small system (Cayley) was developed which comprised a library of group theory algorithms together with a simple user language. Cayley was a considerable success and was widely used internationally.

While there was growing interest in the 1970s and 1980s in using computers in some areas of Pure Mathematics, few effective algorithms were known. By 1990 some completely new algorithms had been found which greatly expanded what could be computed in their areas. This suggested that there was a rich body of algorithms yet to be discovered in most areas of Pure Mathematics in addition to the classical body of theorems and proofs. This perhaps is one of the most important discoveries made about pure mathematics in recent years.

Realising that the field of algebraic algorithms was potentially a very rich area which had been barely touched, in 1989 Cannon commenced a larger project which had as its aim the systematic development of mathematical algorithms broadly across algebra and related areas.

The algorithms we design are often very complex and their implementation in standard programming languages such as C or C++ is both difficult and very time-consuming. Consequently, Cannon undertook the design of a new programming language that would make such programming much easier. The data types for the language are based on fundamental algebraic concepts such as set, sequence, algebraic structure, category, and mapping.

Once a suitable language/system framework existed, the next step was the construction of a large library of mathematical algorithms. The bulk of the algorithm library has been constructed by more than 500 overseas mathematicians.

The first version of Magma was released at the end of 1992 and each year since then a major upgrade has been released. Our efforts in recent years have focused on developing algorithms for new areas or improving existing algorithms.

In 2020 work started on introducing parallelism into Magma. There are two forms of this; the first involves rewriting key serial algorithms to take advantage of parallelism and the second involves developing code that makes it particularly easy for users to parallelise certain types of computations.