From f932b52d742173e90136f4cecb5c02dad6c1a63a Mon Sep 17 00:00:00 2001 From: cdwensley Date: Sun, 2 Nov 2025 15:46:01 +0000 Subject: [PATCH 1/3] version 2.96 release --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index e07774b..99646b8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ ## CHANGES to the 'XMod' package -## 2.95 -> 2.96 (01/11/2025) +## 2.95 -> 2.96 (02/11/2025) * (02/11/25) change of address: Murat Alp now in Kuwait * (13/09/25) now make groupoids v1.78 a prerequisite From b3308d2cb27ae643cd67028855d7b50acb78dc44 Mon Sep 17 00:00:00 2001 From: cdwensley Date: Wed, 3 Dec 2025 16:46:34 +0000 Subject: [PATCH 2/3] make groupoids-1.81 a requirement --- CHANGES.md | 3 +++ PackageInfo.g | 6 +++--- lib/gpd2obj.gi | 22 +++++++--------------- tst/manual/gpd2obj.tst | 11 ++++++++--- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 99646b8..dca8871 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,8 @@ ## CHANGES to the 'XMod' package +## 2.96 -> 2.97-dev (03/12/2025) + * comment out use of Ancestor since this is no longer defined in groupoids + ## 2.95 -> 2.96 (02/11/2025) * (02/11/25) change of address: Murat Alp now in Kuwait * (13/09/25) now make groupoids v1.78 a prerequisite diff --git a/PackageInfo.g b/PackageInfo.g index 1ba32c8..d3d3948 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -7,8 +7,8 @@ SetPackageInfo( rec( PackageName := "XMod", Subtitle := "Crossed Modules and Cat1-Groups", -Version := "2.96", -Date := "02/11/2025", # dd/mm/yyyy format +Version := "2.96-dev", +Date := "03/12/2025", # dd/mm/yyyy format License := "GPL-2.0-or-later", Persons := [ @@ -95,7 +95,7 @@ PackageDoc := rec( Dependencies := rec( GAP := ">=4.11.0", NeededOtherPackages := [ ["utils", ">= 0.81"], - ["groupoids", ">= 1.78"], + ["groupoids", ">= 1.81"], ["HAP", ">= 1.29"], ["AutPGrp", ">= 1.10.2"], ["SmallGrp", ">= 1.4.2" ] ], diff --git a/lib/gpd2obj.gi b/lib/gpd2obj.gi index 0ef5613..ee01bbd 100644 --- a/lib/gpd2obj.gi +++ b/lib/gpd2obj.gi @@ -190,13 +190,11 @@ function( px, obs, isdisc ) spx := Source( px ); rpx := Range( px ); rng := SinglePieceGroupoid( rpx, obs ); -## Print( "rng = ", rng, "\n" ); if isdisc then src := HomogeneousDiscreteGroupoid( spx, obs ); else src := SinglePieceGroupoid( spx, obs ); fi; -## Print( "src = ", src, "\n" ); ## construct the boundary gens := GeneratorsOfGroupoid( src ); genr := GeneratorsOfGroupoid( rng ); @@ -210,14 +208,13 @@ function( px, obs, isdisc ) a := gens[i]; if ( a![3] = a![4] ) then im := ImageElm( bpx, a![2] ); - imbdy[i] := ArrowNC( src, true, im, a![3], a![4] ); + imbdy[i] := ArrowNC( src, 1,im, a![3], a![4] ); else - imbdy[i] := ArrowNC( src, true, One(rpx), a![3], a![4] ); + imbdy[i] := ArrowNC( src, 1, One(rpx), a![3], a![4] ); fi; od; bdy := GroupoidHomomorphismFromSinglePiece( src, rng, gens, imbdy ); fi; -## Print( "boundary = ", bdy, "\n" ); ## now construct the action apx := XModAction( px ); AS := AutomorphismGroupOfGroupoid( src ); @@ -235,7 +232,6 @@ function( px, obs, isdisc ) fi; if ( q = 1 ) then ## a loop aut := ImageElm( apx, g ); -## Print( "aut = ", aut, "\n" ); if not isdisc then h := GroupoidAutomorphismByGroupAuto(src, aut); else @@ -248,11 +244,9 @@ function( px, obs, isdisc ) imobs[q] := ro; h := GroupoidAutomorphismByObjectPerm( src, imobs ); fi; -## Print( "h = ", h, "\n" ); - imact[i] := Arrow( AS0, h, 0, 0 ); + imact[i] := ArrowNC( AS0, 1, h, 0, 0 ); od; act := GroupoidHomomorphism( rng, AS0, genr, imact ); -## Print( "act = ", act, "\n" ); pxo := PreXModWithObjectsByBoundaryAndAction( bdy, act ); SetRoot2dGroup( pxo, px ); return pxo; @@ -278,7 +272,7 @@ InstallOtherMethod( UnionOfPiecesOp, "method for list of prexmods with objects", true, [ IsList, Is2DimensionalGroupWithObjects ], 0, function( comps, c1 ) - local len, c, obs, obc, pieces, L, fam, filter, xwo, i, par; + local len, c, obs, obc, pieces, L, fam, filter, xwo, i, plist, par; if not ForAll( comps, c -> "Is2DimensionalGroupWithObjects" in CategoriesOfObject( c ) ) then @@ -315,11 +309,9 @@ function( comps, c1 ) xwo := Objectify( PreXModWithPiecesType, rec () ); SetIsSinglePieceDomain( xwo, false ); SetPieces( xwo, pieces ); - if HasParent( pieces[1] ) then - par := Ancestor( pieces[1] ); - if ForAll( pieces, c -> ( Ancestor( c ) = par ) ) then - SetParent( xwo, par ); - fi; + if HasParent( pieces[1] ) then + plist := ParentList( pieces[1] ); + par := plist[ Length( plist) ]; fi; if ForAll( pieces, p -> HasIsXMod(p) and IsXMod(p) ) then SetIsXModWithObjects( xwo, true ); diff --git a/tst/manual/gpd2obj.tst b/tst/manual/gpd2obj.tst index 547f2cd..e7f93ae 100644 --- a/tst/manual/gpd2obj.tst +++ b/tst/manual/gpd2obj.tst @@ -8,12 +8,17 @@ gap> START_TEST( "XMod package: gpd2obj.tst" ); 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> X4 := XModByNormalSubgroup( s4, a4 );; + + + ## Chapter 10 ## Subsection 10.1.1 -gap> a4 := Subgroup( s4, [ (1,2,3), (2,3,4) ] );; -gap> SetName( a4, "a4" ); -gap> X4 := XModByNormalSubgroup( s4, a4 );; gap> CX4 := SinglePiecePreXModWithObjects( X4, [-6,-5,-4], false ); single piece precrossed module with objects source groupoid: From f921072a6a5f622077ea35f8addaff297915f0da Mon Sep 17 00:00:00 2001 From: cdwensley Date: Thu, 4 Dec 2025 10:08:55 +0000 Subject: [PATCH 3/3] dom2dnd.gd simplified and dom2dnd.gi removed --- CHANGES.md | 5 +-- lib/dom2dnd.gd | 89 +++----------------------------------------------- lib/dom2dnd.gi | 80 --------------------------------------------- lib/map2dnd.gd | 10 +----- lib/map2dnd.gi | 21 +----------- 5 files changed, 10 insertions(+), 195 deletions(-) delete mode 100644 lib/dom2dnd.gi diff --git a/CHANGES.md b/CHANGES.md index dca8871..d84cf79 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,8 @@ ## CHANGES to the 'XMod' package -## 2.96 -> 2.97-dev (03/12/2025) - * comment out use of Ancestor since this is no longer defined in groupoids +## 2.96 -> 2.97-dev (04/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 ## 2.95 -> 2.96 (02/11/2025) * (02/11/25) change of address: Murat Alp now in Kuwait diff --git a/lib/dom2dnd.gd b/lib/dom2dnd.gd index 0b33e67..e93bf93 100644 --- a/lib/dom2dnd.gd +++ b/lib/dom2dnd.gd @@ -16,19 +16,11 @@ DeclareInfoClass( "InfoXMod" ); ############################################################################# ## #C IsHigherDimensionalDomain( ) . . . . test if object is n-dim domain -#F MakeHigherDimensionalDomain( , ) -## -DeclareCategory( "IsHigherDimensionalDomain", IsDomain ); -DeclareGlobalFunction( "MakeHigherDimensionalDomain" ); - -###################### HIGHER DIMENSIONAL MAGMAS ########################## - -############################################################################# -## #C IsHigherDimensionalMagma( ) . . . . . . . category of n-dim magmas #C IsHigherDimensionalMagmaWithOne( ) . . . . . . . . . . . with one #C IsHigherDimensionalMagmaWithInverses( ) . . . . . . . and inverses -## +## +DeclareCategory( "IsHigherDimensionalDomain", IsDomain ); DeclareCategory( "IsHigherDimensionalMagma", IsHigherDimensionalDomain and CategoryCollections( IsMultiplicativeElement ) ); DeclareCategoryCollections( "IsHigherDimensionalMagma" ); @@ -38,44 +30,6 @@ DeclareCategory( "IsHigherDimensionalMagmaWithInverses", IsHigherDimensionalMagmaWithOne and CategoryCollections( IsMultiplicativeElementWithInverse ) ); -############################################################################# -## -#V FamilyHigherDimensionalMagma . . . . family for higher dimensional magmas -## -BindGlobal( "FamilyHigherDimensionalMagma", - NewFamily( "FamilyHigherDimensionalMagma", IsHigherDimensionalMagma, - CanEasilySortElements, CanEasilySortElements ) ); - -############################################################################ -## -#F MakeHigherDimensionalMagma( , ) -## -DeclareGlobalFunction( "MakeHigherDimensionalMagma" ); - - -################ HIGHER DIMENSIONAL SEMIGROUPS and MONOIDS ################## - -############################################################################# -## -#C IsHigherDimensionalSemigroup( ) -#F MakeHigherDimensionalSemigroup( , ) -#O SinglePieceHigherDimensionalSemigroup( , ) -## -DeclareCategory( "IsHigherDimensionalSemigroup", - IsHigherDimensionalMagma and CategoryCollections( IsAssociativeElement ) ); -DeclareGlobalFunction( "MakeHigherDimensionalSemigroup" ); - -############################################################################# -## -#C IsHigherDimensionalMonoid( ) -#F MakeHigherDimensionalMonoid( , ) -#O SinglePieceHigherDimensionalMonoid( , ) -## -DeclareCategory( "IsHigherDimensionalMonoid", - IsHigherDimensionalMagmaWithOne - and CategoryCollections(IsAssociativeElement) ); -DeclareGlobalFunction( "MakeHigherDimensionalMonoid" ); - ######################## HIGHER DIMENSIONAL GROUPS ######################## ## A *higher dimensional group* is a higher dimensional magma where @@ -128,7 +82,7 @@ DeclareAttribute( "DirectProductHigherDimensionalInfo", ############################################################################# ## -#C Is2DimensionalDomain( ) . . test if object is a 2Dimensional-domain +#C Is2DimensionalDomain( ) . . . . . . test if object is a 2d-domain #F Make2DimensionalDomain( , ) ## DeclareCategory( "Is2DimensionalDomain", IsHigherDimensionalDomain ); @@ -138,7 +92,7 @@ DeclareGlobalFunction( "Make2DimensionalDomain" ); ############################################################################# ## -#C Is2DimensionalMagma( ) . . . . . . category of 2Dimensional magmas +#C Is2DimensionalMagma( ) . . . . . . . . . . . category of 2d-magmas #C Is2DimensionalMagmaWithOne( ) . . . . . . . . . . . . . . with one #C Is2DimensionalMagmaWithInverses( ) . . . . . . . . . and inverses ## @@ -153,45 +107,12 @@ DeclareCategory( "Is2DimensionalMagmaWithInverses", ############################################################################# ## -#V Family2DimensionalMagma . . . . . . . . . family for 2Dimensional-magmas +#V Family2DimensionalMagma . . . . . . . . . . . . . . family for 2d-magmas ## BindGlobal( "Family2DimensionalMagma", NewFamily( "Family2DimensionalMagma", Is2DimensionalMagma, CanEasilySortElements, CanEasilySortElements ) ); -############################################################################ -## -#F Make2DimensionalMagma( , ) -## -DeclareGlobalFunction( "Make2DimensionalMagma" ); - - -################## 2 DIMENSIONAL SEMIGROUPS and MONOIDS ##################### - -############################################################################# -## -#C Is2DimensionalSemigroup( <2dmag> ) -#F Make2DimensionalSemigroup( , ) -#O SinglePiece2DimensionalSemigroup( , ) -## -DeclareCategory( "Is2DimensionalSemigroup", - Is2DimensionalMagma and CategoryCollections( IsAssociativeElement ) ); -DeclareGlobalFunction( "Make2DimensionalSemigroup" ); -## DeclareOperation( "SinglePiece2DimensionalSemigroup", -## [ IsSemigroup, IsCollection ] ); - -############################################################################# -## -#C Is2DimensionalMonoid( <2dmagma> ) -#F Make2DimensionalMonoid( , ) -#O SinglePiece2DimensionalMonoid( , ) -## -DeclareCategory( "Is2DimensionalMonoid", - Is2DimensionalMagmaWithOne and CategoryCollections(IsAssociativeElement) ); -DeclareGlobalFunction( "Make2DimensionalMonoid" ); -## DeclareOperation( "SinglePiece2DimensionalMonoid", -## [ IsMonoid, IsCollection ] ); - ########################## 2 DIMENSIONAL GROUPS ########################### diff --git a/lib/dom2dnd.gi b/lib/dom2dnd.gi deleted file mode 100644 index de734cd..0000000 --- a/lib/dom2dnd.gi +++ /dev/null @@ -1,80 +0,0 @@ -############################################################################## -## -#W dom2dnd.gi GAP4 package `XMod' Chris Wensley -## -#Y Copyright (C) 2001-2020, Chris Wensley et al, - - -########################### DOMAIN WITH OBJECTS ########################### - -################################ MAGMAS ################################### - -############################################################################# -## -#F Make2DimensionalMagma( , ) -## -InstallGlobalFunction( Make2DimensionalMagma, function( arg ) - - local obs, mag; - - Print( "Usage: Make2DimensionalMagma( , )" ); - Print( " (but not yet installed\n" ); - return fail; -end ); - -############################################################################# -## -#M \=( , ) . . . . . . . test if two 2Dimensional-magmas are equal -## -InstallMethod( \=, "for 2Dimensional-magmas", IsIdenticalObj, - [ Is2DimensionalMagma, Is2DimensionalMagma ], 0, -function ( m1, m2 ) - local i, p1, p2; - Print( " (not yet installed)\n" ); - return fail; -end ); - - -################################# SUBDOMAINS ############################## - -############################################################################# -## -#F IsSub2DimensionalDomain( , ) -## -InstallMethod( IsSub2DimensionalDomain, "for two 2Dimensional-domains", true, - [ Is2DimensionalDomain, Is2DimensionalDomain ], 0, -function( D, U ) - local compU, obj, p, ok; - Print( " (not yet installed)\n" ); - return fail; -end ); - - -################################ SEMIGROUPS ############################### - -############################################################################# -## -#F Make2DimensionalSemigroup( , ) -## -InstallGlobalFunction( Make2DimensionalSemigroup, function( arg ) - - local obs, sgp; - Print( "Usage: Make2DimensionalSemigroup( , )" ); - Print( " (but not yet installed)\n" ); - return fail; -end ); - - -################################## MONOIDS ################################ - -############################################################################# -## -#F Make2DimensionalMonoid( , ) -## -InstallGlobalFunction( Make2DimensionalMonoid, function( arg ) - - local obs, mon; - Print( "Usage: Make2DimensionalMonoid( , )" ); - Print( " (but not yet installed)\n" ); - return fail; -end ); diff --git a/lib/map2dnd.gd b/lib/map2dnd.gd index 82eb21f..87cb394 100644 --- a/lib/map2dnd.gd +++ b/lib/map2dnd.gd @@ -2,7 +2,7 @@ ## #W map2dnd.gd GAP4 package `XMod' Chris Wensley ## Alper Odabas -#Y Copyright (C) 2001-2020, Chris Wensley et al, +#Y Copyright (C) 2001-2025, Chris Wensley et al, ############################################################################## ## @@ -36,8 +36,6 @@ DeclareCategoryCollections( "IsGeneral2DimensionalMappingCollColl" ); #P IsEndo2DimensionalMapping( ) #P Is2DimensionalMagmaGeneralMapping( ) #P Is2DimensionalMagmaMorphism( ) -#P Is2DimensionalSemigroupMorphism( ) -#P Is2DimensionalMonoidMorphism( ) DeclareSynonymAttr( "Is2DimensionalMapping", IsGeneral2DimensionalMapping and IsMapping ); DeclareSynonymAttr( "IsEndoGeneral2DimensionalMapping", @@ -49,12 +47,6 @@ DeclareSynonymAttr( "Is2DimensionalMagmaGeneralMapping", DeclareSynonymAttr( "Is2DimensionalMagmaMorphism", Is2DimensionalMagmaGeneralMapping and IsMapping ); -#? modify these next three to SynonymAttr's ?? -DeclareProperty( "Is2DimensionalSemigroupMorphism", - Is2DimensionalMagmaMorphism ); -DeclareProperty( "Is2DimensionalMonoidMorphism", - Is2DimensionalMagmaMorphism ); - ############################################################################# ## #V General2DimensionalMappingFamily . family for homs of magmas with objects diff --git a/lib/map2dnd.gi b/lib/map2dnd.gi index 6cf8ba7..d587228 100644 --- a/lib/map2dnd.gi +++ b/lib/map2dnd.gi @@ -2,26 +2,7 @@ ## #W map2dnd.gi GAP4 package `XMod' Chris Wensley ## -#Y Copyright (C) 2001-2020, Chris Wensley et al, - -############################################################################# -## -#M Is2DimensionalSemigroupMorphism -#M Is2DimensionalMonoidMorphism -## -InstallMethod( Is2DimensionalSemigroupMorphism, - "for a 2d-mapping", true, [ Is2DimensionalMagmaMorphism ], 0, -function( map ) - return ( Is2DimensionalSemigroup( Source(map) ) - and Is2DimensionalSemigroup( Range(map) ) ); -end ); - -InstallMethod( Is2DimensionalMonoidMorphism, "for a 2d-mapping", - true, [ Is2DimensionalMagmaMorphism ], 0, -function( map ) - return ( Is2DimensionalMonoid( Source(map) ) - and Is2DimensionalMonoid( Range(map) ) ); -end ); +#Y Copyright (C) 2001-2025, Chris Wensley et al, ############################################################################## ##