[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Release Notes V2.20 (18 April 1997)

Release Notes V2.20 (18 April 1997)

This screen provides a terse summary of the new features installed in Magma for release version V2.20 (April 18, 1997).

Summary

  • User-defined attributes for structures have been introduced.
  • The database used for finding representatives of conjugacy classes of subgroups has been expanded so that the subgroups of a permutation group having a radical quotient of order up to 216,000 may now be found (previous limit was 20,160).
  • The algorithm used for finding conjugacy classes of elements in permutation groups has been vastly improved.
  • A new fast integer arithmetic package has been developed from scratch which provides very substantial speed-ups over the previous integer package used by Magma. All higher level integer functions, other than the ECM and QS factorization modules, have been rewritten or heavily revised to improve performance and to remove memory leaks.
  • Primality proving is now performed using Francois Morain's ECPP package.
  • The Groebner basis machinery (particular over the rational field and rational function fields) has been sped up significantly by careful new use of the new integer package and by improved strategies.
  • The second stage of the Magma invariant theory module is completed with new improved algorithms for optimal-degree primary invariants and for modular secondary invariants (both due to G. Kemper) together with algorithms for computation of algebraic relations, free resolutions and other properties.
  • A powerful family of LLL algorithms have been developed.
  • A first version of modules for computing with algebras is included for the first time. The classes of algebra supported include general finite dimensional algebras (defined by structure constants), finite dimensional associative algebras, and group algebras.

    General Groups [HB 15]

  • The function CommutatorGroup has been extended to work for non-normal subgroups H and K.
  • Preimage is now available for CosetAction.

    Finitely Presented Groups and Soluble Groups [HB 16, 19]

  • An important optimization has been introduced into the algorithm used for finding conjugacy classes in soluble groups. In some cases the enhanced algorithm is up to 100 times faster.
  • The implementation of functions that apply to subgroups of finite index in a finitely-presented group have been made more robust.
  • A bug in the function Core for fp-groups has been fixed.
  • The ncl-constructor for fp-groups now returns objects of the correct type.
  • A bug where the words corresponding to the generators of a rewritten subgroup were incorrect has been fixed. This affected functions Rewrite and Simplify. (Reported by Marston Conder.)

    Abelian Groups [HB 18]

  • Quotients are now presented on a minimal generating set.

    Permutation Groups [HB 20]

  • The database used for finding representatives of conjugacy classes of subgroups has been expanded so that the subgroups of a group having a radical quotient of order up to 216,000 may now be found (previous limit was 20,160).
  • The algorithm used for finding conjugacy classes of elements has been vastly improved. This will extend its range of application enormously and has an impact on other algorithms, e.g. computing the character table of a group.
  • A fast algorithm for computing the action of a permutation group on the cosets of a subgroup has been installed. This affects many other algorithms, e.g. testing whether a subgroup is maximal; computing transitive representations of a permutation group. See especially functions CosetTable, CosetAction. Transversal, IsMaximal and the quo-constructor.
  • The function IsConjugate now computes the centralizer of one of its element arguments to improve speed. This may slow the function down slightly in easy cases but can lead to a big improvement in execution time for harder examples.
  • A bug whereby factors of the socle of a primitive group were sometimes incorrect has been repaired.
  • The function MinimalPartition now signals a user error if its argument is an intransitive group.
  • A minor bug in ChiefSeries has been fixed.
  • Many instances where memory blocks were not being deleted have been identified and fixed.
  • A bug in the cohomology code has been fixed by Derek Holt.
  • Changes have been made to the cohomology code to make it work correctly on 64-bit machines.

    Matrix Groups [HB 21]

  • Constructions for additional families of Chevalley groups: E_6(q), E_7(q), F_4(q), G_2(q), 3D_4(q), 2F_4(q), 2G_2(q), and the Tits group. A minor problem with the orthogonal group construction has been fixed.
  • A fast algorithm for computing large powers of a matrix over a finite field has been installed (see Matrix Algebras below).
  • An error that sometimes caused the function computing the centralizer of an element to crash has been fixed.
  • It is now possible to compute an action on the orbit of a trivial group.

    Characters of Finite Groups [HB 22]

  • A subtle bug in the code used to split 2-dimensional character spaces in the algorithm used by CharacterTable has been fixed. (Reported by Sabrina Hessinger.)

    Integer Ring [HB 24]

    A new fast integer arithmetic package has been developed from scratch. This provides very substantial speed-ups over the previous integer package used by Magma. New data structures are employed and many new (for Magma) algorithms have been introduced. These include specialized Karatsuba for integer product, an exact divide function and the Weber accelerated GCD algorithm. Assembler macros are used for critical operations and 64-bit operations are used in DEC-Alpha machines. On a Sun Ultra 2, Magma V2.2 multiplies 300 bit integers 4 times faster than Magma V2.1 and 1500 bit integers 7 times faster.

    As part of the upgrade of the integer module, all higher level integer functions, other than the ECM and QS factorization modules have been rewritten or heavily revised to improve performance and to remove memory leaks. Also improved memory management strategies have contributed to the performance upgrade. Significant functions included in this revision include the calculation of square roots modulo m (m not necessarily prime) and the solution of norm equations in quadratic fields.

    A much more efficient strategy for integer factorization has been introduced. The central idea is to strike the right balance between the application of ECM and QS. The new strategy runs ECM for about 10% of the expected running time of QS so as to ensure any factors having fewer than 20 -- 25 digits are discovered (in the case of an 80 digit integer). The new strategy will, in the worst case, factor 70 digit integers in about an hour and 80 digit integers in about 8 hours using a single processor on a Sun Ultra 2. The average time for factoring a random 80 digit integer is less than one hour. Using a small network of workstations, factoring 90--100 digit integers is routine. Further improvements to the factorization capability are expected in the near future.

    The Elliptic Curve Primality Prover (ECPP) designed and implemented by Francois Morain at INRIA has been installed in Magma V2.2. This provides fast rigorous primality proofs for integers having several hundred digits. The primality of a 100 digit integer is established in 24 seconds (on an Sun Ultra 2). ECPP is now used by default by the Magma functions IsPrime and Factorization.

    Summary of new features:

  • New main strategy for function Factorization with control over the amount of effort expended by each subalgorithm. The parameters have also been changed.
  • Independent factorization functions TrialDivision, SQUFOF, PollardRho, pMinus1, ECM, MPQS with controlling arguments are now provided. (The function Factor has been removed.)
  • New verbose flag Factorization.
  • Primality proving is now performed using Morain's ECPP package (automatically called by the function IsPrime, etc.). The functions Primality and PrimeCertificate have been removed. New equivalent functions will follow soon which will be based on the ECPP package.
  • An expanded version of the Cunningham database of factorizations of integers having the form a^n+/-1 compiled by Brent and associates (containing 199,044 factorizations for all bases less than 1000).
  • Probabilistic primality testing of integers (function IsProbablePrime).
  • Functions EulerPhi, CarmichaelLambda, MoebiusMu, and DivisorSigma now allow a factorized integer as argument.
  • New functions FactoredEulerPhi and FactoredCarmichaelLambda which return their results as factored integers.

    Changes:

  • Function InverseMod renamed to Modinv.
  • Function Order (taking 2 integers) renamed to Modorder.

    Rational Field and Rational Function Fields, [HB 26, 31]

    Improved algorithms have been introduced for performing arithmetic on the elements of both the rational field and rational function fields. This has lead to a substantial speed-up for algorithms that make extensive use of rational arithmetic. Specialized fraction-free matrix and polynomial algorithms have also been introduced for these fields.

    Summary of new features:

  • Computation of the (complete) squarefree partial fraction decomposition of a function field element (function PartialFractionDecomposition).

    Finite Fields [HB 27]

  • Function IsPower to test whether an element of a finite field is a power and to return the root if so.
  • Faster arithmetic in very large prime finite fields through use of the new integer package and the Montgomery modular multiplication algorithm (further improvements under development).

    Univariate Polynomial Rings [HB 28]

  • New function Round which takes a polynomial over a subring of the real field and rounds all of the coefficents to the nearest integer.
  • New function HasRoot which takes a polynomial and returns a single root if existent (more efficient particularly over finite fields than computing all roots).

    Multivariate Polynomial Rings [HB 29]

    A range of improvements and optimizations have been made to the Groebner Basis machinery which improves its performance over the rational field (in particular, careful efficient use of the new integer package has led to very significant improvements). The Groebner Walk algorithm has been improved also in light of the new integer package (constructions with weight vectors). New improved strategies for the main Buchberger algorithm have been introduced, including (automatic) homogenization of ideals, and new techniques for reducing the basis during the computation. A grevlex Groebner basis for the Cyclic-7 roots example takes 930 seconds on a Sun Ultra 2. Many new features have been added which are related to Invariant Theory.

    Summary of new features:

  • New parameters Homogenize, ReduceInitial, and ReduceByNew for the procedure Groebner to allow control of strategy.
  • A more efficient algorithm (the modular method) for computing univariate and multivariate resultants has been implemented.
  • Multivariate GCD over Z and Q improved.
  • Function Reduce to reduce a basis and function ReduceGroebnerBasis to reduce a (known) Groebner basis.
  • Groebner basis computation over function fields has been significantly improved.
  • Functions HomogeneousComponent and HomogeneousComponents for construction of homogeneous components of polynomials.
  • Functions MonomialsOfDegree and MonomialsOfWeightedDegree for construction of all monomials of a given total degree or weighted degree.
  • Function MinimalAlgebraGenerators for the construction of a minimal generating set of a polynomial subalgebra.
  • Functions HomogeneousModuleTest and HomogeneousModuleTestBasis for computing with a submodule over a subalgebra in a polynomial ring.
  • Multivariate GCD over finite fields fixed (included content in a particular variable too many times for some inputs).

    Invariant Rings of Finite Groups [HB 30]

    The first stage of the Magma module for computing with invariant rings of finite groups was released in V2.1. Magma V2.2 contains the second stage of our planned invariant theory machinery.

    Summary of new features:

  • The Reynolds operator has been improved significantly for matrix groups over the rational field (fraction-free methods) and all other computations over fields of characteristic zero have been sped up significantly as a consequence of the new integer package.
  • A new algorithm developed by Gregor Kemper (late 1996) for computing primary invariants guarantees that the degrees of the invariants constructed are optimal (with respect to their product and then sum) (function PrimaryInvariants).
  • Similarly, a new improved algorithm developed by Gregor Kemper (early 1997) for computing secondary invariants in the modular case has been implemented (function SecondaryInvariants).
  • It is now possible to determine the (algebraic) relations between secondary invariants using the functions Relations and RelationIdeal (also algebra presentation given by function Algebra).
  • Irreducible secondary invariants (which generate all secondary invariants under multiplication) may be accessed (function IrreducibleSecondaryInvariants).
  • Function FundamentalInvariants has been vastly improved by using irreducible secondary invariants and a new minimalization algorithm.
  • A free resolution of an invariant ring (i.e. of its corresponding module) may be computed (function FreeResolution).
  • Depth and homological dimension of an invariant ring computable (functions HomologicalDimension, Depth).
  • Construction of Steenrod operations (function SteenrodOperation).
  • Many attributes of invariant rings may also be set or examined by the user (using the new user-attribute mechanism).
  • Known invariants of a particular degree may be set (procedure SetAllInvariantsOfDegree).

    Algebraic Number Fields [HB 33, 34]

    The arithmetic for cyclotomic and quadratic fields has been completely rewritten to take maximum advantage of the new integer package. This has led to significant speed-ups.

    Summary of new features:

  • New functions GaussianIntegerRing, EisensteinIntegerRing.
  • Memory leaks in the code for solving norm equations have been fixed.
  • Bugs occurring on 64-bit machines in class group computation of quadratic fields have been fixed.
  • Bugs occurring on 64-bit machines in galois group computations have been fixed.

    Real and Complex Fields [HB 36]

  • Function Round now takes a Complex number and yields a Gaussian integer.

    Modules and Lattices

    A powerful family of LLL algorithms have been developed. These are based on the FP-LLL algorithms of Schnorr and Euchner. Different variants on the main algorithm are provided to achieve optimized performance in different situations. The case for the ring of integers is specially optimized, particularly when the integers are small. C double precision floating-point numbers are used for efficiency but arbitrarily-sized integers are also handled robustly, avoiding overflow problems. Another version works off the Gram matrix of a basis rather than the basis itself. This algorithm is automatically used internally whenever it is more efficient. Further optimizations are under development.

    Vector Spaces [HB 40]

  • Tensor product of vector spaces and their elements (function TensorProduct).

    Modules Hom(U, V) [HB 42]

  • LLL algorithms for a lattice defined either by a basis matrix or a Gram matrix (functions LLL and LLLGram).

    Modules over K[x_1, x_2, ..., x_n] [HB 43]

  • Free resolutions of modules (functions FreeResolution and MinimalFreeResolution).

    Finite Dimensional Algebras (New Category) [HB 44, 45, 46]

  • Creation of both associative and non-associative algebras defined by structure constants.
  • Direct sums.
  • Creation of subalgebras, ideals, and quotient algebras.
  • Operations on subalgebras: intersection, products, powers.
  • Element operations and properties: arithmetic, identity, unit testing, zero divisors, nilpotency.
  • Bases: dimension, independence, basis elements, coordinates (for algebras defined over a field).
  • Algebra properties: associativity, commutativity, Lie properties.
  • Ideal structure: maximal and minimal ideals, Jacobson radical, simplicity, semi-simplicity, composition series.
  • Operations for associative algebras: centre, centralizer, idealizer, Lie product, commutator ideal, regular representation.

    Group Algebras (New Category) [HB 47]

  • Creation of group algebras: both vector and term representation of elements are supported -- allowing calculation in groups of arbitrary size.
  • Creation of subalgebras, ideals, and quotient algebras.
  • Operations on subalgebras: intersection, products, powers.
  • Element operations and properties: arithmetic, identity, unit testing, zero divisors, nilpotency, involution, support.
  • Bases: dimension, independence, basis elements, coordinates (for algebras defined over a field).
  • Augmentation ideal, augmentation map.
  • Algebra and subalgebra properties: commutativity, ideal testing.
  • Ideal structure: maximal and minimal ideals, Jacobson radical, simplicity, semi-simplicity, composition series.
  • Centre, centralizer, idealizer, annihilators, Lie product, commutator ideal, regular representation.

    Matrix Algebras [HB 48]

  • LLL algorithms for a lattice defined either by a basis matrix or a Gram matrix (functions LLL and LLLGram).
  • A new algorithm to efficiently compute large powers of matrices over finite fields has been installed. The algorithm works by computing the Jordan form of the matrix, then directly writing down the appropriate powers of the blocks and finally transforming to obtain the result.

    Finite Planes [HB 54]

  • An improved version of Jeff Leon's algorithm for computing collineation groups of projective planes has been installed. This is capable of computing collineation groups of planes having order up to 81. (Functions CollineationGroup and Isomorphism.)

    Error-correcting Codes [HB 55]

  • Computation of the set of all words of a code having a specific weight which consist of zeros and ones alone (function ConstantWords).
  • New version of minimum weight algorithm which allows for an early abort from a minimum weight computation (function VerifyMinimumWeight).
  • Function ExtendCode now applies also to non-binary codes.

  • [Next] [Prev] [Right] [Left] [Up] [Index] [Root]