LOOPS: Computing with quasigroups and loops in GAP
Gábor P. Nagy (University of Szeged, Hungary)
Petr Vojtěchovský (University of Denver, USA)
This is the official distribution webpage of the LOOPS package for GAP 4. You will find here:
Note: The package has been accepted by GAP in May 2015 and is available
with the standard distribution of GAP. A new version is under construction.
LOOPS is a package for GAP 4 whose purpose is to provide researchers in
nonassociative algebra with a powerful computational tool concerning finite loops
and quasigroups; and to extend GAP toward the realm of nonassociative structures.
The package consists of three complementary parts: core methods for quasigroups
and loops, specific methods for loops (mainly Moufang loops), libraries of small
To install LOOPS, you must have GAP version 4.7 or newer installed on your computer. Then
- download any of the available versions (Windows, Unix) of LOOPS
- unpack the file into the pkg directory of GAP
After this step, you will see the subfolder loops in the pkg folder.
To load LOOPS into GAP, start GAP and use LoadPackage( "loops" );.
The most recent version of LOOPS is 3.3.0.
Before you download LOOPS, you might want to check the
and the documentation.
The documentation for the package is included with the distribution and is
located in the loops/doc folder.
You can also access the documentation directly from here.
- pdf (pdf version)
- ps (postscript version)
- html (html version)
In version 3.3.0
- Added SmallGeneratingSet( Q ) for a quasigroup Q. It returns a small generating set of Q and it is used in isomorphism searches.
- New version of Discriminator. It is a bit slower but generally speeds up isomorphism searches because it is more powerful than the old version.
- Improved auxiliary routines for packing of multiplication tables (commutativity is exploited), and added
auxiliary routines for packing of cocycles. Consequently, some library files are smaller.
- Added a library of commutative automorphic loops of order 3, 9, 27, 81 and 243 (except for certain factors for 243 as described in the manual).
- Changed how Subloop( Q, S ) and Subquasigroup( Q, S ) work. It is now safe to call Subquasigroup( Q ) in all cases; a loop will be returned iff the argument is a loop.
- IsPowerAssociative( Q ) and IsDiassociative( Q ) now work for quasigroups, too. The methods are much faster.
In version 3.2.0:
- Added CanonicalCopy, which returns an isomorphic copy of a quasigroup or a loop with a Cayley table based on 1, ..., |Q|.
- Documentation and test files updated.
- Fixed a bug in InterestingLoop(96,1).
- Much more support for quasigroups, namely:
- Discriminator (which is used of isomorphism searches) has been updated and now works for quasigroups as well.
- Added IsomorphismQuasigroups( Q1, Q2 ).
- Added QuasigroupsUpToIsomorphism( ls ).
- Added AllSubquasigroups( Q ) that returns a list of all (nonempty) subquasigroups of a quasigroup.
- AutomorphismGroup( Q ) now works for quasigroups as well.
- DirectProduct now works for a list of quasigroups, loops and/or groups.
In version 3.1.0:
- Completely new documentation, prepared with GAPDoc.
- Added left Bol loops and right Bol loops of order pq, for odd primes p>q.
- Changed Opposite from global function to an attribute, and added operations OppositeLoop, OppositeQuasigroup, to avoid a conflict with other GAP packages.
In version 3.0.0:
- Fixed a bug in IsotopismLoops (now returns a correct isotopism).
- Added library of RCC loops (provided by Katharina Artic) up to order 27. See RCCLoop( n, m ), LCCLoop( n, m ).
- Extended library of CC loops up to order 27: CCLoop( n, m ).
- Added synonyms IsLeftConjugacyClosedLoop, IsRightConjugacyClosedLoop, IsConjugacyClosedLoop, RightConjugacyClosedLoop( n, m ), ConjugacyClosedLoop( n, m ), LeftConjugacyClosedLoop( n, m ).
- New conversion functions and encoding functions for multiplication tables.
- New structure of global variables to better separate the package from the rest of GAP.
- Added InterestingLoop(92,1), the simple right Bol loop of order 92 and exponent 2.
- Implemented AssociatedRightBruckLoop for Bol loops.
- Changed QuasigroupByRightSection( G, H, T ) to QuasigroupsByRightFolder( G, H, T ), and LoopByRightSection( G, H, T ) to LoopByRightFolder( G, H, T ).
- Added IsExactGroupFactorization( G, H1, H2 ) and RightBolLoopFromExactGroupFactorization( G, H1, H2 ).
- Added support for right Bol loops, including RightBolLoop(n, m).
- New documentation.
- Updated tests.
Click to see the log of older changes.
Known bugs in the most recent version
We are not aware of any bugs.
Older versions of the package
Since several published papers rely on older versions of the package, we post them here so that calculations can be verified.
For Unix: version
For Windows: version
G. P. Nagy was supported by OTKA grants F042959 and T043758, and P. Vojtechovsky was supported by the 2006 and 2016 University of Denver PROF grants and the Simons Foundation Collaboration Grant 210176.
We thank the following people for sending us remarks and comments, and for suggesting new functionality of the package: Muniru Asiru, Bjoern Assmann, Andreas Distler, Ales Drapal, Steve Flammia,
Kenneth W. Johnson, Michael K. Kinyon, Alexander Konovalov, Frank Lübeck and Jonathan D.H. Smith.
The library of Moufang loops of order 243 was generated from data provided by Michael C.
Slattery and Ashley L. Zenisek. The library of right conjugacy closed loops of order less than 28 was
generated from data provided by Katharina Artic. The library of commutative automorphic loops of
order 27, 81 and 243 was obtained jointly with Izabella Stuhl.
last update: October 27, 2016