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> -©right; 2003-2018 by Bettina Eick, Max Horn and Werner Nickel<P/> +©right; 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 @@ -[](https://github.com/gap-packages/polycyclic/actions?query=workflow%3ACI+branch%3Amaster) +[](https://github.com/gap-packages/polycyclic/actions/workflows/CI.yml) [](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 @@ [1X Computation with polycyclic groups [101X - 2.17 + 2.18 - 28 August 2025 + 9 April 2026 Bettina Eick @@ -45,7 +45,7 @@ ------------------------------------------------------- [1XCopyright[101X - [33X[0;0Y© 2003-2018 by Bettina Eick, Max Horn and Werner Nickel[133X + [33X[0;0Y© 2003-2026 by Bettina Eick, Max Horn and Werner Nickel[133X [33X[0;0YThe [5XPolycyclic[105X 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> -©right; 2003-2018 by Bettina Eick, Max Horn and Werner Nickel<P/> +©right; 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);
