Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gap-polycyclic for openSUSE:Factory 
checked in at 2026-04-10 17:54:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gap-polycyclic (Old)
 and      /work/SRC/openSUSE:Factory/.gap-polycyclic.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gap-polycyclic"

Fri Apr 10 17:54:09 2026 rev:3 rq:1345774 version:2.18

Changes:
--------
--- /work/SRC/openSUSE:Factory/gap-polycyclic/gap-polycyclic.changes    
2025-10-12 22:28:43.724687534 +0200
+++ /work/SRC/openSUSE:Factory/.gap-polycyclic.new.21863/gap-polycyclic.changes 
2026-04-10 18:03:28.467751863 +0200
@@ -1,0 +2,8 @@
+Fri Apr 10 08:19:13 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 2.18
+  * Let `Centralizer( U, g )` work if `g` is not contained in `U`.
+  * Improve `Intersection` to work in more cases (instead of
+    erroring out), specifically if one of the arguments is finite.
+
+-------------------------------------------------------------------

Old:
----
  polycyclic-2.17.tar.gz

New:
----
  polycyclic-2.18.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gap-polycyclic.spec ++++++
--- /var/tmp/diff_new_pack.nk22DA/_old  2026-04-10 18:03:29.019774633 +0200
+++ /var/tmp/diff_new_pack.nk22DA/_new  2026-04-10 18:03:29.023774798 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gap-polycyclic
-Version:        2.17
+Version:        2.18
 Release:        0
 Summary:        GAP: Computation with polycyclic groups
 License:        GPL-2.0-or-later
@@ -29,7 +29,7 @@
 BuildRequires:  gap-rpm-devel
 Requires:       gap-alnuth >= 3.0
 Requires:       gap-autpgrp >= 1.6
-Requires:       gap-core >= 4.9
+Requires:       gap-core >= 4.12
 
 %description
 The Polycyclic package provides a basis for working with polycyclic

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.nk22DA/_old  2026-04-10 18:03:29.059776283 +0200
+++ /var/tmp/diff_new_pack.nk22DA/_new  2026-04-10 18:03:29.063776448 +0200
@@ -1,5 +1,5 @@
-mtime: 1760207871
-commit: 696714afefe3c22733cbfa64a7ba172cd61e1a50053dae5628a2455c2f839cec
+mtime: 1775810071
+commit: 99ff8dc1e3dbaf46c1c746f34b67524abc0e6a552ed4d42e560b47ee0c2d271b
 url: https://src.opensuse.org/jengelh/gap-polycyclic
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-04-10 10:34:49.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ polycyclic-2.17.tar.gz -> polycyclic-2.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/.mailmap new/polycyclic-2.18/.mailmap
--- old/polycyclic-2.17/.mailmap        1970-01-01 01:00:00.000000000 +0100
+++ new/polycyclic-2.18/.mailmap        2026-04-09 02:00:00.000000000 +0200
@@ -0,0 +1,5 @@
+Chris Wensley <[email protected]>
+Chris Wensley <[email protected]> <[email protected]>
+Sam Tertooy <[email protected]>
+Sam Tertooy <[email protected]> 
<[email protected]>
+Thomas Breuer <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/CHANGES.md 
new/polycyclic-2.18/CHANGES.md
--- old/polycyclic-2.17/CHANGES.md      2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/CHANGES.md      2026-04-09 02:00:00.000000000 +0200
@@ -1,5 +1,11 @@
 This file describes changes in the GAP package 'polycyclic'.
 
+2.18 (2026-04-09)
+  - Let `Centralizer( U, g )` work if `g` is not contained in `U`
+  - Improve `Intersection` to work in more cases (instead of erroring out),
+    specifically if one of the arguments is finite
+  - Various janitorial changes
+
 2.17 (2025-08-28)
   - Add a method `SemidirectProduct( N, alpha, G)` where `N` and `G` are both 
PcpGroups
     (contributed by Sam Tertooy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/PackageInfo.g 
new/polycyclic-2.18/PackageInfo.g
--- old/polycyclic-2.17/PackageInfo.g   2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/PackageInfo.g   2026-04-09 02:00:00.000000000 +0200
@@ -9,8 +9,8 @@
 
 PackageName := "Polycyclic",
 Subtitle    := "Computation with polycyclic groups",
-Version     := "2.17",
-Date        := "28/08/2025", # dd/mm/yyyy format
+Version     := "2.18",
+Date        := "09/04/2026", # dd/mm/yyyy format
 License     := "GPL-2.0-or-later",
 
 Persons          := [
@@ -123,7 +123,7 @@
 ),
 
 Dependencies    := rec(
-  GAP                    := ">= 4.10",
+  GAP                    := ">= 4.12",
   NeededOtherPackages    := [["alnuth", "3.0"],
                              ["autpgrp","1.6"]],
   SuggestedOtherPackages := [ ],
@@ -164,7 +164,7 @@
 AutoDoc := rec(
     TitlePage := rec(
         Copyright := """<Index>License</Index>
-&copyright; 2003-2018 by Bettina Eick, Max Horn and Werner Nickel<P/>
+&copyright; 2003-2026 by Bettina Eick, Max Horn and Werner Nickel<P/>
 The &Polycyclic; package is free software;
 you can redistribute it and/or modify it under the terms of the
 <URL Text="GNU General Public 
License">http://www.fsf.org/licenses/gpl.html</URL>
@@ -179,4 +179,3 @@
 ),
 
 ));
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/README.md 
new/polycyclic-2.18/README.md
--- old/polycyclic-2.17/README.md       2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/README.md       2026-04-09 02:00:00.000000000 +0200
@@ -1,4 +1,4 @@
-[![Build 
Status](https://github.com/gap-packages/polycyclic/workflows/CI/badge.svg?branch=master)](https://github.com/gap-packages/polycyclic/actions?query=workflow%3ACI+branch%3Amaster)
+[![CI](https://github.com/gap-packages/polycyclic/actions/workflows/CI.yml/badge.svg)](https://github.com/gap-packages/polycyclic/actions/workflows/CI.yml)
 [![Code 
Coverage](https://codecov.io/github/gap-packages/polycyclic/coverage.svg?branch=master&token=)](https://codecov.io/gh/gap-packages/polycyclic)
 
 The GAP 4 package `Polycyclic'
@@ -12,8 +12,8 @@
 presentations.
 
 To have the full functionality of the package available you need at
-least GAP version 4.5 and the GAP 4 package Alnuth and its dependencies
-must be installed.
+least GAP version 4.12 and the GAP 4 packages Alnuth and AutPGrp and 
+their dependencies must be installed.
 
 The features of this package include
 
@@ -77,8 +77,8 @@
 Installation
 ------------
 
-Make sure that the GAP 4 package Alnuth is installed to  have the full
-range of methods available in polycyclic.
+Make sure that the GAP 4 packages Alnuth and AutPGrp are installed to 
+have the full range of methods available in polycyclic.
 
 There are two ways of installing the package.  If you have permission
 to add files to the installation directory of GAP 4 on your system,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/doc/chap0.html 
new/polycyclic-2.18/doc/chap0.html
--- old/polycyclic-2.17/doc/chap0.html  2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/doc/chap0.html  2026-04-09 02:00:00.000000000 +0200
@@ -29,10 +29,10 @@
 <h2>Computation with polycyclic groups</h2>
 
 <p>
-    2.17</p>
+    2.18</p>
 
 <p>
-    28 August 2025
+    9 April 2026
   </p>
 
 </div>
@@ -66,7 +66,7 @@
 
 <p><a id="X81488B807F2A1CF1" name="X81488B807F2A1CF1"></a></p>
 <h3>Copyright</h3>
-<p>© 2003-2018 by Bettina Eick, Max Horn and Werner Nickel</p>
+<p>© 2003-2026 by Bettina Eick, Max Horn and Werner Nickel</p>
 
 <p>The <strong class="pkg">Polycyclic</strong> package is free software; you 
can redistribute it and/or modify it under the terms of the <span 
class="URL"><a href="http://www.fsf.org/licenses/gpl.html";>GNU General Public 
License</a></span> as published by the Free Software Foundation; either version 
2 of the License, or (at your option) any later version.</p>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/doc/chap0.txt 
new/polycyclic-2.18/doc/chap0.txt
--- old/polycyclic-2.17/doc/chap0.txt   2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/doc/chap0.txt   2026-04-09 02:00:00.000000000 +0200
@@ -6,10 +6,10 @@
                        Computation with polycyclic groups 
   
   
-                                      2.17
+                                      2.18
   
   
-                                 28 August 2025
+                                  9 April 2026
   
   
                                   Bettina Eick
@@ -45,7 +45,7 @@
   
   -------------------------------------------------------
   Copyright
-  © 2003-2018 by Bettina Eick, Max Horn and Werner Nickel
+  © 2003-2026 by Bettina Eick, Max Horn and Werner Nickel
   
   The  Polycyclic  package  is  free  software; you can 
redistribute it and/or
   modify   it   under   the   terms   of   the   GNU  General  Public  License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/doc/chap0_mj.html 
new/polycyclic-2.18/doc/chap0_mj.html
--- old/polycyclic-2.17/doc/chap0_mj.html       2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/doc/chap0_mj.html       2026-04-09 02:00:00.000000000 
+0200
@@ -32,10 +32,10 @@
 <h2>Computation with polycyclic groups</h2>
 
 <p>
-    2.17</p>
+    2.18</p>
 
 <p>
-    28 August 2025
+    9 April 2026
   </p>
 
 </div>
@@ -69,7 +69,7 @@
 
 <p><a id="X81488B807F2A1CF1" name="X81488B807F2A1CF1"></a></p>
 <h3>Copyright</h3>
-<p>© 2003-2018 by Bettina Eick, Max Horn and Werner Nickel</p>
+<p>© 2003-2026 by Bettina Eick, Max Horn and Werner Nickel</p>
 
 <p>The <strong class="pkg">Polycyclic</strong> package is free software; you 
can redistribute it and/or modify it under the terms of the <span 
class="URL"><a href="http://www.fsf.org/licenses/gpl.html";>GNU General Public 
License</a></span> as published by the Free Software Foundation; either version 
2 of the License, or (at your option) any later version.</p>
 
Binary files old/polycyclic-2.17/doc/manual.pdf and 
new/polycyclic-2.18/doc/manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/doc/polycyclic.tex 
new/polycyclic-2.18/doc/polycyclic.tex
--- old/polycyclic-2.17/doc/polycyclic.tex      2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/doc/polycyclic.tex      2026-04-09 02:00:00.000000000 
+0200
@@ -98,8 +98,8 @@
 {\Huge \textbf{ Computation with polycyclic groups \mbox{}}}\\
 \vfill
 
-{\Huge  2.17 \mbox{}}\\[1cm]
-{ 28 August 2025 \mbox{}}\\[1cm]
+{\Huge  2.18 \mbox{}}\\[1cm]
+{ 9 April 2026 \mbox{}}\\[1cm]
 \mbox{}\\[2cm]
 {\Large \textbf{ Bettina Eick\\
     \mbox{}}}\\
@@ -148,7 +148,7 @@
 {\small 
 \section*{Copyright}
 \logpage{[ 0, 0, 1 ]}
- \index{License} {\copyright} 2003\texttt{\symbol{45}}2018 by Bettina Eick, 
Max Horn and Werner
+ \index{License} {\copyright} 2003\texttt{\symbol{45}}2026 by Bettina Eick, 
Max Horn and Werner
 Nickel
 
  The \textsf{Polycyclic} package is free software; you can redistribute it 
and/or modify it under the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/doc/title.xml 
new/polycyclic-2.18/doc/title.xml
--- old/polycyclic-2.17/doc/title.xml   2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/doc/title.xml   2026-04-09 02:00:00.000000000 +0200
@@ -9,7 +9,7 @@
     Computation with polycyclic groups
   </Subtitle>
   <Version>
-    2.17
+    2.18
   </Version>
   <Author>
     Bettina Eick<Alt Only="LaTeX"><Br/></Alt>
@@ -43,11 +43,11 @@
 
   </Author>
   <Date>
-    28 August 2025
+    9 April 2026
   </Date>
   <Copyright>
     <Index>License</Index>
-&copyright; 2003-2018 by Bettina Eick, Max Horn and Werner Nickel<P/>
+&copyright; 2003-2026 by Bettina Eick, Max Horn and Werner Nickel<P/>
 The &Polycyclic; package is free software;
 you can redistribute it and/or modify it under the terms of the
 <URL Text="GNU General Public 
License">http://www.fsf.org/licenses/gpl.html</URL>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/cohom/onecohom.gi 
new/polycyclic-2.18/gap/cohom/onecohom.gi
--- old/polycyclic-2.17/gap/cohom/onecohom.gi   2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/cohom/onecohom.gi   2026-04-09 02:00:00.000000000 
+0200
@@ -88,7 +88,7 @@
 
     # extend base to full lattice
     dep := List( base, PositionNonZero );
-    new := MutableCopyMat( base );
+    new := MutableCopyMatrix( base );
     for i in [1..l] do
         if not i in dep then Add( new, mat[i] ); fi;
     od;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/cohom/solabel.gi 
new/polycyclic-2.18/gap/cohom/solabel.gi
--- old/polycyclic-2.17/gap/cohom/solabel.gi    2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/cohom/solabel.gi    2026-04-09 02:00:00.000000000 
+0200
@@ -234,7 +234,7 @@
     # solve mod p
     AA := A*One(F); ConvertToMatrixRepNC(AA, F);
     SE := SemiEchelonMatTransformation(AA);
-    SS := MutableCopyMat(SE.relations); TriangulizeMat(SS);
+    SS := MutableCopyMatrix(SE.relations); TriangulizeMat(SS);
     if f then sl := FindSpecialSolution(SE, b*One(F)); fi;
 
     # extract info
@@ -267,7 +267,7 @@
         # apply gauss
         W := J*One(F); ConvertToMatrixRepNC(W, F);
         M := SemiEchelonMatTransformation(W);
-        S := MutableCopyMat(M.relations); TriangulizeMat(S);
+        S := MutableCopyMatrix(M.relations); TriangulizeMat(S);
 
         # consider special solution
         if f then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/cohom/solcohom.gi 
new/polycyclic-2.18/gap/cohom/solcohom.gi
--- old/polycyclic-2.17/gap/cohom/solcohom.gi   2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/cohom/solcohom.gi   2026-04-09 02:00:00.000000000 
+0200
@@ -138,7 +138,7 @@
 
 BindGlobal( "PermuteMat", function( M, rho, sig )
     local N, i, j;
-    N := MutableCopyMat(M);
+    N := MutableCopyMatrix(M);
     for i in [1..Length(M)] do
         for j in [1..Length(M[1])] do
             N[i][j] := M[i^sig][j^rho];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/matrep/matrep.gi 
new/polycyclic-2.18/gap/matrep/matrep.gi
--- old/polycyclic-2.17/gap/matrep/matrep.gi    2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/matrep/matrep.gi    2026-04-09 02:00:00.000000000 
+0200
@@ -314,11 +314,10 @@
 
         for j in [ last_inds[i]..Length( mats )] do
           m:= asbas[i]*mats[j];
-          if not IsContainedInSpan( sp, m ) then
+          if CloseMutableBasis( sp, m ) then
             ready:= false;
             Add( asbas, m );
             Add( last_inds, j );
-            CloseMutableBasis( sp, m );
           fi;
         od;
 
@@ -342,9 +341,8 @@
       for j in [1..dim] do
 
         cf:= List( asbas, m -> m[j][i] );
-        if not IsContainedInSpan( sp, cf ) then
+        if CloseMutableBasis( sp, cf ) then
           Add( cc, [i,j] );
-          CloseMutableBasis( sp, cf );
         fi;
       od;
     od;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/pcpgrp/centcon.gi 
new/polycyclic-2.18/gap/pcpgrp/centcon.gi
--- old/polycyclic-2.17/gap/pcpgrp/centcon.gi   2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/pcpgrp/centcon.gi   2026-04-09 02:00:00.000000000 
+0200
@@ -155,6 +155,7 @@
 #F Centralizer
 ##
 BindGlobal( "CentralizerPcpGroup", function( G, g )
+    local H, contained, C;
 
     # get arguments
     if IsPcpGroup(g) then
@@ -165,11 +166,21 @@
 
     # check
     if ForAny( g, x -> not x in G ) then
-        TryNextMethod();
+        contained := false;
+        H := ClosureGroup( G, g );
+    else
+        contained := true;
+        H := G;
     fi;
 
     # compute
-    return CentralizerBySeries( G, g, PcpsOfEfaSeries(G) );
+    C := CentralizerBySeries( H, g, PcpsOfEfaSeries(H) );
+
+    if not contained then
+        return Intersection( G, C );
+    else
+        return C;
+    fi;
 end );
 
 InstallMethod( CentralizerOp, "for a pcp group", IsCollsElms,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/gap/pcpgrp/inters.gi 
new/polycyclic-2.18/gap/pcpgrp/inters.gi
--- old/polycyclic-2.17/gap/pcpgrp/inters.gi    2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/gap/pcpgrp/inters.gi    2026-04-09 02:00:00.000000000 
+0200
@@ -151,5 +151,8 @@
         return NormalIntersection( V, U );
     fi;
 
+    if IsFinite( U ) or IsFinite( V ) then
+        TryNextMethod();
+    fi;
     Error("sorry: intersection for non-normal groups not yet installed");
 end );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/read.g new/polycyclic-2.18/read.g
--- old/polycyclic-2.17/read.g  2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/read.g  2026-04-09 02:00:00.000000000 +0200
@@ -25,15 +25,6 @@
 if not IsBound( VERIFY@ ) then VERIFY@ := true; fi;
 
 ##
-## Starting with GAP 4.11, MultRowVector has been renamed to MultVector.
-## In order to stay compatible with older GAP releases, we define MultVector
-## if it is missing.
-##
-if not IsBound(MultVector) then
-  DeclareSynonym( "MultVector", MultRowVector );
-fi;
-
-##
 ## matrix -- basics about matrices, rational spaces, lattices and modules
 ##
 ReadPackage( "polycyclic", "gap/matrix/rowbases.gi");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/AddToIgs.tst 
new/polycyclic-2.18/tst/AddToIgs.tst
--- old/polycyclic-2.17/tst/AddToIgs.tst        2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/tst/AddToIgs.tst        2026-04-09 02:00:00.000000000 
+0200
@@ -123,7 +123,7 @@
 # Fix a bug in AddToIgs
 # See https://github.com/gap-packages/polycyclic/issues/66
 #
-gap> G := PcGroupToPcpGroup( SmallGroup( 36, 9 ) );;
+gap> G := PcGroupToPcpGroup( PcGroupCode( 14981017363, 36 ) );;
 gap> gensG := [ G.1, G.4 ];;
 gap> G = Subgroup( G, gensG );
 true
@@ -141,7 +141,7 @@
 #
 # third example for issue #66
 #
-gap> H := SmallGroup( 36, 9 );;
+gap> H := PcGroupCode( 14981017363, 36 );;
 gap> gensH := [ H.1, H.4 ];;
 gap> H = Subgroup( H, gensH );
 true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/bugfix.tst 
new/polycyclic-2.18/tst/bugfix.tst
--- old/polycyclic-2.17/tst/bugfix.tst  2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/tst/bugfix.tst  2026-04-09 02:00:00.000000000 +0200
@@ -32,7 +32,7 @@
 
 #
 gap> # Check for a bug reported 2012-01-19 by Robert Morse
-gap> g := PcGroupToPcpGroup(SmallGroup(48,1));
+gap> g := PcGroupToPcpGroup(PcGroupCode(61763227873,48));
 Pcp-group with orders [ 2, 2, 2, 2, 3 ]
 gap> # The next two commands used to trigger errors
 gap> NonAbelianTensorSquare(Centre(g));
@@ -156,7 +156,7 @@
 #
 gap> # LowerCentralSeriesOfGroup for non-nilpotent pcp-groups used to trigger
 gap> # an infinite recursion
-gap> G := PcGroupToPcpGroup(SmallGroup(6,1));
+gap> G := PcGroupToPcpGroup(PcGroupCode(25,6));
 Pcp-group with orders [ 2, 3 ]
 gap> LowerCentralSeriesOfGroup(G);
 [ Pcp-group with orders [ 2, 3 ], Pcp-group with orders [ 3 ] ]
@@ -392,7 +392,7 @@
 # being in the IsAbelian (and even the IsCyclic) filter.
 # <https://github.com/gap-packages/polycyclic/issues/28>
 #
-gap> G:=PcGroupToPcpGroup(SmallGroup(5^6,500));
+gap> G:=PcGroupToPcpGroup(PcGroupCode(976875100002560016404991074,5^6));
 Pcp-group with orders [ 5, 5, 5, 5, 5, 5 ]
 gap> N:=NormalClosure(Group(G.2), Group(G.3));
 Pcp-group with orders [ 5, 5, 5, 5 ]
@@ -509,7 +509,7 @@
 # Fix a bug in IsNormal
 # <https://github.com/gap-packages/polycyclic/issues/46>
 #
-gap> g := PcGroupToPcpGroup(SmallGroup(48,1));
+gap> g := PcGroupToPcpGroup(PcGroupCode(61763227873,48));
 Pcp-group with orders [ 2, 2, 2, 2, 3 ]
 gap> S := SylowSubgroup( g, 2 );
 Pcp-group with orders [ 2, 2, 2, 2 ]
@@ -578,20 +578,10 @@
 id
 
 #
-# Allow Centralizer to fall back on generic GAP methods
-# <https://github.com/gap-packages/polycyclic/issues/64>
-#
-gap> G := PcGroupToPcpGroup( SmallGroup( 16, 11 ) );;
-gap> g := G.1*G.3*G.4;;
-gap> H := Subgroup( G,[ G.2, G.3, G.4 ] );;
-gap> Centralizer( H, g );
-Pcp-group with orders [ 2, 2 ]
-
-#
 # Fix a bug in CentralizerBySeries
 # <https://github.com/gap-packages/polycyclic/issues/65>
 #
-gap> G := PcGroupToPcpGroup( SmallGroup( 16, 11 ) );;
+gap> G := PcGroupToPcpGroup( PcGroupCode( 520, 16 ) );;
 gap> g := G.2*G.3*G.4;;
 gap> cc := ConjugacyClass( G, g );;
 gap> C := Centralizer( cc );
@@ -642,7 +632,7 @@
 # Fix bug in FrattiniSubgroup
 # Reported by Heiko Dietrich (2024-02-19)
 #
-gap> G:=PcGroupToPcpGroup(SmallGroup(11025,6));;
+gap> G:=PcGroupToPcpGroup(PcGroupCode(65691468891906554870039,11025));;
 gap> F:=FrattiniSubgroup(G);;
 gap> Size(F);  # used to produce a group of order 49
 21
@@ -651,7 +641,7 @@
 # Fixed a bug in IsConjugate for a finite pcp-group
 # <https://github.com/gap-packages/polycyclic/issues/70>
 #
-gap> G := PcGroupToPcpGroup( SmallGroup( 1600, 10260 ) );;
+gap> G := PcGroupToPcpGroup( PcGroupCode( 
6972476423700447941356396189131961283384217049529126656, 1600 ) );;
 gap> G := Subgroup( G, [ G.1, G.2, G.3, G.4 ] );;
 gap> g := G.2*G.4;; h := g^(G.1*G.3);;
 gap> IsConjugate( G, g, h );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/cent.tst 
new/polycyclic-2.18/tst/cent.tst
--- old/polycyclic-2.17/tst/cent.tst    1970-01-01 01:00:00.000000000 +0100
+++ new/polycyclic-2.18/tst/cent.tst    2026-04-09 02:00:00.000000000 +0200
@@ -0,0 +1,58 @@
+gap> START_TEST("Test for the centralizer algorithm");
+
+#
+# Centralizers of an infinite group G and an element g,
+# and of a subgroup H (not containing g) and the element g 
+#
+gap> G := ExamplesOfSomePcpGroups( 5 );
+Pcp-group with orders [ 2, 0, 0, 0 ]
+gap> g := G.2;;
+gap> H := Subgroup( G, [ G.1 ] );
+Pcp-group with orders [ 2, 0 ]
+gap> g in H;
+false
+gap> Centralizer( G, g ) = Subgroup( G, [ G.2, G.4 ] );
+true
+gap> Centralizer( H, g ) = Subgroup( G, [ G.4 ] );
+true
+
+#
+# Centralizers of a finite group G and an element g,
+# and of a subgroup H (not containing g) and the element g 
+#
+gap> G := PcGroupToPcpGroup( PcGroupCode( 520, 16 ) );
+Pcp-group with orders [ 2, 2, 2, 2 ]
+gap> g := G.1 * G.3 * G.4;;
+gap> H := Subgroup( G,[ G.2, G.3, G.4 ] );
+Pcp-group with orders [ 2, 2, 2 ]
+gap> g in H;
+false
+gap> Centralizer( G, g ) = Subgroup( G, [ G.1, G.3, G.4 ] );
+true
+gap> Centralizer( H, g ) = Subgroup( G, [ G.3, G.4 ] );
+true
+
+#
+# Centralizers of two subgroups with the parent group and with
+# each other, where the subgroups do not contain each other
+#
+gap> G := ExamplesOfSomePcpGroups( 1 );
+Pcp-group with orders [ 0, 0, 0, 0 ]
+gap> H := Subgroup( G, [ G.1 ^ 2, G.3 ] );
+Pcp-group with orders [ 0, 0, 0 ]
+gap> K := Subgroup( G, [ G.2 ^ 4, G.4 ] );
+Pcp-group with orders [ 0, 0 ]
+gap> Intersection( H, K );
+Pcp-group with orders [ 0 ]
+gap> 
+gap> Centralizer( G, H ) = Subgroup( G, [ G.2 ^ 2 ] );
+true
+gap> Centralizer( G, K ) = Subgroup( G, [ G.2 ^ 2, G.3, G.4 ] );
+true
+gap> Centralizer( K, H ) = Subgroup( G, [ G.2 ^ 4 ] );
+true
+gap> Centralizer( H, K ) = Subgroup( G, [ G.3, G.4 ] );
+true
+
+#
+gap> STOP_TEST( "cent.tst", 10000000);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/exam/generic.tst 
new/polycyclic-2.18/tst/exam/generic.tst
--- old/polycyclic-2.17/tst/exam/generic.tst    2025-08-28 11:45:46.000000000 
+0200
+++ new/polycyclic-2.18/tst/exam/generic.tst    2026-04-09 02:00:00.000000000 
+0200
@@ -25,17 +25,47 @@
 gap> hom:=GroupHomomorphismByImages( G, Group(G!.mats), Igs(G), G!.mats);;
 
 #
-gap> IdGroup(BlowUpPcpPGroup(SmallGroup(2,1)));
-[ 2, 1 ]
-gap> IdGroup(BlowUpPcpPGroup(SmallGroup(4,1)));
-[ 8, 2 ]
-gap> IdGroup(BlowUpPcpPGroup(SmallGroup(4,2)));
-[ 8, 5 ]
-gap> List([1..5], i->IdGroup(BlowUpPcpPGroup(SmallGroup(8,i))));
-[ [ 128, 1601 ], [ 128, 2319 ], [ 128, 2320 ], [ 128, 2321 ], [ 128, 2328 ] ]
-gap> IdGroup(BlowUpPcpPGroup(SmallGroup(3,1)));
-[ 9, 2 ]
-gap> BlowUpPcpPGroup(SmallGroup(9,1));
+gap> G:=BlowUpPcpPGroup(PcGroupCode(0,2));;
+gap> Size(G);
+2
+gap> G:=BlowUpPcpPGroup(PcGroupCode(5,4));;
+gap> IsAbelian(G);
+true
+gap> AbelianInvariants(G);
+[ 2, 4 ]
+gap> G:=BlowUpPcpPGroup(PcGroupCode(0,4));;
+gap> IsAbelian(G);
+true
+gap> AbelianInvariants(G);
+[ 2, 2, 2 ]
+gap> G:=BlowUpPcpPGroup(PcGroupCode(323,8));;
+gap> IsAbelian(G);
+true
+gap> AbelianInvariants(G);
+[ 2, 2, 4, 8 ]
+gap> G:=BlowUpPcpPGroup(PcGroupCode(33,8));;
+gap> IsAbelian(G);
+true
+gap> AbelianInvariants(G);
+[ 2, 2, 2, 2, 2, 4 ]
+gap> G:=BlowUpPcpPGroup(PcGroupCode(36,8));;
+gap> fac:=DirectFactorsOfGroup(G);;
+gap> Number(fac,F->Size(F)=2);
+4
+gap> Number(fac,F->IsDihedralGroup(F) and Size(F)=8);
+1
+gap> G:=BlowUpPcpPGroup(PcGroupCode(2343,8));;
+gap> fac:=DirectFactorsOfGroup(G);;
+gap> Number(fac,F->Size(F)=2);
+4
+gap> Number(fac,F->IsQuaternionGroup(F) and Size(F)=8);
+1
+gap> G:=BlowUpPcpPGroup(PcGroupCode(0,3));;
+gap> IsAbelian(G);
+true
+gap> AbelianInvariants(G);
+[ 3, 3 ]
+gap> BlowUpPcpPGroup(PcGroupCode(5,9));
 Pcp-group with orders [ 3, 3, 3, 3, 3, 3, 3, 3 ]
-gap> BlowUpPcpPGroup(SmallGroup(9,2));
+gap> BlowUpPcpPGroup(PcGroupCode(0,9));
 Pcp-group with orders [ 3, 3, 3, 3, 3, 3, 3, 3 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/inters.tst 
new/polycyclic-2.18/tst/inters.tst
--- old/polycyclic-2.17/tst/inters.tst  2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/tst/inters.tst  2026-04-09 02:00:00.000000000 +0200
@@ -1,7 +1,7 @@
 gap> START_TEST("Test for the intersection algorithm");
 
 #some trivial tests
-gap> G := SmallGroup(48,3);;
+gap> G := PcGroupCode(276070751805136,48);;
 gap> iso := IsomorphismPcpGroup(G);;
 gap> H := Image(iso, G);;
 gap> T := TrivialSubgroup(H);;
@@ -56,7 +56,7 @@
   Pcp [  ] with orders [  ] ]
 
 # a working test with a finite group (pc converted to pcp)
-gap> G := SmallGroup(3^2*5^2*7,7);;
+gap> G := PcGroupCode(508835717541181643,3^2*5^2*7);;
 gap> iso := IsomorphismPcpGroup(G);;
 gap> g := GeneratorsOfGroup(G);;
 gap> G1 := Subgroup(G, [g[2]*g[1]^2, g[3]*g[4]]);
@@ -85,7 +85,7 @@
 Error, sorry: intersection for non-normal groups not yet installed
 
 # finite group example where the intersection isn't impl. when represented as 
a pcp-group (non-normalizing case)
-gap> G := SmallGroup(2^2*3^4*5,8);;
+gap> G := PcGroupCode(45446527802282484537974096,2^2*3^4*5);;
 gap> iso := IsomorphismPcpGroup(G);;
 gap> H := Image(iso);;
 gap> h := GeneratorsOfGroup(H);;
@@ -94,7 +94,7 @@
 gap> H2 := Subgroup(H,[h[1]*h[7], h[4]*h[5]]);
 Pcp-group with orders [ 3, 3, 3, 3 ]
 gap> J := Intersection(H1,H2);
-Error, sorry: intersection for non-normal groups not yet installed
+Pcp-group with orders [ 3, 3, 3 ]
 gap> G1 := PreImagesNC(iso,H1);
 Group([ f2, f3*f4, f6 ])
 gap> G2 := PreImagesNC(iso,H2);
@@ -105,7 +105,7 @@
 Pcp-group with orders [ 3, 3, 3 ]
 
 # finite group example where the intersection isn't impl. when represented as 
a pcp-group (non-normalizing case)
-gap> G := SmallGroup(2^2*3^5,250);;
+gap> G := PcGroupCode(15825634281851454495,2^2*3^5);;
 gap> iso := IsomorphismPcpGroup(G);;
 gap> H := Image(iso);;
 gap> h := GeneratorsOfGroup(H);;
@@ -114,7 +114,7 @@
 gap> H2 := Subgroup(H,[h[1]*h[7], h[4]*h[5]^2]);
 Pcp-group with orders [ 2, 3, 3, 3 ]
 gap> Intersection(H1,H2);
-Error, sorry: intersection for non-normal groups not yet installed
+Pcp-group with orders [ 3, 3 ]
 gap> G1 := PreImagesNC(iso,H1);
 Group([ f2, f3*f4, f6^2 ])
 gap> G2 := PreImagesNC(iso,H2);
@@ -124,5 +124,15 @@
 gap> Image(iso,I);
 Pcp-group with orders [ 3, 3 ]
 
+# finite - infinite combination example where the intersection isn't impl. 
when represented as a pcp-group (non-normalizing case)
+gap> G := DirectProduct(ExamplesOfSomePcpGroups(8), 
PcGroupToPcpGroup(PcGroupCode(2835879971,72)));;
+gap> g := GeneratorsOfGroup(G);;
+gap> H1 := Subgroup(G,[g[6]*g[9]^2]);
+Pcp-group with orders [ 2, 2 ]
+gap> H2 := Subgroup(G,[g[6],g[2]*g[7]]);
+Pcp-group with orders [ 0, 2, 2 ]
+gap> Intersection(H1,H2);
+Pcp-group with orders [ 2 ]
+
 #
 gap> STOP_TEST( "inters.tst", 10000000);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polycyclic-2.17/tst/isom.tst 
new/polycyclic-2.18/tst/isom.tst
--- old/polycyclic-2.17/tst/isom.tst    2025-08-28 11:45:46.000000000 +0200
+++ new/polycyclic-2.18/tst/isom.tst    2026-04-09 02:00:00.000000000 +0200
@@ -75,17 +75,18 @@
 # Test with dihedral group
 #
 gap> K:=DihedralGroup(IsPcpGroup, 16);;
-gap> IdSmallGroup(K);
-[ 16, 7 ]
 gap> iso:=IsomorphismPermGroup(K);;
-gap> IdSmallGroup(Image(iso));
-[ 16, 7 ]
+gap> img:=Image(iso);;
+gap> Size(img)=16 and IsDihedralGroup(img);
+true
 gap> iso:=IsomorphismPcGroup(K);;
-gap> IdSmallGroup(Image(iso));
-[ 16, 7 ]
+gap> img:=Image(iso);;
+gap> Size(img)=16 and IsDihedralGroup(img);
+true
 gap> iso:=IsomorphismFpGroup(K);;
-gap> IdSmallGroup(Image(iso));
-[ 16, 7 ]
+gap> img:=Image(iso);;
+gap> Size(img)=16 and IsDihedralGroup(img);
+true
 
 #
 gap> STOP_TEST( "homs.tst", 10000000);

Reply via email to