Skip to content

Commit

Permalink
Merge pull request #122 from gap-packages/my-dev
Browse files Browse the repository at this point in the history
introduced Size2d and Size3d
  • Loading branch information
cdwensley authored Apr 27, 2022
2 parents bb53aed + cfa626c commit 7eebbc3
Show file tree
Hide file tree
Showing 28 changed files with 243 additions and 104 deletions.
5 changes: 3 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# CHANGES to the 'XMod' package

## 2.86 -> 2.86dev (14/03/2022)
## 2.86 -> 2.87 (27/04/2022)

* (
* (27/04/22) introduced Size2d for 2d-objects and Size3d for 3d-objects
added the Arvasi/Odabas/Wensley paper to the list of references

## 2.85 -> 2.86 (14/03/2022)

Expand Down
4 changes: 2 additions & 2 deletions PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ SetPackageInfo( rec(

PackageName := "XMod",
Subtitle := "Crossed Modules and Cat1-Groups",
Version := "2.86dev",
Date := "14/03/2022", # dd/mm/yyyy format
Version := "2.87",
Date := "27/04/2022", # dd/mm/yyyy format
License := "GPL-2.0-or-later",

Persons := [
Expand Down
4 changes: 2 additions & 2 deletions doc/apps.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- apps.xml XMod documentation Chris Wensley -->
<!-- & Murat Alp -->
<!-- Copyright (C) 2001-2020, Chris Wensley et al, -->
<!-- Copyright (C) 2001-2022, Chris Wensley et al, -->
<!-- School of Computer Science, Bangor University, U.K. -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -112,7 +112,7 @@ gap> classes := LoopClasses( X8 );;
gap> List( classes, c -> Length(c) );
[ 1, 21, 56, 42, 24, 24 ]
gap> LX := LoopsXMod( X8, (1,2)(5,6) );;
gap> Size( LX );
gap> Size2d( LX );
[ 8, 64 ]
gap> IdGroup( LX );
[ [ 8, 5 ], [ 64, 138 ] ]
Expand Down
14 changes: 14 additions & 0 deletions doc/bib.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,20 @@
<pages>473-495</pages>
</article></entry>

<entry id="AOW"><article>
<author>
<name><first>Z.</first><last>Arvasi</last></name>
<name><first>A.</first><last>Odabas</last></name>
<name><first>C. D.</first><last>Wensley</last></name>
</author>
<title>Computing 3-Dimensional Groups :
Crossed Squares and Cat2-groups</title>
<journal>J. Symbolic Computation</journal>
<year>(to appear)</year>
<volume></volume>
<pages></pages>
</article></entry>

<entry id="B82"><inproceedings>
<author>
<name><first>R.</first><last>Brown</last></name>
Expand Down
2 changes: 1 addition & 1 deletion doc/gp2ind.xml
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ gap> inc45 := InclusionMappingGroups( s5, s4 );;
gap> iota45 := iso4 * inc45;;
gap> indX8 := InducedXMod( X8, iota45 );
i*(X8)
gap> Size( indX8 );
gap> Size2d( indX8 );
[ 120, 120 ]
gap> StructureDescription( indX8 );
[ "SL(2,5)", "S5" ]
Expand Down
61 changes: 43 additions & 18 deletions doc/gp2obj.xml
Original file line number Diff line number Diff line change
Expand Up @@ -341,19 +341,41 @@ gap> ImageElmXModAction( X12, (1,2,3,4,5,6), (8,9) );
</Example>

<ManSection>
<Attr Name="Size"
<Attr Name="Size2d"
Arg="X0" Label="for crossed modules" />
<Description>
The standard operation <C>Size</C> cannot be used for crossed modules
because the size of a collection is required to be a number,
and we wish to return a list.
<C>Size2d( X0 )</C> returns the two-element list,
<C>[ Size( Source(X0) ), Size( Range(X0) ) ]</C>.
<P/>
</Description>
</ManSection>

In the simple example below, <Code>X5</Code> is the automorphism crossed module
constructed in subsection <Ref Oper="XModByAutomorphismGroup"/>.
<P/>
<Example>
<![CDATA[
gap> Size2d( X5 );
[ 5, 4 ]
]]>
</Example>

<ManSection>
<Attr Name="Name"
Arg="X0" Label="for crossed modules" />
<Attr Name="IdGroup"
Arg="X0" Label="for crossed modules" />
<Attr Name="ExternalSetXMod"
Arg="X0" />
<Description>
More familiar attributes are <C>Name</C>, <C>Size</C> and <C>IdGroup</C>.
More familiar attributes are <C>Name</C> and <C>IdGroup</C>.
The name is formed by concatenating the names of the source and range
(if these exist).
<C>Size</C> and <C>IdGroup</C> return two-element lists.
<C>IdGroup( X0 )</C> returns a two-element list
<C>[ IdGroup( Source(X0) ), IdGroup( Range(X0) ) ]</C>.
<P/>
The <Ref Attr="ExternalSetXMod"/> for a crossed module is the source group considered as a G-set of the range group using the crossed module action.
<P/>
Expand All @@ -362,15 +384,12 @@ The <C>Display</C> function is used to print details of 2d-groups.
</Description>
</ManSection>

In the simple example below, <Code>X5</Code> is the automorphism crossed module
constructed in subsection <Ref Oper="XModByAutomorphismGroup"/>.
The <C>Print</C> statements at the end of the example list the &GAP;
representations and attributes of <Code>X5</Code>.
<P/>
<Example>
<![CDATA[
gap> Size( X5 ); IdGroup( X5 );
[ 5, 4 ]
gap> IdGroup( X5 );
[ [ 5, 1 ], [ 4, 1 ] ]
gap> ext := ExternalSetXMod( X5 );
<xset:[ (), (5,6,7,8,9), (5,7,9,6,8), (5,8,6,9,7), (5,9,8,7,6) ]>
Expand All @@ -380,10 +399,10 @@ gap> a := GeneratorsOfGroup( Range( X5 ) )[1]^2;
[ (5,6,7,8,9) ] -> [ (5,9,8,7,6) ]
gap> ImageElmXModAction( X5, (5,7,9,6,8), a );
(5,8,6,9,7)
gap> RepresentationsOfObject( X5 );
gap> Print( RepresentationsOfObject(X5), "\n" );
[ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModObj" ]
gap> KnownAttributesOfObject( X5);
[ "Name", "Size", "Range", "Source", "IdGroup", "Boundary", "XModAction",
gap> Print( KnownAttributesOfObject(X5), "\n" );
[ "Name", "Range", "Source", "IdGroup", "Boundary", "Size2d", "XModAction",
"ExternalSetXMod", "HigherDimension" ]
]]>
</Example>
Expand Down Expand Up @@ -444,11 +463,15 @@ listed in section <Ref Sect="sect-constructions" />:

<Example>
<![CDATA[
gap> KnownPropertiesOfObject( X5 );
[ "IsEmpty", "IsTrivial", "IsNonTrivial", "IsFinite",
"CanEasilyCompareElements", "CanEasilySortElements", "IsDuplicateFree",
"IsGeneratorsOfSemigroup", "IsPreXModDomain", "IsPreXMod", "IsXMod",
"IsAutomorphismGroup2DimensionalGroup" ]
gap> [ IsTrivial( X5 ), IsNonTrivial( X5 ), IsFinite( X5 ) ];
[ false, true, true ]
gap> kpoX5 := KnownPropertiesOfObject(X5);;
gap> ForAll( [ "IsTrivial", "IsNonTrivial", "IsFinite",
> "CanEasilyCompareElements", "CanEasilySortElements", "IsDuplicateFree",
> "IsGeneratorsOfSemigroup", "IsPreXModDomain", "IsPreXMod", "IsXMod",
> "IsAutomorphismGroup2DimensionalGroup" ],
> s -> s in kpoX5 );
true
]]>
</Example>

Expand Down Expand Up @@ -532,9 +555,11 @@ and the action of <M>C</M> on <M>K</M> is given by <M>k^{Jr} = k^r</M>.
<![CDATA[
gap> d8d8 := Group( (1,2,3,4), (1,3), (5,6,7,8), (5,7) );;
gap> X88 := XModByAutomorphismGroup( d8d8 );;
gap> Size( X88 );
gap> Size2d( X88 );
[ 64, 2048 ]
gap> Y88 := KernelCokernelXMod( X88 );;
gap> IdGroup(Y88);
[ [ 4, 2 ], [ 128, 928 ] ]
gap> StructureDescription( Y88 );
[ "C2 x C2", "(D8 x D8) : C2" ]
]]>
Expand Down Expand Up @@ -720,7 +745,7 @@ gap> C18 := Cat1Group( t1, h1, e1 );
Arg="C" Label="for cat1-groups" />
<Attr Name="Name"
Arg="C" Label="for cat1-groups" />
<Attr Name="Size"
<Attr Name="Size2d"
Arg="C" Label="for cat1-groups" />
<Description>
These are the attributes of a cat<M>^1</M>-group <M>\calC</M>
Expand Down Expand Up @@ -756,7 +781,7 @@ gap> KernelEmbedding( C18 );
[ (4,5,6) ] -> [ (4,5,6) ]
gap> Name( C18 );
"[g18=>s3a]"
gap> Size( C18 );
gap> Size2d( C18 );
[ 18, 6 ]
gap> StructureDescription( C18 );
[ "(C3 x C3) : C2", "S3" ]
Expand Down
7 changes: 6 additions & 1 deletion doc/gp3cat2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,11 @@ subject to the following conditions:
</Display>
where <M>\ker t = (\ker \ddot{t},\ \ker \dot{t})</M>,
and similarly for <M>\ker h</M>.
<P/>
A recent paper
<E>Computing 3-Dimensional Groups :L Crossed Squares and Cat2-Groups</E>,
by Arvasi, Odabas and Wensley <Cite Key="AOW"/>,
contains tables listing the numbers of isomorphism classes of cat2-groups on groups of order at most 30 – a total of 1007 cat2-groups.

<ManSection Label="cat2-group">
<Func Name="Cat2Group"
Expand Down Expand Up @@ -349,7 +354,7 @@ gap> C2act := Cat2GroupOfCrossedSquare( XSact );
(pre-)cat2-group with generating (pre-)cat1-groups:
1 : [((c5:c4 |X c5:c4) |X (d20 |X d10a))=>(c5:c4 |X c5:c4)]
2 : [((c5:c4 |X c5:c4) |X (d20 |X d10a))=>(c5:c4 |X d20)]
gap> Size( C2act );
gap> Size3d( C2act );
[ 80000, 400, 400, 20 ]
]]>
</Example>
Expand Down
20 changes: 19 additions & 1 deletion doc/gp3xsq.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- gp3xsq.xml XMod documentation Chris Wensley -->
<!-- -->
<!-- Copyright (C) 1996-2021, Chris Wensley et al, -->
<!-- Copyright (C) 1996-2022, Chris Wensley et al, -->
<!-- School of Computer Science, Bangor University, U.K. -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -251,6 +251,24 @@ false
]]>
</Example>

<ManSection>
<Attr Name="Size3d"
Arg="XS" Label="for 3d-objects" />
<Description>
Just as <C>Size2d</C> was used in place of <C>Size</C> for crossed modules, so <C>Size3d</C> is used for crossed squares:
<C>Size3d( XS )</C> returns a four-element list containing the sizes
of the four groups at the corners of the square.
<P/>
</Description>
</ManSection>

<Example>
<![CDATA[
gap> Size3d( PXS );
[ 2, 2, 2, 1 ]
]]>
</Example>

<ManSection>
<Oper Name="CrossedSquareByNormalSubgroups"
Arg="L M N P" />
Expand Down
12 changes: 11 additions & 1 deletion doc/history.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- history.xml XMod documentation Chris Wensley -->
<!-- -->
<!-- Copyright (C) 1996-2021, Murat Alp and Chris Wensley, -->
<!-- Copyright (C) 1996-2022, Murat Alp and Chris Wensley, -->
<!-- School of Computer Science, Bangor University, U.K. -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -215,6 +215,16 @@ Added functions for quasi-isomorphisms.
</Item>
</List>
</Subsection>

<Subsection><Heading>Version 2.86 - 2.87</Heading>
<List>
<Item>
Added attributes <C>Size2d</C> for 2d-objects and <C>Size3d</C> for 3d-objects
since lists are inappropriate values for the standard function <C>Size</C>.
</Item>
</List>
</Subsection>

</Section>


Expand Down
8 changes: 4 additions & 4 deletions doc/isoclinic.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- isoclinic.xml XMod documentation Alper Odabas -->
<!-- & Enver Uslu -->
<!-- Copyright (C) 2015-2020, Chris Wensley et al -->
<!-- Copyright (C) 2015-2022, Chris Wensley et al -->
<!-- -->
<!-- ------------------------------------------------------------------- -->

Expand Down Expand Up @@ -53,7 +53,7 @@ is a special case of this construction.
gap> d24 := DihedralGroup( IsPermGroup, 24 );;
gap> SetName( d24, "d24" );
gap> Y24 := XModByAutomorphismGroup( d24 );;
gap> Size( Y24 );
gap> Size2d( Y24 );
[ 24, 48 ]
gap> X24 := Image( IsomorphismPerm2DimensionalGroup( Y24 ) );
[d24->Group([ (2,4), (1,2,3,4), (6,7), (5,6,7) ])]
Expand All @@ -66,7 +66,7 @@ gap> Xn1 := nsx[pos1];
[Group( [ f2*f4^2, f3*f4 ] )->Group( [ f3, f4, f5 ] )]
gap> nat1 := NaturalMorphismByNormalSubPreXMod( X24, Xn1 );;
gap> Qn1 := FactorPreXMod( X24, Xn1 );;
gap> [ Size( Xn1 ), Size( Qn1 ) ];
gap> [ Size2d( Xn1 ), Size2d( Qn1 ) ];
[ [ 4, 8 ], [ 6, 6 ] ]
]]>
</Example>
Expand Down Expand Up @@ -509,7 +509,7 @@ gap> Length( IA66 );
gap> x36 := AllXMods( 36 );;
gap> Length( x36 );
205
gap> size36 := List( x36, x -> [ Size(Source(x)), Size(Range(x)) ] );;
gap> size36 := List( x36, x -> Size2d( x ) );;
gap> Collected( size36 );
[ [ [ 1, 36 ], 14 ], [ [ 2, 18 ], 7 ], [ [ 3, 12 ], 21 ], [ [ 4, 9 ], 14 ],
[ [ 6, 6 ], 17 ], [ [ 9, 4 ], 102 ], [ [ 12, 3 ], 8 ], [ [ 18, 2 ], 18 ],
Expand Down
2 changes: 1 addition & 1 deletion lib/gp2ind.gi
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
##
#W gp2ind.gi XMOD Package Chris Wensley
##
#Y Copyright (C) 2001-2020, Chris Wensley et al,
#Y Copyright (C) 2001-2022, Chris Wensley et al,
#Y School of Computer Science, Bangor University, U.K.
##
## This file implements functions for induced crossed modules.
Expand Down
6 changes: 3 additions & 3 deletions lib/gp2map.gi
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
## This file installs methods for 2DimensionalMappings
## for crossed modules and cat1-groups.
##
#Y Copyright (C) 2001-2021, Chris Wensley et al,
#Y Copyright (C) 2001-2022, Chris Wensley et al,
#Y School of Computer Science, Bangor University, U.K.

##############################################################################
Expand Down Expand Up @@ -1117,7 +1117,7 @@ function( C1G1, C1G2 )
t1, h1, t2, h2, t3, h3, C3, phi, autG2, iterG2,
salpha, ralpha, mgira, isalpha, R4, t4, h4, C4, smor, rmor;

if not ( Size( C1G1 ) = Size( C1G2 ) ) then
if not ( Size2d( C1G1 ) = Size2d( C1G2 ) ) then
return fail;
fi;
ok1 := IsPreCat1GroupWithIdentityEmbedding( C1G1 );
Expand Down Expand Up @@ -1951,7 +1951,7 @@ function( C, id, show )
## deal with trivial cases first
ids := [ id ];
K := KernelCokernelXMod( C );
if Product( Size(K) ) = ids[1][1] then
if Product( Size2d(K) ) = ids[1][1] then
return [ IdentityMapping( C ) ];
fi;
qmor := QuotientQuasiIsomorphism( C, show );
Expand Down
6 changes: 6 additions & 0 deletions lib/gp2obj.gd
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ DeclareProperty( "IsPreCat1Domain", Is2DimensionalDomain );
InstallTrueMethod( Is2DimensionalDomain, IsPreXModDomain );
InstallTrueMethod( Is2DimensionalDomain, IsPreCat1Domain );

#############################################################################
##
#A Size2d( <obj> )
##
DeclareAttribute( "Size2d", Is2DimensionalDomain );

#############################################################################
##
#R IsPreXModObj( <obj> )
Expand Down
Loading

0 comments on commit 7eebbc3

Please sign in to comment.