diff --git a/CHANGES.md b/CHANGES.md index d84cf79..9e3c8c9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -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 diff --git a/doc/gpd2obj.xml b/doc/gpd2obj.xml index a235bb3..86f845a 100644 --- a/doc/gpd2obj.xml +++ b/doc/gpd2obj.xml @@ -57,15 +57,16 @@ In the example the crossed module DX4 has discrete source, while the crossed module CX4 has connected source. These are groupoid generalisations of and the example X4 in . -

-These calculations are WRONG! -Need more investigation of XModAction. + + + + +

X4 := XModByNormalSubgroup( s4, a4 );; gap> CX4 := SinglePiecePreXModWithObjects( X4, [-6,-5,-4], false ); single piece precrossed module with objects source groupoid: @@ -102,7 +103,7 @@ The precrossed module CX4 belongs to the category

Set( KnownPropertiesOfObject( CX4 ) ); +gap> Set( KnownPropertiesOfObject( CX4 ) ); [ "CanEasilyCompareElements", "CanEasilySortElements", "IsAssociative", "IsDuplicateFree", "IsGeneratorsOfSemigroup", "IsPreXModWithObjects", "IsSinglePieceDomain", "IsXModWithObjects" ] @@ -127,7 +128,7 @@ they were constructed. IsPermPreXModWithObjects( CX4 ); true -gap> IsPcPreXModWithObjects( CX4 ); +gap> IsPcPreXModWithObjects( CX4 ); false gap> IsFpPreXModWithObjects( CX4 ); false @@ -142,8 +143,8 @@ false ObjectList The attributes of a precrossed module with objects include the standard -Source; Range; -; +Source; Range; +; and as with precrossed modules of groups. There is also ObjectList, @@ -160,13 +161,13 @@ where the group is the automorphism group of the range groupoid.

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] ], @@ -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 );; diff --git a/tst/manual/gpd2obj.tst b/tst/manual/gpd2obj.tst index e7f93ae..2e00fbe 100644 --- a/tst/manual/gpd2obj.tst +++ b/tst/manual/gpd2obj.tst @@ -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: @@ -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] ], @@ -70,12 +70,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 );; @@ -83,5 +83,5 @@ 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 );