The Magma Development Team

Current Members

A list of current members can be found on the Computational Algebra Group members page.

Former Members

Wieb Bosma (1989–1996): Responsible for the initial development of number theory in Magma and the coordination of work on commutative rings. Also has continuing involvement with the design of Magma.

Gavin Brown (1998–2001): Developed code in basic algebraic geometry, applications of Gröbner bases, number field and function field kernel operations; applications of Hilbert series to lists of varieties.

Herbert Brückner (1998–1999): Developed code for constructing the ordinary irreducible representations of a finite soluble group and the maximal finite soluble quotient of a finitely presented group.

Nils Bruin (2002–2003): Contributions include Selmer groups of elliptic curves and hyperelliptic Jacobians over arbitrary number fields, local solubility testing for arbitrary projective varieties and curves, Chabauty-type computations on Weil-restrictions of elliptic curves and some algorithms for, and partial design of, the differential rings module.

Bruce Cox (1990–1998): A member of the team that worked on the design of the Magma language. Responsible for implementing much of the first generation Magma machinery for permutation and matrix groups.

Brendan Creutz (2011–2013): Primary research interests are in arithmetic geometry. Main contributions focus on descent obstructions to the existence of rational points on curves and torsors under their Jacobians.

Steve Donnelly (2005–2017): Research interests are in arithmetic geometry, particularly elliptic curves and modular forms. Contributions include: many routines for elliptic curves over and number fields, including descent methods, Cassels–Tate pairings and integral points; Hilbert modular forms and fast algorithms for definite quaternion algebras; also developed a new implementation of the general class group algorithm. Currently continuing to work on class groups, elliptic curves and surfaces.

Andreas-Stephan Elsenhans (2012–2015): Main research interests are in the areas of arithmetic and algebraic geometry, particularly cubic and K3 surfaces. Main contributions focus on cubic surfaces from the arithmetic and algebraic points of view.

Claus Fieker (2000–2011): Formerly a member of the KANT project. Research interests are in constructive algebraic number theory and, especially, relative extensions and computational class field theory. Main contributions are the development of explicit algorithmic class field theory in the case of both number and function fields and the computation of Galois groups.

Damien Fisher (2002–2006): Implemented a package for p-adic rings and their extensions and undertook a number of extensions to the Magma language.

Alexandra Flynn (1995–1998): Incorporated various Pari modules into Magma, and developed much of the machinery for designs and finite planes.

Volker Gebhardt (1999–2003): Author of the Magma categories for infinite polycyclic groups and for braid groups. Other contributions include machinery for general finitely presented groups.

Michael Harrison (2003–2015, 2018–2020): Implemented p-adic methods for counting points on hyperelliptic curves and their Jacobians over finite fields. Added a variety of general algebraic curve functionality including gonal maps and modular form functionality including the small modular curve database. Developed machinery for general surfaces, for the cohomology of projective varieties and worked on further surface machinery and a semi-stable reduction algorithm for curves.

Katharina Geißler (1999–2001): Developed the code for computing Galois groups of number fields and function fields.

Willem de Graaf (2004–2005): Contributed functions for computing with finite-dimensional Lie algebras, finitely-presented Lie algebras, universal enveloping algebras and quantum groups.

Sergei Haller (2004, 2006–2007): Developed code for many aspects of Lie Theory. Of particular note was his work on the construction of twisted groups of Lie type and the determination of conjugacy classes of elements in the classical groups (jointly with Scott Murray).

Emanuel Herrmann (1999): Contributed code for finding S-integral points on genus 1 curves (not elliptic curves).

Florian Heß (1999–2001): Developed a substantial part of the algebraic function field module in Magma including algorithms for the computation of Riemann–Roch spaces and class groups. His most recent contribution (2005) is a package for computing all isomorphisms between a pair of function fields.

David Howden (2012–2014): Worked on improved methods for constructing automorphism groups and testing isomorphism in the case of soluble groups.

Alexander Kasprzyk (2009–2010): Developed the toric geometry and polyhedra packages (along with Gavin Brown and Jarosław Buczyński).

David Kohel (1999–2002): Contributions include a model for schemes (with Gavin Brown); algorithms for curves of low genus; implementation of elliptic curves, binary quadratic forms, quaternion algebras, Brandt modules, spinor genera and genera of lattices, modular curves, conics (with Paulette Lieby), modules of supersingular points (with William Stein), Witt rings.

Paulette Lieby (1999–2003): Contributed to the development of algorithms for algebraic geometry, abelian groups and incidence structures. Developed data structures for multigraphs and implemented algorithms for planarity, triconnectivity and network flows.

Graham Matthews (1989–1993): Involved in the design of the Magma semantics, user interface, and internal organisation.

Scott Murray (2001–2002, 2004–2010): Implemented algorithms for element operations in split groups of Lie type, representations of split groups of Lie type, split Cartan subalgebras of modular Lie algebras, and Lang's Theorem in finite reductive groups. More recently implemented solutions to conjugacy problems in the classical groups (with Sergei Haller and Don Taylor).

Catherine Playoust (1990–1996): Wrote extensive documentation and implemented an early help system. Contributed to system-wide consistency of design and functionality. Also pioneered the use of Magma for teaching undergraduates.

Richard Rannard (1997–1998): Contributed to the code for elliptic curves over finite fields including a first version of the SEA algorithm.

Colva Roney-Dougal (2001–2003): Completed the classification of primitive permutation groups up to degree 999 (with Bill Unger). Also undertook a constructive classification of the maximal subgroups of the classical simple groups.

Dan Roozemond (2010–2012): Research focused on the computational aspects of Lie theory. Ported algorithms for the weight multisets from LiE to Magma and developed a number of algorithms for reductive Lie algebras, particularly over fields of small characteristic.

Michael Slattery (1987–2006): Contributed a large part of the machinery for finite soluble groups including subgroup lattice and automorphism group.

Ben Smith (2000–2003): Contributed to an implementation of the Number Field Sieve and a package for integer linear programming.

Bernd Souvignier (1996–1997): Contributed to the development of algorithms and code for lattices, local fields, finite dimensional algebras and permutation groups.

Damien Stehlé (2006, 2008–2010): Implemented the proveably correct floating-point LLL algorithm together with a number of fast non-rigorous variants. Also developed a fast method for enumerating short vectors.

John Voight (2005–2006): Implemented algorithms for quaternion algebras over number fields, associative orders (with Nicole Sutherland), and Shimura curves.

Alexa van der Waall (2003): Implemented the module for differential Galois theory.

Paul van Wamelen (2002–2003): Implemented analytic Jacobians of hyperelliptic curves in Magma.

Greg White (2000–2006): Contributions include fast minimum weight determination, linear codes over ℤ/mℤ, additive codes, LDPC codes, quantum error-correcting codes, and a database of best known linear codes (with John Cannon and Markus Grassl). He also implemented a module for Young tableau.


External Contributors

The Magma system has benefited enormously from contributions made by many members of the mathematical community. We list below those persons and research groups who have given the project substantial assistance either by allowing us to adapt their software for inclusion within Magma or through general advice and criticism. We wish to express our gratitude both to the people listed here and to all those others who participated in some aspect of the Magma development.

If you feel that you have been attributed incorrectly, or have been accidentally omitted from the list, please contact us.

Algebraic Geometry

A major package for algebraic surfaces providing formal desingularization, the calculation of adjoints, and rational parameterization was developed by Tobias Beck (RICAM, Linz). He also implemented a package for computing with algebraic power series. This work was done while he was a student of Josef Schicho.

A package for working with divisors on varieties has been developed by Martin Bright (American University of Beirut), Gavin Brown (Loughborough), Mike Harrison (Magma) and Andrew Wilson (Edinburgh). The functionality includes decomposition into irreducible components, Riemann–Roch spaces, canonical divisors and (surface) intersection numbers.

The machinery for working with Hilbert series of polarised varieties and the associated databases of K3 surfaces and Fano 3-folds has been constructed by Gavin Brown (Warwick).

A package for toric geometry together with a package for polytopes and polyhedra were developed by Jarosław Buczyński (Texas A&M), Gavin Brown (Loughborough) and Alexander Kasprzyk (Magma and Imperial College).

Functions for computing Shioda invariants for genus 3 hyperelliptic curves, reconstructing models for a curve from such invariants and computing geometric automorphism groups have been contributed by Reynald Lercier (DGA, Rennes) and Christophe Ritzenthaler (Luminy).

Christian Neurohr (Universität Oldenburg) has contributed his package for computing with Riemann surfaces.

Jana Pilnikova (Univerzita Komenskeho, Bratislava) (while a student of Josef Schicho in Linz) contributed code for the parameterization of degree 8 and 9 Del Pezzo surfaces, jointly written with Willem de Graaf (Trento).

Miles Reid (Warwick) has been heavily involved in the design and development of a database of K3 surfaces within Magma.

Carlos Rito (Universidade de Tras-os-Montes e Alto Douro, Portugal) has contributed code for computing with linear systems (2023). This includes the linear system of an affine plane curve which has non-ordinary singularities.

Josef Schicho (RICAM, Linz) has played a major role in the design and implementation of the algebraic surfaces package. In particular, Josef has also implemented several of the modules for rational surface parameterization.

A function that finds the intersection multiplicities for all intersection points of two plane curves was adapted into Magma from code provided by Chris Smyth (Edinburgh).

Andrew Wilson (Edinburgh) has contributed a package to compute the log canonical threshold for singular points on a curve.

Arithmetic Geometry Over Characteristic 0 Fields

The method of Chabauty for finding points on elliptic curves and higher genus curves was originally implemented by Nils Bruin in 2003 while a member of the Magma group. In 2009 Nils improved it considerably by combining it with Mordell–Weil sieving.

Two-cover-descent has been implemented by Nils Bruin (Simon Fraser) for hyperelliptic curves. Given the Jacobian of a genus 2 curve, Nils has also provided code to compute all (2,2)-isogenous abelian surfaces.

The Magma facility for determining the Mordell–Weil group of an elliptic curve over the rational field is based on the mwrank programs of John Cremona (Nottingham).

John Cremona (Nottingham) has contributed his code implementing Tate's algorithm for computing local minimal models for elliptic curves defined over number fields.

The widely-used database of all elliptic curves over having conductor at most 500,000 constructed by John Cremona (Nottingham) is also included.

John Cremona (Warwick) has contributed his code implementing the Cremona–Pricket–Siksek bounds on the difference between naive and canonical heights.

Tim Dokchitser (Durham) wrote code for computing root numbers of elliptic curves over number fields.

Andreas-Stephan Elsenhans (Bayreuth) has provided routines for performing minimisation and reduction for Del Pezzo surfaces of degrees 3 and 4.

Code for determining isomorphism of cubic surfaces has been contributed by Andreas-Stephan Elsenhans (Bayreuth).

A collection of tools that calculate information about the Picard rank of a surface has been developed by Andreas-Stephan Elsenhans (Bayreuth).

Code for calculating the invariants, covariants and contravariants of a cubic surface has been developed by Andreas-Stephan Elsenhans (Bayreuth).

An algorithm implemented by Andreas-Stephan Elsenhans (Paderborn) computes the zeta-function of certain types of K3 surface.

A package for performing minimisation and reduction of plane curves over the rationals has been developed by Andreas-Stephan Elsenhans (Julius-Maximilians-Universität, Würzburg) and Michael Stoll (Bayreuth).

A package contributed by Tom Fisher (Cambridge) deals with curves of genus 1 given by models of a special kind (genus one normal curves) having degree 2, 3, 4 and 5.

The implementation of 3-descent on elliptic curves was mainly written by Tom Fisher (Cambridge). An earlier version as well as part of the current version were developed by Michael Stoll (Bremen).

The algorithms and implementations for 5-, 6- and 12-descent are due to Tom Fisher (Cambridge). The new algorithm/implementation of 8-descent is likewise by Tom Fisher; this partly incorporates and partly replaces the earlier one by Sebastian Stamminger (Bremen).

An algorithm for computing a rank bound for a curve over with a 2-isogeny, by performing several higher descent steps, has been contributed by Tom Fisher (Cambridge).

Martine Girard (Sydney) has contributed her fast code for determining the heights of a point on an elliptic curve defined over a number field or a function field.

David Kohel (Singapore–NUS, Magma) provided implementations of division polynomials and isogeny structures for elliptic curves.

Full and partial descents on cyclic covers of the projective line were implemented by Michael Mourao (Warwick).

A package for computing canonical heights of points on hyperelliptic curves has has been contributed by Jan Steffen Müller (Bayreuth).

David Roberts (Nottingham) contributed descent machinery for elliptic curves over function fields.

David Roberts and John Cremona (Nottingham) implemented the Cremona–van Hoeij algorithm for parametrization of conics over rational function fields.

Jasper Scholten (Leuven) has developed much of the code for computing with elliptic curves over function fields.

A database of 136,924,520 elliptic curves with conductors up to 108 has been provided by William Stein (Harvard) and Mark Watkins (Penn State).

Much of the initial development of the package for computing with hyperelliptic curves is due to Michael Stoll (Bayreuth). He also contributed many of the high level routines involving curves over the rationals and their Jacobians, such as Chabauty's method.

In 2019 Michael Stoll (Bayreuth) contributed a major upgrade to the package for curves of genus 2. Of particular note is machinery that tries to compute the Mordell–Weil group of the Jacobian of a curve of genus 2 over the rational field.

Tom Womack (Nottingham) contributed code for performing four-descent, from which the current implementation was adapted.

Arithmetic Geometry Over Finite Fields

Various point-counting algorithms for hyperelliptic curves have been implemented by Pierrick Gaudry (École Polytechnique, Paris). These include an implementation of the Schoof algorithm for genus 2 curves.

An implementation of GHS Weil descent for ordinary elliptic curves in characteristic 2 has been provided by Florian Heß (TU Berlin).

A Magma package for calculating Igusa and other invariants for genus 2 hyperelliptic curves functions was written by Everett Howe (CCR, San Diego) and is based on gp routines developed by Fernando Rodriguez-Villegas (Texas) as part of the Computational Number Theory project funded by a TARP grant.

Hendrik Hubrechts (Leuven) has contributed his package for fast point-counting on elliptic and hyperelliptic curves over large finite fields, based on the deformation method pioneered by Alan Lauder.

Reynard Lercier (Rennes) provided much advice and assistance to the Magma group concerning the implementation of the SEA point counting algorithm for elliptic curves.

Reynard Lercier (Rennes) and Christophe Ritzenthaler provided extensions to the machinery for genus 2 curves defined over finite fields. These include the reconstruction of a curve from invariants which applies to every characteristic p (previously p > 5), the geometric automorphism group and the calculation of all twists (not just quadratic).

Moritz Minzlaff (TU Berlin) has contributed code for computing zeta functions of superelliptic curves of the form ya = h(x).

Class fields over local fields and the multiplicative structure of local fields are computed using new algorithms and implementations due to Sebastian Pauli (TU Berlin).

Jan Tuitman (Leuven) has contributed code for computing zeta functions of general curves.

Kedlaya's algorithm for point counting on elliptic curves defined over finite fields of characteristic 2 was implemented by Frederick Vercauteren (Leuven).

Efficient Magma implementations of the Tate, Eta and Ate pairings were undertaken by Frederik Vercauteren (Leuven).

Associative and Non-associative Algebras

See also the subsection Representation Theory.

Fast algorithms for computing the Jacobson radical and unit group of a matrix algebra over a finite field were designed and implemented by Peter Brooksbank (Bucknell) and Eamonn O'Brien (Auckland).

A package for computing with algebras equipped with an involution (*-algebras) has been contributed by Peter Brooksbank (Bucknell) and James Wilson (Ohio State).

An algorithm designed and implemented by Jon Carlson and Graham Matthews (Athens, Ga.) provides an efficient means for constructing presentations for matrix algebras.

For matrix algebras defined over a finite field, Jon Carlson (Athens, Ga.) designed and implemented algorithms for the Jacobson radical and unit group which are faster than the Brooksbank–O'Brien algorithms for larger examples.

Markus Kirschmer (Aachen) has written a number of optimized routines for definite quaternion algebras (over number fields).

Markus Kirschmer has also contributed a package for quaternion algebras defined over the function fields Fq[t], for q odd. The package includes calculation of the normaliser of an order and an efficient algorithm for computing the two-sided ideal classes of an order in a definite quaternion algebra (over or Fq[t]).

Quaternion algebras over the rational field were originally implemented by David Kohel (Singapore–NUS, Magma).

The vector enumeration program of Steve Linton (St. Andrews) provides an alternative to the use of Gröbner basis techniques for constructing a matrix representation of a finitely presented associative algebra.

Constructions for various types of non-associative algebras have been contributed by Josh Maglione and James Wilson (both Colorado State U) as part of their Multilinear Algebra package.

A package for computing with Clifford algebras defined over finite fields was developed by Don Taylor (Sydney) and released in Magma V2.18 (2011).

John Voight (Vermont) produced the package for quaternion algebras over number fields.

Coding Theory

A package for constructing linear codes associated with lattice points in a convex polytope has been contributed by Gavin Brown (Loughborough) and Alexander Kasprzyk (Imperial).

The PERM package developed by Jeff Leon (UIC) is used to determine automorphism groups of codes, designs and matrices.

The development of machinery for linear codes benefited greatly from the active involvement of Markus Grassl (Karlsruhe) over a long period. Of particular note is his contribution to the development of improved algorithms for computing the minimum weight and for the enumeration of codewords.

Routines implementing many different constructions for linear codes over finite fields were contributed by Markus Grassl (Karlsruhe).

Markus Grassl (Karlsruhe) played a key role in the design of Magma packages for additive codes and quantum error-correcting codes. The packages were implemented by Greg White (Magma).

The construction of a database of best known linear codes over GF(2) was a joint project with Markus Grassl (Karlsruhe, NUS). Other contributors to this project include: Andries Brouwer, Zhi Chen, Stephan Grosse, Aaron Gulliver, Ray Hill, David Jaffe, Simon Litsyn, James Shearer, and Henk van Tilborg.

The databases of best known linear codes over GF(3), GF(4), GF(5), GF(7), GF(8) and GF(9) were constructed by Markus Grassl (IAKS, Karlsruhe).

A substantial collection of intrinsics for constructing and computing properties of 4 codes, building on Magma's basic machinery for Z4 codes, was contributed in 2009 by the Combinatoric, Coding and Security Group (CCSG) at the Universitat Autònoma de Barcelona headed by Merc Villanueva. The other members of the group were Roland D. Barrolleta, Jaume Pernas, and Jaume Pujol. They subsequently extended the package to include automorphism groups of 4 codes and a range of decoding algorithms. This version was released in 2016 with Magma V2.22.

Code for permutation decoding of linear codes over Fq was contributed by the CCSG group (Universitat Autònoma de Barcelona) in 2016.

Combinatorics

Michel Berkelaar (Eindhoven) gave us permission to incorporate his lp_solve package for linear programming.

The first stage of the Magma database of Hadamard and skew-Hadamard matrices was prepared with the assistance of Stelios Georgiou (Athens), Ilias Kotsireas (Wilfrid Laurier) and Christos Koukouvinos (Athens). In particular, they made available their tables of Hadamard matrices of orders 32, 36, 44, 48 and 52. Further Hadamard matrices were contributed by Dragomir Djokovic.

The Magma machinery for symmetric functions is based on the Symmetrica package developed by Adalbert Kerber (Bayreuth) and colleagues. The Magma version was implemented by Axel Kohnert of the Bayreuth group.

The PERM package developed by Jeff Leon (UIC) is used to determine automorphism groups of designs and also to determine isomorphism of pairs of designs.

Automorphism groups and isomorphism of Hadamard matrices are determined by converting to a similar problem for graphs and then applying the nauty program developed by Brendan McKay (ANU). The adaption was carried out by Paulette Lieby and Geoff Bailey (both Magma).

The calculation of the automorphism groups of graphs and the determination of graph isomorphism is performed using Brendan McKay's (ANU) program nauty. Databases of graphs and machinery for generating such databases have also been made available by Brendan. He has also collaborated in the design of the sparse graph machinery.

The graph automorphism/isomorphism program Traces developed by Adolfo Piperno (Sapienza Universita di Roma) is installed in Magma as part of the extended nauty package.

The code to perform the regular expression matching in the regexp intrinsic function comes from the V8 regexp package by Henry Spencer (Toronto).

Commutative Algebra

Gregor Kemper (TU München) has contributed most of the major algorithms of the Invariant Theory module of Magma, together with many other helpful suggestions in the area of Commutative Algebra.

Alexa van der Waall (Simon Fraser) has implemented the module for differential Galois theory.

Galois Groups

The Fieker–Klüners algorithm for finding the Galois group of a polynomial has been improved in a number of ways over the period 2014–2016 by Stephan Elsenhans (Paderborn).

Jürgen Klüners (Kassel) has made major contributions to the Galois theory machinery for function fields and number fields. In particular, he implemented functions for constructing the subfield lattice and automorphism group of a field and also the subfield lattice of the normal closure of a field. In joint work with Claus Fieker (Magma), Jürgen has recently developed a new method for determining the Galois group of a polynomial of arbitrary high degree.

Jürgen Klüners (Kassel) and Gunter Malle (Kassel) made available their extensive tables of polynomials realising all Galois groups over up to degree 15.

Galois Representations

Jeremy Le Borgne (Rennes) contributed his package for working with mod p Galois representations.

Code for constructing Artin representations of the Galois group of the absolute extension of a number field was developed by Tim Dokchitser (Cambridge).

Machinery which provides a uniform method for working with Galois representations over p-adic fields was implemented by Tim Dokchitser (Bristol).

Jared Weinstein (UCLA) wrote the package on admissible representations of GL2(ℚp).

Geometry

Algorithms for testing whether two convex polytopes embedded in a lattice are isomorphic or equivalent have been implemented by Alexander Kasprzyk (Imperial College). Of particular note is Al's implementation of the PALP normal form algorithm.

The Magma code for computing with incidence geometries has been developed by Dimitri Leemans (Brussels).

Dimitri Leemans (Auckland) contributed code for working with string C-groups and C+-groups in 2016.

Global Arithmetic Fields

An implementation of the Montes algorithm and its applications to speeding up computations involving ideal arithmetic in number fields and function fields has been contributed by Jens-Dietrich Bauch.

Jean-François Biasse (Calgary) implemented a quadratic sieve for computing the class group of a quadratic field. He also developed a generalisation of the sieve for number fields of degree greater than 2.

Florian Heß (TU Berlin) has contributed a major package for determining all isomorphisms between a pair of algebraic function fields.

David Kohel (Singapore–NUS, Magma) has contributed to the machinery for binary quadratic forms and has implemented rings of Witt vectors.

Jürgen Klüners (Düsseldorf) and Sebastian Pauli (UNC Greensboro) have developed algorithms for computing the Picard group of non-maximal orders and for embedding the unit group of non-maximal orders into the unit group of the field.

The facilities for general number fields and global function fields in Magma are based on the KANT V4 package developed by Michael Pohst and collaborators, first at Düsseldorf and then at TU Berlin. This package provides extensive machinery for computing with maximal orders of number fields and their ideals, Galois groups and function fields. Particularly noteworthy are functions for computing the class and unit group, and for solving Diophantine equations.

Code for finding all decompositions of a rational function into compositions of rational functions has been contributed by Jonas Szutkoski (Univ. Federal do Rio Grande do Sul).

The fast algorithm of Wieb Bosma and Peter Stevenhagen for computing the 2-part of the ideal class group of a quadratic field has been implemented by Mark Watkins (Bristol).

A database of number fields having degrees 2 through 9 was included in Magma from V2.19 (2013) onwards. The database was constructed by the Pari (Bordeaux) and KANT (Berlin) groups.

Group Theory: Finitely-Presented Groups

See also the subsection Group Theory: Soluble Groups.

A package for testing whether a finitely presented group is large, developed by Jack Button (Cambridge), was installed in Magma V2.20 (2013).

A new algorithm for computing all normal subgroups of a finitely-presented group up to a specified index has been designed and implemented by David Firth and Derek Holt (both Warwick).

The function for determining whether a given finite permutation group is a homomorphic image of a finitely presented group has been implemented in C by Volker Gebhardt from a Magma language prototype developed by Derek Holt (Warwick). A variant developed by Derek, allows one to determine whether a small soluble group is a homomorphic image.

Versions of Magma from V2.8 onwards employ the Advanced Coset Enumerator designed by George Havas (Queensland) and implemented by Colin Ramsay (also of Queensland). George has also contributed to the design of the machinery for finitely presented groups.

Derek Holt (Warwick) developed a modified version of his program, kbmag, for inclusion within Magma. The Magma facilities for groups and monoids defined by confluent rewrite systems, as well as automatic groups, are supported by this code.

Derek Holt (Warwick) has provided a Magma implementation of his algorithm for testing whether two finitely presented groups are isomorphic.

A small package for working with subgroups of free groups has been developed by Derek Holt (Warwick). He has also provided code for computing the automorphism group of a free group.

An improved version of the Plesken–Fabianska algorithm for finding L2-quotients of a finitely presented group was designed and implemented by Sebastian Jambor (Aachen). Among other features this version removes the restriction to two generators.

The algorithms designed and implemented by Sebastian Jambor (Aachen) for finding L3- and U3-quotients of a finitely-presented group have been incorporated into Magma.

The function for finding all subgroups having index less than a specified finite bound was implemented by Catherine Playoust (Magma). The implementation was based on a Pascal program written by Charlie Sims (Rutgers).

Group Theory: Finite Groups

A variation of the Product Replacement Algorithm for generating random elements of a group due to Henrik Bäärnhielm and Charles Leedham-Green has been coded with their assistance.

A Small Groups database containing all groups having order at most 2000, excluding order 1024, has been made available by Hans Ulrich Besche (Aachen), Bettina Eick (Braunschweig), and Eamonn O'Brien (Auckland). This library incorporates "directly" the libraries of 2-groups of order dividing 256 and the 3-groups of order dividing 729, which were prepared and distributed at various intervals by Mike Newman (ANU) and Eamonn O'Brien and various assistants, the first release dating from 1987.

The Small Groups database was augmented in Magma V2.14 (2007) by code that can enumerate all groups of any square-free order. This code was developed by Bettina Eick (Braunschweig) and Eamonn O'Brien (Auckland).

The calculation of automorphism groups (for permutation and matrix groups) and determining group isomorphism is performed by code written by Derek Holt (Warwick).

Lifting-style algorithms have been developed by Derek Holt (Warwick) for computing structural information in groups given in terms of the composition tree data structure. The operations include centralisers, conjugacy classes, normalizers, subgroup conjugacy and maximal subgroups.

The routine for computing the subgroup lattice of a group (as distinct from the list of all conjugacy classes of subgroups) is based on code written by Dimitri Leemans (Brussels).

Group Theory: Finite Simple Groups

See also the subsection Group Theory: Matrix Groups Defined Over Finite Fields.

Constructive recognition of quasi-simple groups belonging to the Suzuki and two Ree families have been implemented by Hendrik Bäärnhielm (QMUL). The package includes code for constructing their Sylow p-subgroups and maximal subgroups.

The maximal subgroups of all classical groups having degree not exceeding 12 have been constructed and implemented in Magma by John Bray (QMUL), Derek Holt (Warwick) and Colva Roney-Dougal (St Andrews).

Peter Brooksbank (Bucknell) implemented a Magma version of his algorithm for performing constructive black-box recognition of low-dimensional symplectic and unitary groups. He also gave the Magma group permission to base its implementation of the Kantor–Seress algorithm for black-box recognition of linear groups on his GAP implementation.

A method for constructing the natural K[G]-module for a classical group G from one of bounded degree has been implemented by Brian Corr and Eamonn O'Brien (both Auckland).

A new implementation of code for the constructive recognition of orthogonal groups in even characteristic was developed by Heiko Dietrich (Monash).

Michael Downward and Eamonn O'Brien (boh Auckland) provided functions to access much of the data in the on-line ATLAS of Finite Group Representations for the sporadic groups. A function to select "good" base points for sporadic groups was provided by Eamonn and Robert Wilson (QMUL).

Magma includes a database of almost-simple groups defined on standard generators. The database was originally conceived by Derek Holt (Warwick) with a major extension by Volker Gebhardt (Magma) and sporadic additions by Bill Unger (Magma).

A Monte Carlo algorithm to determine the defining characteristic of a quasisimple group of Lie type has been contributed by Martin Liebeck (Imperial) and Eamonn O'Brien (Auckland).

The package for recognizing large degree classical groups over finite fields was designed and implemented by Alice Niemeyer (Perth) and Cheryl Praeger (Perth). It has been extended to include 2-dimensional linear groups by Eamonn O'Brien (Auckland).

Code, provided by Eamonn O'Brien (Auckland) in 2015, constructs standard generators for matrix and permutation representations of classical groups defined over finite fields.

Eamonn O'Brien (Auckland) has provided implementations of constructive recognition algorithms for the matrix groups (P)SL(2,q) and (P)SL(3,q).

Improved algorithms, based on work of Peter Brooksbank, were provided by Eamonn O'Brien (Auckland) in 2015 for recognising SU(3,q), SU(4,q) and Sp(4,q).

A new implementation of an algorithm that writes an arbitrary element of a classical group in terms of its standard generators was provided by Csaba Schneider (Universidade Federal de Minas Gerais).

A package for constructing the Sylow p-subgroups of the classical groups has been implemented by Mark Stather (Warwick).

Generators in the natural representation of a finite group of Lie type were constructed and implemented by Don Taylor (Sydney) with some assistance from Leanne Rylands (Western Sydney).

Algorithms and code for computing conjugacy classes and testing conjugacy in the symplectic and orthogonal groups over finite fields were developed by Don Taylor (Sydney). This code was first exported in Magma V2.22 (2016).

Robert Wilson (QMUL) has made available the data contained in the on-line ATLAS of Finite Group Representations for use in a Magma database of permutation and matrix representations for finite simple groups.

Group Theory: Matrix Groups Defined Over Characteristic 0 Rings

A package developed by Alla Detinko (Galway), Dane Flannery (Galway) and Eamonn O'Brien (Auckland) determines whether a matrix group defined over a number field or rational function field is finite. The package was installed in Magma V2.16 (2009).

A package, "Infinite", has been developed by Alla Detinko (Galway), Dane Flannery (Galway) and Eamonn O'Brien (Auckland) for computing with groups defined over number fields, or (rational) function fields in zero or positive characteristic.

An algorithm for determining the conjugacy of any pair of matrices in GL(2,ℤ) was developed and implemented by David Husert (University of Paderborn). In particular, this allows the conjugacy of elements having infinite order to be determined.

Markus Kirschmer (RWTH, Aachen) has provided a package for computing with finite subgroups of GL(n,ℤ). A Magma database of the maximal finite irreducible subgroups of Sp2n(ℚ) for 1 ≤ i ≤ 11 has also been made available by Markus.

A much improved algorithm for computing the normaliser or centraliser of a finite subgroup of GL(n,ℤ) has been implemented by Markus Kirschmer (Aachen). Markus has also implemented an algorithm that tests finite subgroups for conjugacy.

A database of the maximal finite irreducible subgroups of Sp2n(ℚ) for 1 ≤ i ≤ 11 constructed by Markus Kirschmer (Aachen) was installed in Magma 2.16 (2009).

Procedures to list irreducible (soluble) subgroups of GL(2,q) and GL(3,q) for arbitrary q have been provided by Dane Flannery (Galway) and Eamonn O'Brien (Auckland).

A Monte Carlo algorithm for non-constructive recognition of simple groups has been contributed by Gunter Malle (Kaiserslautern) and Eamonn O'Brien (Auckland). This procedure includes the algorithm of Babai et al. to name a quasisimple group of Lie type.

Magma incorporates a database of the maximal finite rational subgroups of GL(n,ℚ) up to dimension 31. This database was constructed by Gabriele Nebe (Aachen) and Wilhelm Plesken (Aachen). A database of quaternionic matrix groups constructed by Gabriele is also included.

Group Theory: Matrix Groups Defined Over Finite Fields

See also the subsection Group Theory: Finite Simple Groups.

The Composition Tree (CT) package developed by Henrik Bäärnhielm (Auckland), Derek Holt (Warwick), Charles Leedham-Green (QMUL) and Eamonn O'Brien (Auckland), working with numerous collaborators, was first released in Magma V2.17 (2010). This package is designed for computing structural information for large matrix groups defined over a finite field. Upgrades were released in V2.18 (2011), V2.19 (2012), V2.20 (2013), V2.21 (2014) and V2.22 (2016)

Code which computes the normaliser of a subgroup of a general linear group defined over a finite field, using a theorem of Aschbacher rather than backtrack search, has been provided by Hannah Coutts (St Andrews).

A function that determines whether a matrix group G (defined over a finite field) is the normaliser of an extraspecial group in the case where the degree of G is an odd prime uses the new Monte Carlo algorithm of Alice Niemeyer (Perth) and has been implemented in Magma by Eamonn O'Brien (Auckland).

Eamonn O'Brien (Auckland) has contributed a Magma implementation of algorithms for determining the Aschbacher category of a subgroup of GL(n,q).

A fast algorithm for determining subgroup conjugacy based on Aschbacher's theorem classifying the maximal subgroups of a linear group has been designed and implemented by Colva Roney-Dougal (Sydney).

Group Theory: Permutation Groups

A new implementation of the algorithm of Jambor et al. (2013) for the constructive black box recognition of alternating and symmetric groups was installed in Magma V2.20 (2013), The implementation was undertaken by Jonathan Conder (Auckland) and Sebastian Jambor (Auckland).

Derek Holt (Warwick) has implemented the Magma version of the Bratus/Pak algorithm for black-box recognition of the symmetric and alternating groups.

Derek Holt (Warwick) has constructed a table of irreducible representations of quasisimple groups (up to degree 100). Some representations were contributed by Allan Steel, Volker Gebhardt and Bill Unger (all Magma).

Alexander Hulpke (Colorado State) has made available his database of all transitive permutation groups of degree up to 30. This incorporates the earlier database of Greg Butler (Concordia) and John McKay (Concordia) containing all transitive groups of degree up to 15.

A table containing all primitive groups having degree less than 2,500 has been provided by Colva Roney-Dougal (St Andrews). The groups of degree up to 1,000 were done jointly with Bill Unger (Magma).

A table containing all primitive groups having degrees in the range 2,500 to 4,095 has been provided by Hannah Coutts, Martyn Quick and Colva Roney-Dougal (all at St Andrews).

Colva Roney-Dougal (St Andrews) has implemented the Beals et al. algorithm for performing black-box recognition on the symmetric and alternating groups.

A Magma database has been constructed from the permutation and matrix representations contained in the on-line ATLAS of Finite Group Representations with the assistance of its main author Robert Wilson (QMUL, London).

Group Theory: Soluble Groups

The soluble quotient algorithm in Magma was designed and implemented by Herbert Brückner (Aachen).

Code producing descriptions of the groups of order p4, p5, p6, and p7 for p > 3 were contributed by Boris Girnat, Robert McKibbin, Mike Newman, Eamonn O'Brien, and Michael Vaughan-Lee.

A new approach to the more efficient calculation of the automorphism group of a finite soluble group has been developed and implemented by David Howden (Warwick). A slight variation of the algorithm is used to test isomorphism.

Most of the algorithms for p-groups and many of the algorithms implemented in Magma for finite soluble groups are largely due to Charles Leedham-Green (QMUL, London).

The NQ program of Werner Nickel (Darmstadt) is used to compute nilpotent quotients of finitely presented groups. Version 2.2 of NQ was installed in Magma V2.14 (2007) by Bill Unger (Magma) and Michael Vaughan-Lee (Oxford).

The p-quotient program, developed by Eamonn O'Brien (Auckland) based on earlier work by George Havas (Queensland) and Mike Newman (ANU), provides a key facility for studying p-groups in Magma. Eamonn's extensions in Magma of this package for generating p-groups, computing automorphism groups of p-groups, and deciding isomorphism of p-groups are also included. He has contributed software to count certain classes of p-groups and to construct central extensions of soluble groups.

The package for classifying metacyclic p-groups has been developed by Eamonn O'Brien (Auckland) and Michael Vaughan-Lee (Oxford).

Code to produce the groups of order 38 has been provided by Michael Vaughan-Lee (Oxford).

Homological Algebra

The packages for chain complexes and basic algebras have been developed by Jon Carlson (Athens, GA).

Sergei Haller developed Magma code for computing the first cohomology group of a finite group with coefficients in a finite (not necessarily abelian) group. This formed the basis of a package for computing Galois cohomology of linear algebra groups.

Machinery for computing group cohomology and for producing group extensions has been developed by Derek Holt (Warwick). There are two parts to this machinery. The first part comprises Derek's older C-language package for permutation groups while the second part comprises a recent Magma language package for group cohomology.

In 2011, Derek Holt (Warwick) implemented an alternative algorithm for finding the dimension of the cohomology group Hn(G,K), for G a finite group, and K a finite field. In this approach the dimension is found using projective covers and dimension shifting.

The code for computing A-structures in group cohomology was developed by Mikael Vejdemo Johansson (Jena).

L-Functions

Tim Dokchitser (Cambridge) has implemented efficient computation of many kinds of L-functions, including those attached to Dirichlet characters, number fields, Artin representations, elliptic curves and hyperelliptic curves. Vladmir Dokchitser (Cambridge) has contributed theoretical ideas.

Anton Mellit (Bonn) has contributed code for computing symmetric powers and tensor products of L-functions.

Bartosz Nasrecki (Bristol) has contributed a package for computing associated schemes in product projective spaces. This finds application in the study of hypergeometric motives.

A package for computing with Jacobi sum motives has been developed by Mark Watkins (Magma) in conjunction with David Roberts (University of Minnesota Morris) and Fernando Rodriguez-Villegas (ICTP, Trieste).

Lattices and Quadratic Forms

A Magma package for lattices over number fields was based on code contributed by Gael Collinet (Strasbourg). This package was extended by Markus Kirschmer, David Lorch (both Aachen) and Mark Watkins (Magma).

The construction of the sublattice of an integral lattice is performed by code developed by Markus Kirschmer (Aachen).

A collection of lattices derived from the on-line tables of lattices prepared by Neil Sloane (AT&T Research) and Gabriele Nebe (Aachen) is included in Magma.

The original functions for computing automorphism groups and isometries of integral lattices are based on the AUTO and ISOM programs of Bernd Souvignier (Nijmegen). In V2.16 they are replaced by much faster versions developed by Bill Unger (Magma).

Coppersmith's method (based on LLL) for finding small roots of univariate polynomials modulo an integer has been implemented by Damien Stehlé (ENS Lyon).

Given a quadratic form F in an arbitrary number of variables, Mark Watkins (Bristol) has used Denis Simon's ideas as the basis of an algorithm he has implemented in Magma for finding a large (totally) isotropic subspace of F.

Lie Theory

The major structural machinery for Lie algebras has been implemented for Magma by Willem de Graaf (Utrecht) and is based on his ELIAS package written in GAP. He has also implemented a separate package for finitely presented Lie rings.

A database of soluble Lie algebras of dimensions 2, 3 and 4 over all fields has been implemented by Willem de Graaf (Trento). Willem has also provided a database of all nilpotent Lie algebras of dimension up to 6 over all base fields (except characteristic 2 when the dimension is 6).

More recent extensions to the Lie algebra package developed by Willem de Graaf (Trento) include quantum groups, universal enveloping algebras, the semisimple subalgebras of a simple Lie algebra and nilpotent orbits for simple Lie algebras.

A fast algorithm for multiplying the elements of Coxeter groups based on their automatic structure has been designed and implemented by Bob Howlett (Sydney). Bob has also contributed Magma code for computing the growth function of a Coxeter group.

Machinery for computing the W-graphs for Lie types An, E6, E7 and E8 has been supplied by Bob Howlett (Sydney). Subsequently, Bob supplied code for working with directed W-graphs.

The current version of Lie groups in Magma has been implemented by Scott Murray (Sydney) and Sergei Haller with some assistance from Don Taylor (Sydney).

An extensive package for computing the combinatorial properties of highest weight representations of a Lie algebra has been written by Dan Roozemond (Eindhoven). This code is based on the LiE package with permission of the authors.

The original version of the code for root systems and permutation Coxeter groups was modelled, in part, on the Chevie package of GAP and implemented by Don Taylor (Sydney) with the assistance of Frank Lübeck (Aachen).

Functions that construct any finite irreducible unitary reflection group in n have been implemented by Don Taylor (Sydney). Extension to the infinite case was implemented by Scott Murray (Sydney).

Code has been contributed by Robert Zeier (TU Munich) for determining the irreducible simple subalgebras of the Lie algebra SUk.

Linear Algebra and Module Theory

Josh Maglione and James Wilson (both Colorado State U) have contributed their package for multilinear algebra which provides support for computing with tensors and multilinear maps. It was first exported in Magma V2.22 (2016).

Parts of (1) the ATLAS (Automatically Tuned Linear Algebra Software) created by R. Clint Whaley (UTSA) et al., (2) the OpenBLAS library by Zhang Xianyi, Martin Kroeker, et al. or (3) the Intel oneAPI Math Kernel Library (oneMKL) may be used for some fundamental matrix algorithms over finite fields GF(p), where p is about the size of a machine integer.

Local Arithmetic Fields

A package written by Xavier Caruso and David Lubicz (both Rennes) for computing with power series rings over p-adic rings was included in Magma V2.20 (2013) after additional work by Mark Watkins.

Sebastian Pauli (TU Berlin) has made available the Magma implementation of his algorithm for factoring polynomials over local fields. It is also used for factoring ideals and for computing completions of global fields.

The module for lazy power series is based on the ideas of Josef Schicho (Linz).

Modular Forms

Kevin Buzzard (Imperial College) made available his code for computing modular forms of weight one. The Magma implementation was developed using this as a starting point.

Lassina Dembélé (Warwick) wrote part of the code implementing his algorithm for computing Hilbert modular forms.

Enrique González-Jiménez (Madrid) contributed a package to compute curves over , of genus at least 2, which are images of X0(N) and X1(N) for a given level N.

Matthew Greenberg (Calgary) and John Voight (Vermont) developed and implemented an algorithm for computing Hilbert modular forms using Shimura curves.

A new implementation (V2.19) of Brandt modules associated to definite quaternion orders, over and over function fields \F{q}[t], has been developed by Markus Kirschmer (Aachen) and Steve Donnelly (Magma).

David Kohel (Singapore–NUS, Sydney) has provided implementations of division polynomials and isogeny structures for Brandt modules and modular curves. Jointly with William Stein (Harvard), he implemented the module of supersingular points.

Allan Lauder (Oxford) has contributed code for computing the characteristic polynomial of a Hecke operator acting on spaces of overconvergent modular forms.

An improved version of code due to Alan Lauder (Oxford) for computing the characteristic series of the Atkin–Lehner operator Up on p-adic modular forms was included in Magma V2.20 (2013).

Magma routines for constructing building blocks of modular abelian varieties were contributed by Jordi Quer (Cataluna).

A package for computing with modular symbols (known as HECKE) has been developed by William Stein (Harvard). William has also provided much of the package for modular forms.

In 2003–2004, William Stein (Harvard) developed extensive machinery for computing with modular abelian varieties within Magma.

A package for computing with congruence subgroups of the group PSL(2,ℝ) has been developed by Helena Verrill (LSU).

John Voight (Vermont) produced the package for Shimura curves and arithmetic Fuchsian groups.

Dan Yasaki (UNC) developed a Magma package for Bianchi modular forms over imaginary quadratic fields which was distributed in Magma V2.16 (2009). A new faster version developed by Dan was released in Magma 2.20 (2013).

Primality and Factorisation

The factorisation of integers of the form pn±1, for small primes p, makes use of tables compiled by Richard Brent (ANU) that extend tables developed by the Cunningham project. In addition, Magma uses Richard's intelligent factorization code FACTOR.

One of the main integer factorization tools available in Magma is due to Arjen Lenstra (EPFL) and his collaborators: a multiple polynomial quadratic sieve developed by Arjen from his "factoring by email" MPQS during visits to Sydney in 1995 and 1998.

The primality of integers is proven using the ECPP (Elliptic Curves and Primality Proving) package written by François Morain (École Polytechnique and INRIA). The ECPP program in turn uses the BigNum package developed jointly by INRIA and Digital PRL.

Magma uses the GMP-ECM implementation of the elliptic curve method for integer factorisation. This was developed by Pierrick Gaudry, Jim Fougeron, Laurent Fousse, Alexander Kruppa, Dave Newman, and Paul Zimmermann.

Real and Complex Arithmetic

The complex arithmetic in Magma uses the MPC package which is being developed by Andreas Enge, Philippe Théveny and Paul Zimmermann.

Xavier Gourdon (INRIA, Paris) made available his C implementation of A. Schön-hage's splitting-circle algorithm for the fast computation of the roots of a polynomial to a specified precision. Xavier also assisted with the adaptation of his code for the Magma kernel.

Some portions of the GNU GMP multiprecision integer library are used for integer multiplication.

Most real arithmetic in Magma is based on the MPFR package which is developed by Paul Zimmermann (Nancy) and associates.

Representation Theory

A substantial package for working with basic algebras has been contributed by Jon Carlson (Athens, Ga.). The package provides a wide range of facilities including automorphism group and cohomology.

A database of basic algebras for the p-modular group algebras of some of the smaller groups appearing in the ATLAS of Finite Groups has been constructed by Jon Carlson (Athens, Ga.). A similar library contains the basic algebras of a small collection of Schur algebras S(n,r).

The algorithm of John Dixon for constructing the ordinary irreducible representation of a finite group from its character has been implemented by Derek Holt (Warwick).

Derek Holt (Warwick) has made a number of important contributions to the design of the module theory algorithms employed in Magma.

An algorithm of Sam Conlon for determining the degrees of the ordinary irreducible characters of a soluble group (without determining the full character table) has been implemented by Derek Holt (Warwick).

In 2011, Derek Holt (Warwick) and John Cannon (Magma) developed a package for computing the projective indecomposable KG-modules for a finite group G.

A number of intrinsics for working with various aspects of KG-modules, K a field, have been implemented by Derek Holt (Warwick). Among many others these include functions for module extensions and bimodules.

The algorithms used in Magma for finding the lattice of submodules and the endomorphism ring of a KG-module (K a finite field) were developed by Charles Leedham-Green (QMW, London) and Allan Steel (Magma).

Topology

A basic module for defining and computing with simplicial complexes was developed by Mikael Johansson (Jena).

Nathan Dunfield (Harvard) and William Thurston (Cornell) have made available their database of the fundamental groups of the 10,986 small-volume closed hyperbolic 3-manifolds in the Hodgson–Weeks census.


Handbook Contributors

In addition to the chapter authors, we gratefully acknowledge the contributions to the Handbook made by the following people: