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
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
- An operation `ClassTranspositionConjugationBall` has been added,
together with a method for rcwa groups over Z.
(Not documented so far.)
- RCWA no longer requires the SmallGrp package: viewing and displaying
an rcwa group used the attribute `IdGroup` and its tester
`HasIdGroup`, which are provided by that package, and thus failed if
it was not loaded. The isomorphism type is still shown whenever
`IdGroup` is known, and the order is printed otherwise.

## Changes between RCWA 4.8.0 and RCWA 4.9.0 (May 4, 2026):

Expand Down
24 changes: 20 additions & 4 deletions lib/rcwagrp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@
##
#############################################################################

#############################################################################
##
#F RCWA_HasIdGroup( <G> ) . . . . . . . . . . `HasIdGroup', if it is present
#F RCWA_IdGroup( <G> ) . . . . . . . . . . . . . `IdGroup', if it is present
##
## The attribute `IdGroup' and its tester `HasIdGroup' are provided by the
## SmallGrp package, which is not always available. Since only SmallGrp can
## set that attribute, it is certainly not set if the package is missing,
## so treating it as unset in that case is safe. These two functions are
## used purely to enrich `ViewObj' and `Display' output.
##
BindGlobal( "RCWA_HasIdGroup",
G -> IsBound( HasIdGroup ) and ValueGlobal( "HasIdGroup" )( G ) );
BindGlobal( "RCWA_IdGroup", G -> ValueGlobal( "IdGroup" )( G ) );

#############################################################################
##
#S Implications between the categories of rcwa groups. /////////////////////
Expand Down Expand Up @@ -222,8 +237,8 @@ InstallMethod( ViewObj,
Print("rcwa group over ",RingString," with ",NrGens," generator");
if NrGens > 1 then Print("s"); fi;
if not (HasIsTame(G) and not IsTame(G)) then
if HasIdGroup(G)
then Print(", of isomorphism type ",IdGroup(G));
if RCWA_HasIdGroup(G)
then Print(", of isomorphism type ",RCWA_IdGroup(G));
elif HasSize(G)
then Print(", of order ",Size(G)); fi;
fi;
Expand Down Expand Up @@ -329,8 +344,9 @@ InstallMethod( Display,
if prefix then Print("rcwa "); else Print("\nRcwa "); fi;
Print("group over ",RingString);
if not (HasIsTame(G) and not IsTame(G)) then
if HasIdGroup(G) then Print(" of isomorphism type ",IdGroup(G));
elif HasSize(G) then Print(" of order ",Size(G)); fi;
if RCWA_HasIdGroup(G)
then Print(" of isomorphism type ",RCWA_IdGroup(G));
elif HasSize(G) then Print(" of order ",Size(G)); fi;
fi;
Print(", generated by\n\n[\n");
for g in GeneratorsOfGroup(G) do Display(g); od;
Expand Down
9 changes: 9 additions & 0 deletions tst/integral.tst
Original file line number Diff line number Diff line change
Expand Up @@ -1111,10 +1111,15 @@ gap> IsBijective(phi);
true
gap> Size(Image(phi));
24
#@if IsPackageMarkedForLoading( "smallgrp", "" )
gap> IdGroup(G);
[ 24, 12 ]
gap> G;
<rcwa group over Z with 2 generators, of isomorphism type [ 24, 12 ]>
#@else
gap> G;
<rcwa group over Z with 2 generators, of order 24>
#@fi
gap> Modulus(G);
6
gap> A4 := DerivedSubgroup(G);
Expand Down Expand Up @@ -2023,12 +2028,16 @@ gap> StructureDescription(G);
"C2 x C2"
gap> G := Group(ClassTransposition(0,4,1,4),ClassShift(0,4),
> ClassReflection(1,4),ClassReflection(2,4),ClassShift(3,4));;
#@if IsPackageMarkedForLoading( "smallgrp", "" )
gap> StructureDescription(G:short);
"Z^2.((S3xS3):2)x2xZ"
#@fi
gap> G := Group(ClassTransposition(0,2,1,4),
> ClassShift(2,4),ClassReflection(1,2));;
#@if IsPackageMarkedForLoading( "smallgrp", "" )
gap> StructureDescription(G:short);
"Z^2.((S3xS3):2)"
#@fi
gap> G := Group(ClassTransposition(0,2,1,4),ClassShift(0,5));;
gap> StructureDescription(G);
"(Z x Z x Z x Z x Z x Z x Z) . (C2 x S7)"
Expand Down