Copy of LOOPS 3.3.0

This commit is contained in:
Glen Whitney 2017-10-16 21:43:09 +02:00
commit 7e8b3b5562
510 changed files with 97978 additions and 0 deletions

35
tst/bol.tst Normal file
View file

@ -0,0 +1,35 @@
#############################################################################
##
#W bol.tst Testing Bol loops G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: iso.tst, v 3.0.0 2015/06/05 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
gap> START_TEST("LOOPS, bol: testing methods for Bol loops");
# TESTING ASSOCIATED BRUCK LOOPS
gap> Q := LeftBolLoop(15,2);;
gap> B := AssociatedLeftBruckLoop(Q);;
gap> IsomorphismLoops(B,LeftBolLoop(15,1));
(7,9,10,8)(12,13,15,14)
gap> Q := RightBolLoop(15,1);;
gap> AssociatedRightBruckLoop( Q );
<right Bol loop of order 15>
# TESTING EXACT GROUP FACTORIZATIONS
gap> G := SymmetricGroup( 5 );;
gap> H1 := Subgroup( G, [(1,2),(1,3),(1,4)] );;
gap> H2 := Subgroup(G,[(1,2,3,4,5)]);;
gap> IsExactGroupFactorization(G,H1,H2);
true
gap> RightBolLoopByExactGroupFactorization(G,H1,H2); RightBolLoopByExactGroupFactorization([G,H1,H2]);
<loop of order 120>
<loop of order 120>
gap> STOP_TEST( "bol.tst", 10000000 );

410
tst/core_methods.tst Normal file
View file

@ -0,0 +1,410 @@
#############################################################################
##
#W core_methods.tst Testing core methods G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: core_methods.tst, v 3.3.0 2016/10/26 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
gap> START_TEST("LOOPS, core_methods: testing core methods");
# TESTING VIEW AND PRINT MODE, AND LATIN SQUARE FUNCTIONS
gap> T := [ [ 2, 1 ], [ 1, 2 ] ];;
gap> IsQuasigroupTable( T );
true
gap> IsLoopTable( T );
false
gap> Q := QuasigroupByCayleyTable( T );
<quasigroup of order 2>
gap> Elements( Q );
[ q1, q2 ]
gap> L := IntoLoop( Q );
<loop of order 2>
gap> Elements( L );
[ l1, l2 ]
gap> L.1;
l1
# TESTING MORE CONVERSION FUNCTIONS
gap> G := IntoGroup( Q );
Group([ (), (1,2) ])
gap> G := IntoGroup( L );
Group([ (), (1,2) ])
gap> IntoQuasigroup( G );
<quasigroup of order 2>
gap> IntoLoop( G );
<loop of order 2>
gap> IntoLoop( Group( (1,2,3), (1,2), (1,4) ) );
<loop of order 24>
gap> PrincipalLoopIsotope( Q, Elements(Q)[1], Elements(Q)[1] );
<loop of order 2>
gap> CanonicalCopy( QuasigroupByCayleyTable( [[2,3],[3,2]] ) );
<quasigroup of order 2>
# TESTING DIRECT PRODUCTS AND OPPOSITES
gap> L := MoufangLoop( 12, 1 );;
gap> DirectProduct( L );
<Moufang loop 12/1>
gap> DirectProduct( L, L, L );
<loop of order 1728>
gap> DirectProduct( L, Group( (1,2,3) ) );
<loop of order 36>
gap> DirectProduct( Group( (1,2,3) ), L, Group( (1,2,3,4) ) );
<loop of order 144>
gap> Q := QuasigroupByCayleyTable([[2,1],[1,2]]);;
gap> DirectProduct( Q, Q );
<quasigroup of order 4>
gap> DirectProduct( Q, L, Group((1,2)) );
<quasigroup of order 48>
gap> OppositeLoop( L );
<loop of order 12>
# TESTING BASIC ATTRIBUTES
gap> One( L );
l1
gap> Size( L );
12
gap> CayleyTable( Q );
[ [ 2, 1 ], [ 1, 2 ] ]
gap> Exponent( L );
6
gap> Opposite( L );
<loop of order 12>
# TESTING BASIC ARITHMETIC OPERATIONS
gap> eL := Elements( L );;
gap> eL[ 2 ]*eL[ 3 ]*eL[ 7 ] = (eL[ 2 ]*eL[ 3 ])* eL[ 7 ];
true
gap> eL[ 2 ]*eL[ 3 ]*eL[ 7 ] = eL[ 2 ]*(eL[ 3 ]* eL[ 7 ]);
false
gap> LeftDivision( eL[ 2 ], eL[ 3 ] );
l4
gap> RightDivision( eL[ 2 ], eL[ 3 ] );
l6
gap> LeftInverse( eL[ 2 ] ) = RightInverse( eL[ 2 ] );
true
gap> Associator( eL[ 2 ], eL[ 3 ], eL[ 4 ] );
l1
gap> Commutator( eL[ 2 ], eL[ 3 ] );
l5
# TESTING GENERATORS
gap> GeneratorsOfLoop( L );
[ l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12 ]
gap> GeneratorsSmallest( L );
[ l10, l11, l12 ]
gap> SmallGeneratingSet( L );
[ l2, l3, l7 ]
# TESTING SECTIONS AND TRANSLATIONS
gap> LeftSection( L );
[ (), (1,2)(3,4)(5,6)(7,8)(9,12)(10,11), (1,3,5)(2,6,4)(7,9,11)(8,10,12),
(1,4)(2,5)(3,6)(7,10)(8,9)(11,12), (1,5,3)(2,4,6)(7,11,9)(8,12,10),
(1,6)(2,3)(4,5)(7,12)(8,11)(9,10), (1,7)(2,8)(3,11)(4,10)(5,9)(6,12),
(1,8)(2,7)(3,12)(4,9)(5,10)(6,11), (1,9)(2,12)(3,7)(4,8)(5,11)(6,10),
(1,10)(2,11)(3,8)(4,7)(5,12)(6,9), (1,11)(2,10)(3,9)(4,12)(5,7)(6,8),
(1,12)(2,9)(3,10)(4,11)(5,8)(6,7) ]
gap> RightSection( L );
[ (), (1,2)(3,6)(4,5)(7,8)(9,12)(10,11), (1,3,5)(2,4,6)(7,11,9)(8,12,10),
(1,4)(2,3)(5,6)(7,10)(8,9)(11,12), (1,5,3)(2,6,4)(7,9,11)(8,10,12),
(1,6)(2,5)(3,4)(7,12)(8,11)(9,10), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12),
(1,8)(2,7)(3,10)(4,9)(5,12)(6,11), (1,9)(2,12)(3,11)(4,8)(5,7)(6,10),
(1,10)(2,11)(3,12)(4,7)(5,8)(6,9), (1,11)(2,10)(3,7)(4,12)(5,9)(6,8),
(1,12)(2,9)(3,8)(4,11)(5,10)(6,7) ]
gap> LeftTranslation( L, eL[ 3 ] );
(1,3,5)(2,6,4)(7,9,11)(8,10,12)
gap> RightTranslation( L, eL[ 3 ] );
(1,3,5)(2,4,6)(7,11,9)(8,12,10)
# TESTING MULTIPLICATION GROUPS AND INNER MAPPING GROUPS
gap> LeftMultiplicationGroup( L );
<permutation group with 12 generators>
gap> RightMultiplicationGroup( L );
<permutation group with 12 generators>
gap> Size( MultiplicationGroup( L ) );
2592
gap> Size( InnerMappingGroup( L ) );
216
gap> MiddleInnerMappingGroup( L );
<permutation group with 12 generators>
# TESTING LOOP BY LEFT/RIGHT SECTION
gap> LoopByRightSection( [ (), (1,2)(3,4,5), (1,3,5)(2,4), (1,4,3)(2,5), (1,5,4)(2,3) ] );
<loop of order 5>
gap> S := Subloop( MoufangLoop( 12, 1 ), [ 3 ] );;
gap> LoopByLeftSection( LeftSection( S ) );
<loop of order 3>
gap> LoopByRightSection( RightSection( S ) );
<loop of order 3>
gap> QuasigroupByLeftSection( LeftSection( S ) );
<quasigroup of order 3>
gap> QuasigroupByRightSection( RightSection( S ) );
<quasigroup of order 3>
gap> CayleyTableByPerms( LeftSection( S ) );
[ [ 1, 3, 5 ], [ 3, 5, 1 ], [ 5, 1, 3 ] ]
# TESTING LOOP BY RIGHT FOLDER
gap> LOOPS_Shift := function( p )
> local ls;
> ls := ListPerm( p );
> ls := Concatenation( [1,2,3,4,5], List( ls, x -> x + 5 ) );
> return PermList( ls );
> end;
function( p ) ... end
gap> A := AlternatingGroup( 5 );
Alt( [ 1 .. 5 ] )
gap> G := DirectProduct( A, A );
Group([ (1,2,3,4,5), (3,4,5), (6,7,8,9,10), (8,9,10) ])
gap> H := Subgroup( G, [ (1,2,3), (2,3,4), (6,7,8,9,10) ] );
Group([ (1,2,3), (2,3,4), (6,7,8,9,10) ])
gap> T := List( A, x -> x * LOOPS_Shift(x)^(-1) );;
gap> LoopByRightFolder( G, H, T );
<loop of order 60>
gap> QuasigroupByRightFolder( G, H, T );
<quasigroup of order 60>
# TESTING RANDOM QUASIGROUPS AND LOOPS
gap> RandomQuasigroup( 10 );
<quasigroup of order 10>
gap> RandomQuasigroup( 10, 100 );
<quasigroup of order 10>
gap> RandomLoop( 11 );
<loop of order 11>
gap> RandomLoop( 30, 1000 );
<loop of order 30>
gap> RandomNilpotentLoop( [2, 3, 5] );
<loop of order 30>
gap> RandomNilpotentLoop( [2, CyclicGroup(3), 6] );
<loop of order 36>
# TESTING SUBQUASIGROUPS AND SUBLOOPS
gap> L := MoufangLoop( 32, 5 );;
gap> Length( AllSubloops( L ) );
90
gap> S := Subloop( L, [ Elements( L )[ 2 ], Elements( L )[ 25 ] ] );
<loop of order 8>
gap> L = Parent( S );
true
gap> L = Parent( L );
true
gap> PosInParent( S );
[ 1, 2, 5, 8, 22, 25, 29, 31 ]
gap> IsSubloop( L, S );
true
gap> CayleyTable( S );
[ [ 1, 2, 5, 8, 22, 25, 29, 31 ], [ 2, 5, 8, 1, 31, 22, 25, 29 ],
[ 5, 8, 1, 2, 29, 31, 22, 25 ], [ 8, 1, 2, 5, 25, 29, 31, 22 ],
[ 22, 25, 29, 31, 1, 2, 5, 8 ], [ 25, 29, 31, 22, 8, 1, 2, 5 ],
[ 29, 31, 22, 25, 5, 8, 1, 2 ], [ 31, 22, 25, 29, 2, 5, 8, 1 ] ]
gap> LeftTranslation( S, Elements( S )[ 2 ] );
(1,2,5,8)(22,31,29,25)
gap> SS := Subloop( S, [ Elements( S )[ 2 ] ] );
<loop of order 4>
gap> Parent( SS ) = L;
true
gap> CayleyTable( SS );
[ [ 1, 2, 5, 8 ], [ 2, 5, 8, 1 ], [ 5, 8, 1, 2 ], [ 8, 1, 2, 5 ] ]
gap> IsSubloop( S, SS );
true
gap> AllSubquasigroups( QuasigroupByCayleyTable( [[2,1],[1,2]] ) );
[ <quasigroup of order 2>, <quasigroup of order 1> ]
# TESTING NUCLEUS, COMMUTANT, CENTER
gap> LeftNucleus( L ) = NucleusOfLoop( L );
true
gap> MiddleNucleus( L ) = RightNucleus( L );
true
gap> Commutant( L );
[ l1, l4, l5, l11 ]
gap> Center( L );
<associative loop of order 4>
gap> AssociatorSubloop( L );
<loop of order 2>
# TESTING COMMUTATIVITY AND GENERALIZATIONS
gap> IsAssociative( L );
false
gap> IsCommutative( L );
false
gap> IsCommutative( Q );
true
gap> IsPowerAssociative( L );
true
gap> IsDiassociative( L );
true
# TESTING INVERSE PROPERTIES
gap> B := LeftBolLoop( 8, 1 );;
gap> HasLeftInverseProperty( B );
true
gap> HasRightInverseProperty( B );
false
gap> HasInverseProperty( B );
false
gap> HasTwosidedInverses( B );
true
gap> HasAutomorphicInverseProperty( B );
true
gap> HasAntiautomorphicInverseProperty( B );
false
# TESTING PROPERTIES OF QUASIGROUPS
gap> IsSemisymmetric( Q );
true
gap> IsTotallySymmetric( Q );
true
gap> IsTotallySymmetric( B );
false
gap> IsIdempotent( Q );
false
gap> IsSteinerQuasigroup( Q );
false
gap> IsUnipotent( Q );
true
gap> IsLeftDistributive( B );
false
gap> IsRightDistributive( B );
false
gap> IsDistributive( B );
false
gap> IsEntropic( Q );
true
gap> IsMedial( Q );
true
# TESTING LOOPS OF BOL-MOUFANG TYPE
gap> L := DirectProduct( MoufangLoop( 12, 1 ), Group( (1,2)(3,4), (1,3)(2,4) ) );
<loop of order 48>
gap> IsLeftAlternative( L );
true
gap> IsRightAlternative( L );
true
gap> L;
<alternative loop of order 48>
gap> IsLeftNuclearSquareLoop( L );
false
gap> IsRightNuclearSquareLoop( L );
false
gap> IsMiddleNuclearSquareLoop( L );
false
gap> IsNuclearSquareLoop( L );
false
gap> IsLCLoop( L );
false
gap> IsRCLoop( L );
false
gap> IsCLoop( L );
false
gap> IsFlexible( L );
true
gap> IsLeftBolLoop( L );
true
gap> L;
<left Bol loop of order 48>
gap> IsRightBolLoop( L );
true
gap> L;
<Moufang loop of order 48>
gap> IsExtraLoop( L );
false
# TESTING CONJUGACY CLOSED LOOPS
gap> IsLCCLoop( L ); IsLeftConjugacyClosedLoop( L );
false
false
gap> IsRCCLoop( L ); IsRightConjugacyClosedLoop( L );
false
false
gap> IsCCLoop( L ); IsConjugacyClosedLoop( L );
false
false
# TESTING BRUCK AND STEINER LOOPS
gap> IsLeftBruckLoop( B );
true
gap> IsRightBruckLoop( B );
false
gap> IsLeftKLoop( B );
true
gap> IsRightKLoop( B );
false
gap> IsSteinerLoop( B );
false
# TESTING A-LOOPS
gap> IsLeftALoop( B );
true
gap> IsRightALoop( B );
true
gap> IsMiddleALoop( B );
false
gap> IsALoop( B );
false
# TESTING NORMALITY
gap> L := MoufangLoop( 32, 27 );;
gap> S := Subloop( L, [ L.3, L.4 ] );;
gap> IsNormal( L, S );
true
gap> FactorLoop( L, S );
<loop of order 4>
gap> NaturalHomomorphismByNormalSubloop( L, S );
MappingByFunction( <Moufang loop 32/27>, <loop of order
4>, function( x ) ... end )
gap> S := Subloop( L, [ Elements( L )[ 7 ] ] );;
gap> IsNormal( L, S );
false
gap> NormalClosure( L, S );
<loop of order 8>
# TESTING NILPOTENCY (MORE TESTING IN FILE nilpot.tst)
gap> IsNilpotent( L );
true
gap> IsStronglyNilpotent( L );
true
gap> UpperCentralSeries( L );
[ <loop of order 32>, <loop of order 4>, <loop of order 2>,
<associative loop of order 1> ]
gap> LowerCentralSeries( L );
[ <Moufang loop 32/27>, <loop of order 4>, <loop of order 2>,
<associative loop of order 1> ]
gap> NilpotencyClassOfLoop( L );
3
# TESTING SOLVABILITY
gap> IsSolvable( L );
true
gap> DerivedSubloop( L );
<loop of order 4>
gap> DerivedLength( L );
2
gap> FrattiniSubloop( L );
<loop of order 4>
gap> FrattinifactorSize( L );
8
gap> STOP_TEST( "core_methods.tst", 10000000 );

52
tst/iso.tst Normal file
View file

@ -0,0 +1,52 @@
#############################################################################
##
#W iso.tst Testing isomorphisms G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: iso.tst, v 3.2.0 2016/06/02 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
gap> START_TEST("LOOPS, iso: testing isomorphisms");
# TESTING DISCIMINATOR
gap> Length( Discriminator( MoufangLoop( 12, 1 ) )[ 1 ] );
3
# TESTING AUTOMORPHISM GROUPS
gap> AutomorphismGroup( MoufangLoop( 12, 1 ) );
<permutation group with 14 generators>
gap> AutomorphismGroup( MoufangLoop( 64, 1235 ) );
<permutation group with 16 generators>
gap> Size( last );
512
gap> AutomorphismGroup( LeftBolLoop( 8, 1 ) );
Group([ (5,8)(6,7), (2,3)(6,7), (2,6)(3,7), (2,7)(3,6) ])
gap> Size( AutomorphismGroup( SteinerLoop( 16, 77 ) ) );
3
gap> Q := QuasigroupByCayleyTable([[3,2,1],[2,1,3],[1,3,2]]);;
gap> AutomorphismGroup( Q );
Group([ (1,2,3), (1,3,2) ])
# TESTING ISOMORPHISMS
gap> Q := DirectProduct( MoufangLoop( 32, 5 ) );;
gap> Qp := IsomorphicCopyByPerm( Q, (2,3,4)(17,20) );;
gap> IsomorphismLoops( Q, Qp );
(2,3,4)(18,23)(19,25)(21,27)(22,28)(24,30)(26,31)(29,32)
gap> LoopsUpToIsomorphism( [Q,Qp] );
[ <Moufang loop 32/5> ]
gap> Q2 := QuasigroupByCayleyTable( [[2,1],[1,2]] );;
gap> IsomorphismQuasigroups( Q2, IntoLoop(CyclicGroup(2)) );
(1,2)
gap> Length( QuasigroupsUpToIsomorphism( [Q,Q2] ) );
2
# TESTING ISOTOPISMS
gap> IsotopismLoops( SmallLoop( 5, 1 ), SmallLoop( 5, 4 ) );
[ (3,4,5), (1,2), (1,2) ]
gap> STOP_TEST( "iso.tst", 10000000 );

264
tst/lib.tst Normal file
View file

@ -0,0 +1,264 @@
#############################################################################
##
#W lib.tst Testing libraries of loops G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: lib.tst, v 3.3.0 2016/10/26 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
gap> START_TEST("LOOPS, lib: testing all libraries except Moufang");
# INTERESTING LOOPS
gap> DisplayLibraryInfo( "interesting" );
The library contains a few interesting loops.
------
Extent of the library:
1 loop of order 5
1 loop of order 6
1 loop of order 16
1 loop of order 32
1 loop of order 96
true
# number of orders implemented in the library
gap> t := Length( LOOPS_interesting_data[ 1 ] );
5
# testing loops
gap> for i in [1..t] do
> n := LOOPS_interesting_data[ 1 ][ i ];
> for m in [ 1..LOOPS_interesting_data[ 2 ][ i ] ] do
> InterestingLoop( n, m );
> od;
> od;
# LEFT/RIGHT BOL LOOPS
gap> DisplayLibraryInfo( "left Bol" );
The library contains all nonassociative left Bol loops of order less than 17
and all nonassociative left Bol loops of order p*q, where p>q>2 are primes.
------
Extent of the library:
6 loops of order 8
3 loops of order 12
2038 loops of order 16
(p-q)/2 loops of order p*q for primes p>q>2 such that q divides p-1
(p-q+2)/2 loops of order p*q for primes p>q>2 such that q divides p+1
true
# number of orders implemented in the library
gap> t := Length( LOOPS_left_bol_data[ 1 ] );
3
# testing loops
gap> for i in [1..t] do
> n := LOOPS_left_bol_data[ 1 ][ i ];
> for m in [ 1..LOOPS_left_bol_data[ 2 ][ i ] ] do
> LeftBolLoop( n, m );
> od;
> od;
# testing right Bol loop
gap> RightBolLoop( 8, 1 );
<right Bol loop 8/1>
# STEINER LOOPS
gap> DisplayLibraryInfo( "Steiner" );
The library contains all nonassociative Steiner loops
of order less or equal to 16. It also contains the
associative Steiner loops of order 4 and 8.
------
Extent of the library:
1 loop of order 4
1 loop of order 8
1 loop of order 10
2 loops of order 14
80 loops of order 16
true
# number of orders implemented in the library
gap> t := Length( LOOPS_steiner_data[ 1 ] );
5
# testing loops
gap> for i in [1..t] do
> n := LOOPS_steiner_data[ 1 ][ i ];
> for m in [ 1..LOOPS_steiner_data[ 2 ][ i ] ] do
> SteinerLoop( n, m );
> od;
> od;
# NILPOTENT LOOPS
gap> DisplayLibraryInfo( "nilpotent" );
The library contains all nonassociative nilpotent loops
of order less than 12.
------
Extent of the library:
2 loops of order 6
134 loops of order 8
8 loops of order 9
1043 loops of order 10
true
gap> NilpotentLoop( 10, 1000 );
<nilpotent loop 10/1000>
# PAIGE LOOPS
gap> DisplayLibraryInfo( "Paige" );
The library contains the smallest nonassociative finite
simple Moufang loop.
------
Extent of the library:
1 loop of order 120
true
gap> PaigeLoop( 2 );
<Paige loop 120/1>
# RCC LOOPS
gap> DisplayLibraryInfo("RCC");
The library contains all nonassociative RCC loops of order less than 28.
------
Extent of the library:
3 loops of order 6
19 loops of order 8
5 loops of order 9
16 loops of order 10
155 loops of order 12
97 loops of order 14
17 loops of order 15
6317 loops of order 16
1901 loops of order 18
8248 loops of order 20
119 loops of order 21
10487 loops of order 22
471995 loops of order 24
119 loops of order 25
151971 loops of order 26
152701 loops of order 27
true
gap> RCCLoop(6,1); RCCLoop(16,6317); RightConjugacyClosedLoop(27,152701);
<RCC loop 6/1>
<RCC loop 16/6317>
<RCC loop 27/152701>
gap> LCCLoop(6,3); LCCLoop(25,119);
<LCC loop 6/3>
<LCC loop 25/119>
# CC LOOPS
gap> DisplayLibraryInfo("CC");
The library contains all nonassociative CC loops of order less than 28
and all nonassociative CC loops of order p^2 and 2*p for any odd prime p.
------
Extent of the library:
2 loops of order 8
3 loops of order 12
28 loops of order 16
7 loops of order 18
3 loops of order 20
1 loop of order 21
14 loops of order 24
55 loops of order 27
3 loops of order p^2 for every odd prime p,
1 loop of order 2*p for every odd prime p
true
gap> CCLoop(25,1); CCLoop(49,2); CCLoop(121,3); CCLoop(14,1);
<CC loop 25/1>
<CC loop 49/2>
<CC loop 121/3>
<CC loop 14/1>
gap> CCLoop(16,28); ConjugacyClosedLoop(27,55);
<CC loop 16/28>
<CC loop 27/55>
# SMALL LOOPS
gap> DisplayLibraryInfo("small");
The library contains all nonassociative loops of order less than 7.
------
Extent of the library:
5 loops of order 5
107 loops of order 6
true
gap> SmallLoop( 5, 3 ); SmallLoop( 6, 12 );
<small loop 5/3>
<small loop 6/12>
# ITP SMALL LOOPS
gap> DisplayLibraryInfo("itp small");
The library contains all nonassociative loops of order less than 7 up to isoto\
pism.
------
Extent of the library:
1 loop of order 5
20 loops of order 6
true
gap> ItpSmallLoop( 5, 1 ); ItpSmallLoop( 6, 14 );
<small loop 5/1>
<small loop 6/42>
# CODE LOOPS
gap> DisplayLibraryInfo("code");
The library contains all nonassociative even code loops
of order less than 65.
------
Extent of the library:
5 loops of order 16
16 loops of order 32
80 loops of order 64
true
gap> CodeLoop( 16, 3 );
<Moufang loop 16/3>
gap> CodeLoop( 64, 80 );
<Moufang loop 64/4247>
# AUTOMORPHIC LOOPS
gap> DisplayLibraryInfo("automorphic");
The library contains:
- all nonassociative automorphic loops of order less than 16,
- all commutative automorphic loops of order 3, 9, 27, 81,
- all commutative automorphic loops of order 243 that are central
extensions of Z_3 by F, where F is not the elem. ab. 3-group.
Note: Abelian groups are included among the commutative loops.
------
Extent of the library:
1 loop of order 3
1 loop of order 6
7 loops of order 8
2 loops of order 9
3 loops of order 10
2 loops of order 12
5 loops of order 14
2 loops of order 15
7 loops of order 27
72 loops of order 81
118451 loops of order 243
true
gap> AutomorphicLoop(15,2);
<automorphic loop 15/2>
gap> AutomorphicLoop(27,1);
<automorphic loop 27/1>
gap> AutomorphicLoop(243,100);
<automorphic loop 243/100>
gap> STOP_TEST( "lib.tst", 10000000 );

66
tst/nilpot.tst Normal file
View file

@ -0,0 +1,66 @@
#############################################################################
##
#W nilpot.tst Testing nilpotency G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: nilpot.tst, v 3.2.0 2015/11/22 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
gap> START_TEST("LOOPS, nilpot: nilpotency and triality group");
# GENERAL NILPOTENCY
gap> L := LoopByCayleyTable(
> [ [ 1, 2, 3, 4, 5, 6, 7, 8 ], [ 2, 1, 4, 3, 6, 5, 8, 7 ],
> [ 3, 4, 1, 2, 7, 8, 5, 6 ], [ 4, 6, 2, 8, 1, 7, 3, 5 ],
> [ 5, 3, 7, 1, 8, 2, 6, 4 ], [ 6, 5, 8, 7, 2, 1, 4, 3 ],
> [ 7, 8, 5, 6, 3, 4, 1, 2 ], [ 8, 7, 6, 5, 4, 3, 2, 1 ] ] );
<loop of order 8>
gap> Center(L);
<associative loop of order 2>
gap> LeftNucleus(L);
<associative loop of order 2>
gap> RightNucleus(L);
<associative loop of order 4>
gap> IsNilpotent(L);
true
gap> NilpotencyClassOfLoop(L);
2
gap> IsomorphismLoops(L,LeftBolLoop(8,2));
(3,8,4,6,5,7)
# NILPOTENCY FOR MOUFANG LOOPS
gap> L:=MoufangLoop(24,1);
<Moufang loop 24/1>
gap> Center(L);
<associative loop of order 2>
gap> IsNilpotent(L);
false
gap> NilpotencyClassOfLoop(L);
fail
gap> L:=MoufangLoop(32,32);
<Moufang loop 32/32>
gap> Center(L);
<associative loop of order 2>
# TRIALITY GROUPS
gap> tr:=TrialityPermGroup(L);;
gap> [ 33^tr.rho, 33^tr.sigma ];
[ 65, 1 ]
gap> Size(Center(tr.group));
4
gap> tr_pc:=TrialityPcGroup(L);
rec( group := <Triality pc group of order 2^15>, rho := f2, sigma := f1 )
gap> Size(Centralizer(tr.group,tr.sigma));
1024
gap> Size(Centralizer(tr.group,tr.rho));
32
gap> TrialityPermGroup(PSL(2,5));;
gap> Size(last.group);
216000
gap> STOP_TEST( "nilpot.tst", 10000000 );

16
tst/testall.g Normal file
View file

@ -0,0 +1,16 @@
#############################################################################
##
#W testall.g Testing LOOPS G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: testall.g, v 3.0.0 2015/06/15 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
dirs := DirectoriesPackageLibrary( "loops", "tst" );
ReadTest( Filename( dirs, "core_methods.tst" ) );
ReadTest( Filename( dirs, "nilpot.tst" ) );
ReadTest( Filename( dirs, "iso.tst" ) );
ReadTest( Filename( dirs, "lib.tst" ) );
ReadTest( Filename( dirs, "bol.tst" ) );