Skip to content
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
2 changes: 1 addition & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## CHANGES to the 'XMod' package

## 2.96 -> 2.97-dev (04/12/2025)
## 2.96 -> 2.97 (10/12/2025)
* (04/12/25) remove various unused categories etc in dom2dnd.gd
* (03/12/25) comment out use of Ancestor - it is no longer defined in groupoids

Expand Down
33 changes: 17 additions & 16 deletions doc/gpd2obj.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,16 @@ In the example the crossed module <C>DX4</C> has discrete source,
while the crossed module <C>CX4</C> has connected source.
These are groupoid generalisations of <Ref Oper="XModByNormalSubgroup"/>
and the example <C>X4</C> in <Ref Oper="NormalSubXMods"/>.
<P/>
These calculations are WRONG!
Need more investigation of <C>XModAction</C>.
<!-- ------------------------------------------------------------------- -->
<!-- At one time I thought that: These calculations are WRONG! -->
<!-- and: Need more investigation of <C>XModAction</C>. -->
<!-- but they do seem to be correct after all! -->
<!-- ------------------------------------------------------------------- -->
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> X4 := XModByNormalSubgroup( s4, a4 );;
gap> CX4 := SinglePiecePreXModWithObjects( X4, [-6,-5,-4], false );
single piece precrossed module with objects
source groupoid:
Expand Down Expand Up @@ -102,7 +103,7 @@ The precrossed module <C>CX4</C> belongs to the category
<P/>
<Example>
<![CDATA[
gap> Set( KnownPropertiesOfObject( CX4 ) );
gap> Set( KnownPropertiesOfObject( CX4 ) );
[ "CanEasilyCompareElements", "CanEasilySortElements", "IsAssociative",
"IsDuplicateFree", "IsGeneratorsOfSemigroup", "IsPreXModWithObjects",
"IsSinglePieceDomain", "IsXModWithObjects" ]
Expand All @@ -127,7 +128,7 @@ they were constructed.
<![CDATA[
gap> IsPermPreXModWithObjects( CX4 );
true
gap> IsPcPreXModWithObjects( CX4 );
gap> IsPcPreXModWithObjects( CX4 );
false
gap> IsFpPreXModWithObjects( CX4 );
false
Expand All @@ -142,8 +143,8 @@ false
<Description>
<Index>ObjectList</Index>
The attributes of a precrossed module with objects include the standard
<C>Source</C>; <C>Range</C>;
<Ref Attr="Boundary" Label="for crossed modules"/>;
<C>Source</C>; <C>Range</C>;
<Ref Attr="Boundary" Label="for crossed modules"/>;
and <Ref Meth="XModAction" Label="for crossed modules of groups"/>
as with precrossed modules of groups.
There is also <C>ObjectList</C>,
Expand All @@ -160,13 +161,13 @@ where the group is the automorphism group of the range groupoid.
<P/>
<Example>
<![CDATA[
gap> Root2dGroup( CX4 );
gap> Root2dGroup( CX4 );
[a4->s4]
gap> actC := XModAction( CX4 );;
gap> Size( Range( actC ) );
gap> actC := XModAction( CX4 );;
gap> Size( Range( actC ) );
20736
gap> r1 := Arrow( Cs4, (1,2,3,4), -4, -5 );;
gap> ImageElm( actC, r1 );
gap> r1 := Arrow( Cs4, (1,2,3,4), -4, -5 );;
gap> ir1 := ImageElm( actC, r1 );
[groupoid homomorphism : Ca4 -> Ca4
[ [ [(1,2,3) : -6 -> -6], [(2,3,4) : -6 -> -6], [() : -6 -> -5],
[() : -6 -> -4] ],
Expand All @@ -177,12 +178,12 @@ gap> ## calculate s1^r1
gap> ims1 := ImageElmXModAction( CX4, s1, r1 );
[(1,2,3) : -6 -> -6]
gap> ## repeat using DX4
gap> actD := XModAction( DX4 );;
gap> actD := XModAction( DX4 );;
gap> SetName( Range( actD ), "autD" );
gap> Size( Range( actD ) );
82944
gap> r2 := Arrow( Ds4, (1,2,3,4), -7, -8 );;
gap> ImageElm( actD, r2 );
gap> r2 := Arrow( Ds4, (1,2,3,4), -7, -8 );;
gap> ImageElm( actD, r2 );
[groupoid homomorphism : Da4 -> Da4
: 0 -> 0]
gap> s2 := Arrow( Da4, (1,2,4), -8, -8 );;
Expand Down
38 changes: 19 additions & 19 deletions tst/manual/gpd2obj.tst
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
#Y Copyright (C) 2001-2025, Chris Wensley et al,
##
gap> START_TEST( "XMod package: gpd2obj.tst" );
gap> saved_infolevel_xmod := InfoLevel( InfoXMod );;
gap> saved_infolevel_xmod := InfoLevel( InfoXMod );;
gap> SetInfoLevel( InfoXMod, 0 );;

## make this test independent of gp2obj.tst
gap> s4 := Group( (1,2), (2,3), (3,4) );;
gap> a4 := Subgroup( s4, [ (1,2,3), (2,3,4) ] );;
gap> SetName( s4, "s4" ); SetName( a4, "a4" );
gap> s4 := Group( (1,2), (2,3), (3,4) );;
gap> a4 := Subgroup( s4, [ (1,2,3), (2,3,4) ] );;
gap> SetName( s4, "s4" ); SetName( a4, "a4" );
gap> X4 := XModByNormalSubgroup( s4, a4 );;



## Chapter 10

## Subsection 10.1.1
## Subsection 10.1.2
gap> CX4 := SinglePiecePreXModWithObjects( X4, [-6,-5,-4], false );
single piece precrossed module with objects
source groupoid:
Expand All @@ -38,28 +38,28 @@ gap> SetName( DX4, "DX4" );
gap> Da4 := Source( DX4 );; SetName( Da4, "Da4" );
gap> Ds4 := Range( DX4 );; SetName( Ds4, "Ds4" );

## Subsection 10.1.2
gap> Set( KnownPropertiesOfObject( CX4 ) );
## Subsection 10.1.3
gap> Set( KnownPropertiesOfObject( CX4 ) );
[ "CanEasilyCompareElements", "CanEasilySortElements", "IsAssociative",
"IsDuplicateFree", "IsGeneratorsOfSemigroup", "IsPreXModWithObjects",
"IsSinglePieceDomain", "IsXModWithObjects" ]

## Subsection 10.1.3
## Subsection 10.1.4
gap> IsPermPreXModWithObjects( CX4 );
true
gap> IsPcPreXModWithObjects( CX4 );
gap> IsPcPreXModWithObjects( CX4 );
false
gap> IsFpPreXModWithObjects( CX4 );
false

## Subsection 10.1.4
gap> Root2dGroup( CX4 );
## Subsection 10.1.5
gap> Root2dGroup( CX4 );
[a4->s4]
gap> actC := XModAction( CX4 );;
gap> Size( Range( actC ) );
gap> actC := XModAction( CX4 );;
gap> Size( Range( actC ) );
20736
gap> r1 := Arrow( Cs4, (1,2,3,4), -4, -5 );;
gap> ImageElm( actC, r1 );
gap> r1 := Arrow( Cs4, (1,2,3,4), -4, -5 );;
gap> ir1 := ImageElm( actC, r1 );
[groupoid homomorphism : Ca4 -> Ca4
[ [ [(1,2,3) : -6 -> -6], [(2,3,4) : -6 -> -6], [() : -6 -> -5],
[() : -6 -> -4] ],
Expand All @@ -70,18 +70,18 @@ gap> ## calculate s1^r1
gap> ims1 := ImageElmXModAction( CX4, s1, r1 );
[(1,2,3) : -6 -> -6]
gap> ## repeat using DX4
gap> actD := XModAction( DX4 );;
gap> actD := XModAction( DX4 );;
gap> SetName( Range( actD ), "autD" );
gap> Size( Range( actD ) );
82944
gap> r2 := Arrow( Ds4, (1,2,3,4), -7, -8 );;
gap> ImageElm( actD, r2 );
gap> r2 := Arrow( Ds4, (1,2,3,4), -7, -8 );;
gap> ImageElm( actD, r2 );
[groupoid homomorphism : Da4 -> Da4
: 0 -> 0]
gap> s2 := Arrow( Da4, (1,2,4), -8, -8 );;
gap> ## calculate s2^r2
gap> ims2 := ImageElmXModAction( DX4, s2, r2 );
[(1,2,3) : -9 -> -9]

gap> SetInfoLevel( InfoXMod, saved_infolevel_xmod );;
gap> SetInfoLevel( InfoXMod, saved_infolevel_xmod );;
gap> STOP_TEST( "gpd2obj.tst", 10000 );