Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changed examples of induced crossed modules #149

Merged
merged 2 commits into from
Jan 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# CHANGES to the 'XMod' package

## 2.92 -> 2.92dev (17/12/2024)
## 2.92 -> 2.92dev (03/01/2025)
* (20/12/24) changed the examples of induced crossed modules in section 7.2
* (17/12/24) implemented (Inner)ActorCat1Group, fixing issue #144
* (20/11/24) added AutomorphismPermGroup method for cat1-groups
renamed PermAutomorphismAsXModMorphism as
Expand Down
4 changes: 2 additions & 2 deletions PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ SetPackageInfo( rec(
PackageName := "XMod",
Subtitle := "Crossed Modules and Cat1-Groups",
Version := "2.92dev",
Date := "17/12/2024", # dd/mm/yyyy format
Date := "03/01/2025", # dd/mm/yyyy format
License := "GPL-2.0-or-later",

Persons := [
Expand Down Expand Up @@ -127,7 +127,7 @@ Keywords := ["crossed module", "cat1-group", "derivation", "section",
AutoDoc := rec(
TitlePage := rec(
Copyright := Concatenation(
"&copyright; 1996-2024, Chris Wensley et al. <P/>\n",
"© 1996-2025, Chris Wensley et al. <P/>\n",
"The &XMod; package is free software; you can redistribute it ",
"and/or modify it under the terms of the GNU General ",
"Public License as published by the Free Software Foundation; ",
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Functions for crossed squares and cat2-groups have been added during 2019/20.

## Copyright

The 'XMod' package is Copyright {\copyright} Chris Wensley et al, 1997--2024.
The 'XMod' package is Copyright © Chris Wensley et al, 1997--2025.

'XMod' is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Expand All @@ -45,16 +45,15 @@ Once these prerequisites are in place, proceed as follows:

* Unpack `xmod-<version_number>.tar.gz` in the `pkg` subdirectory of the GAP root directory.
* From within GAP load the package with:

```
gap> LoadPackage( "xmod" );

true

* The file manual.pdf is in the `doc' subdirectory.
```
* The file manual.pdf is in the `doc` subdirectory.
* To run the test file read `testall.g` from the `tst` subdirectory.

## Contact

If you have a question relating to 'XMod', encounter any problems, or have a suggestion for extending the package in any way, please
* email: `[email protected]`
* email: <mailto:[email protected]>
* or report an issue at: <https://github.com/gap-packages/xmod/issues/new>
156 changes: 97 additions & 59 deletions doc/gp2ind.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- gp2ind.xml XMod documentation Chris Wensley -->
<!-- & Murat Alp -->
<!-- Copyright (C) 2001-2024, Chris Wensley et al, -->
<!-- Copyright (C) 2001-2025, Chris Wensley et al, -->
<!-- School of Computer Science, Bangor University, U.K. -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -166,81 +166,121 @@ These constructions use Tietze transformation routines in
the library file <C>tietze.gi</C>.
<P/>
As a first, surjective example, we take for <M>\calX</M>
the normal inclusion crossed module of <C>a4</C> in <C>s4</C>,
and for <M>\iota</M> the surjection from <C>s4</C> to <C>s3</C>
with kernel <C>k4</C>.
The induced crossed module is isomorphic to <C>X3 = [c3->s3]</C>.
a central extension crossed module of dihedral groups,
<M>(d_{24} \to d_{12})</M>,
and for <M>\iota</M> a surjection <M>d_{12} \to s_3</M>
with kernel <M>c_2</M>.
The induced crossed module is isomorphic to <M>(d_{12} \to s_3)</M>.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> s4gens := GeneratorsOfGroup( s4 );
[ (1,2), (2,3), (3,4) ]
gap> a4gens := GeneratorsOfGroup( a4 );
[ (1,2,3), (2,3,4) ]
gap> s3b := Group( (5,6),(6,7) );; SetName( s3b, "s3b" );
gap> epi := GroupHomomorphismByImages( s4, s3b, s4gens, [(5,6),(6,7),(5,6)] );;
gap> X4 := XModByNormalSubgroup( s4, a4 );;
gap> indX4 := InducedXModBySurjection( X4, epi );
[a4/ker->s3b]
gap> Display( indX4 );

Crossed module [a4/ker->s3b] :-
: Source group a4/ker has generators:
[ (1,3,2), (1,2,3) ]
: Range group s3b has generators:
[ (5,6), (6,7) ]
gap> a := (6,7,8,9)(10,11,12);; b := (7,9)(11,12);;
gap> d24 := Group( [ a, b ] );;
gap> SetName( d24, "d24" );
gap> c := (1,2)(3,4,5);; d := (4,5);;
gap> d12 := Group( [ c, d ] );;
gap> SetName( d12, "d12" );
gap> bdy := GroupHomomorphismByImages( d24, d12, [a,b], [c,d] );;
gap> X24 := XModByCentralExtension( bdy );
[d24->d12]
gap> e := (13,14,15);; f := (14,15);;
gap> s3 := Group( [ e, f ] );;
gap> SetName( s3, "s3" );;
gap> epi := GroupHomomorphismByImages( d12, s3, [c,d], [e,f] );;
gap> iX24 := InducedXModBySurjection( X24, epi );
[d24/ker->s3]
gap> Display( iX24 );
Crossed module [d24/ker->s3] :-
: Source group d24/ker has generators:
[ ( 1,11, 5, 4,10, 8)( 2,12, 6, 3, 9, 7),
( 1, 2)( 3, 4)( 5, 9)( 6,10)( 7,11)( 8,12) ]
: Range group s3 has generators:
[ (13,14,15), (14,15) ]
: Boundary homomorphism maps source generators to:
[ (5,6,7), (5,7,6) ]
[ (13,14,15), (14,15) ]
: Action homomorphism maps range generators to automorphisms:
(5,6) --> { source gens --> [ (1,2,3), (1,3,2) ] }
(6,7) --> { source gens --> [ (1,2,3), (1,3,2) ] }
(13,14,15) --> { source gens --> [ ( 1,11, 5, 4,10, 8)( 2,12, 6, 3, 9, 7),
( 1, 6)( 2, 5)( 3, 8)( 4, 7)( 9,10)(11,12) ] }
(14,15) --> { source gens --> [ ( 1, 8,10, 4, 5,11)( 2, 7, 9, 3, 6,12),
( 1, 2)( 3, 4)( 5, 9)( 6,10)( 7,11)( 8,12) ] }
These 2 automorphisms generate the group of automorphisms.

gap> morX4 := MorphismOfInducedXMod( indX4 );
[[a4->s4] => [a4/ker->s3b]]
gap> morX24 := MorphismOfInducedXMod( iX24 );
[[d24->d12] => [d24/ker->s3]]
]]>
</Example>

For a second, injective example we take for <M>\calX</M>
the automorphism crossed module <C>XAq8</C> of <Ref Oper="CoproductXMod"/>,
and for <M>\iota</M> an inclusion of <C>s4b</C> in <C>s5</C>.
The resulting source group is <C>SL(2,5)</C>.
the result <C>iX24</C> of the previous example
and for <M>\iota</M> an inclusion of <M>s_3</M> in <M>s_4</M>.
The resulting source group has size <M>96</M>.
<P/>
<Example>
<![CDATA[
gap> iso4 := IsomorphismGroups( s4b, s4 );;
gap> s5 := Group( (1,2,3,4,5), (4,5) );;
gap> SetName( s5, "s5" );
gap> inc45 := InclusionMappingGroups( s5, s4 );;
gap> iota45 := iso4 * inc45;;
gap> indXAq8 := InducedXMod( XAq8, iota45 );
i*(XAq8)
gap> Size2d( indXAq8 );
[ 120, 120 ]
gap> StructureDescription( indXAq8 );
[ "SL(2,5)", "S5" ]
gap> g := (16,17,18);; h := (16,17,18,19);;
gap> s4 := Group( [ g, h ] );;
gap> SetName( s4, "s4" );;
gap> iota := GroupHomomorphismByImages( s3, s4, [e,f], [g^2*h^2,g*h^-1] );
[ (13,14,15), (14,15) ] -> [ (17,18,19), (18,19) ]
gap> iiX24 := InducedXModByCopower( iX24, iota, [ ] );
i*([d24/ker->s3])
gap> Size2d( iiX24 );
[ 96, 24 ]
gap> StructureDescription( iiX24 );
[ "C2 x GL(2,3)", "S4" ]
]]>
</Example>

For a third example we use the version <C>InducedXMod(Q,R,S)</C>
of this global function, with <M>Q \geqslant R \unrhd S</M>.
We take the identity mapping on <C>s3c</C> as boundary,
and the inclusion of <C>s3c</C> in <C>s4</C> as <M>\iota</M>.
The induced group is a general linear group <C>GL(2,3)</C>.
For a third example we combine the previous two examples by
taking for <M>\iota</M> the more general case <C>alpha = theta*iota</C>.
The resulting <C>jX24</C> is isomorphic to,
but not identical to, <C>iiX24</C>.
<P/>
<Example>
<![CDATA[
gap> s3c := Subgroup( s4, [ (2,3), (3,4) ] );;
gap> SetName( s3c, "s3c" );
gap> indXs3c := InducedXMod( s4, s3c, s3c );
i*([s3c->s3c])
gap> StructureDescription( indXs3c );
[ "GL(2,3)", "S4" ]
gap> alpha := CompositionMapping( iota, epi );
[ (1,2)(3,4,5), (4,5) ] -> [ (17,18,19), (18,19) ]
gap> jX24 := InducedXMod( X24, alpha );;
gap> StructureDescription( jX24 );
[ "C2 x GL(2,3)", "S4" ]
]]>
</Example>

For a fourth example we use the version <C>InducedXMod(Q,R,S)</C>
of this global function, with a normal inclusion crossed module
<M>(S \to R)</M> and an inclusion mapping <M>R \to Q</M>.
We take <M>(c_6 \to d_{12})</M> as <M>\calX</M>
and the inclusion of <M>d_{12}</M> in <M>d_{24}</M> as <M>\iota</M>.
<P/>
<Example>
<![CDATA[
## Section 7.2.1 : Example 4
gap> d12b := Subgroup( d24, [ a^2, b ] );;
gap> SetName( d12b, "d12b" );
gap> c6b := Subgroup( d12b, [ a^2 ] );;
gap> SetName( c6b, "c6b" );
gap> X12 := InducedXMod( d24, d12b, c6b );
i*([c6b->d12b])
gap> StructureDescription( X12 );
[ "C6 x C6", "D24" ]
gap> Display( MorphismOfInducedXMod( X12 ) );
Morphism of crossed modules :-
: Source = [c6b->d12b] with generating sets:
[ ( 6, 8)( 7, 9)(10,12,11) ]
[ ( 6, 8)( 7, 9)(10,12,11), ( 7, 9)(11,12) ]
: Range = i*([c6b->d12b]) with generating sets:
[ ( 4, 5)( 6, 7)( 8, 9)(10,11)(12,13)(14,15),
( 4, 6, 8)( 5, 7, 9)(10,12,14)(11,13,15),
( 4,10)( 5,11)( 6,12)( 7,13)( 8,14)( 9,15), (1,2,3) ]
[ ( 6, 7, 8, 9)(10,11,12), ( 7, 9)(11,12) ]
: Source Homomorphism maps source generators to:
[ ( 4, 9, 6, 5, 8, 7)(10,15,12,11,14,13) ]
: Range Homomorphism maps range generators to:
[ ( 6, 8)( 7, 9)(10,12,11), ( 7, 9)(11,12) ]
#]]>
</Example>

<ManSection>
<Oper Name="AllInducedXMods"
Arg="Q" />
Expand All @@ -254,13 +294,11 @@ and <C>S</C> runs over all non-trivial normal subgroups of <C>R</C>.
<Example>
<![CDATA[
gap> all := AllInducedXMods( q8 );;
gap> ids := List( all, x -> IdGroup(x) );;
gap> Sort( ids );
gap> ids;
[ [ [ 1, 1 ], [ 8, 4 ] ], [ [ 1, 1 ], [ 8, 4 ] ], [ [ 1, 1 ], [ 8, 4 ] ],
[ [ 1, 1 ], [ 8, 4 ] ], [ [ 4, 2 ], [ 8, 4 ] ], [ [ 4, 2 ], [ 8, 4 ] ],
[ [ 4, 2 ], [ 8, 4 ] ], [ [ 16, 2 ], [ 8, 4 ] ], [ [ 16, 2 ], [ 8, 4 ] ],
[ [ 16, 2 ], [ 8, 4 ] ], [ [ 16, 14 ], [ 8, 4 ] ] ]
gap> L := List( all, x -> Source( x ) );;
gap> Sort( L, function(g,h) return Size(g) < Size(h); end );;
gap> List( L, x -> StructureDescription( x ) );
[ "1", "1", "1", "1", "C2 x C2", "C2 x C2", "C2 x C2", "C4 x C4", "C4 x C4",
"C4 x C4", "C2 x C2 x C2 x C2" ]
]]>
</Example>

Expand Down
9 changes: 7 additions & 2 deletions 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-2022, Chris Wensley et al, -->
<!-- Copyright (C) 1996-2024, Chris Wensley et al, -->
<!-- School of Computer Science, Bangor University, U.K. -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -360,7 +360,12 @@ The crossed pairing is given by
<Display>
\boxtimes \;:\; R \times W \,\to\, S, \quad (r,\chi) \,\mapsto\, \chi r~.
</Display>
This is implemented as <C>ActorCrossedSquare(X0);</C>.
This is implemented as <C>ActorCrossedSquare(X0)</C>.
<P/>
The example constructs <C>XSact</C>, the actor crossed square
of the crossed module <C>X20</C>.
This crossed square is converted to a cat<M>^2</M>-group <C>C2act</C>
in section <Ref Sect="cat2-xsq"/>.
</Description>
</ManSection>
<P/>
Expand Down
21 changes: 12 additions & 9 deletions lib/gp2ind.gd
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
###############################################################################
##############################################################################
##
#W gp2ind.gd GAP4 package `XMod' Chris Wensley
#W gp2ind.gd GAP4 package `XMod' Chris Wensley
##
#Y Copyright (C) 2001-2020, Chris Wensley et al,
#Y Copyright (C) 2001-2024, Chris Wensley et al,
#Y School of Computer Science, Bangor University, U.K.
##
## This file declares functions for induced crossed modules.
Expand Down Expand Up @@ -37,7 +37,7 @@

#############################################################################
##
## #A InducedXModData( <IX> )
#A InducedXModData( <IX> )
##
## DeclareAttribute( "InducedXModData", Is2DimensionalDomain, "mutable" );

Expand Down Expand Up @@ -73,17 +73,20 @@ DeclareAttribute( "MorphismOfInducedXMod", IsInducedXMod );
#O InducedXModFromTrivialRange( <xmod>, <hom> )
##
DeclareGlobalFunction( "InducedXMod" );
DeclareOperation( "InducedXModBySurjection", [ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModByCoproduct", [ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModByBijection", [ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModBySurjection",
[ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModByCoproduct",
[ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModByBijection",
[ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModByCopower",
[ IsXMod, IsGroupHomomorphism, IsList ] );
DeclareOperation( "InducedXModFromTrivialSource",
[ IsXMod, IsGroupHomomorphism ] );
DeclareOperation( "InducedXModFromTrivialRange",
[ IsXMod, IsGroupHomomorphism ] );

##############################################################################
#############################################################################
##
#F InducedCat1Group( <args> )
#O InducedCat1Data( <grp>, <hom>, <trans> )
Expand All @@ -94,7 +97,7 @@ DeclareOperation( "InducedCat1Data",
[ IsCat1Group, IsGroupHomomorphism, IsList ] );
DeclareOperation( "InducedCat1GroupByFreeProduct", [ IsList ] );

##############################################################################
#############################################################################
##
#O AllInducedXMods( <grp> )
#O AllInducedCat1Groups( <grp> )
Expand Down
Loading
Loading