Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gap-cohomolo for openSUSE:Factory checked in at 2026-09-02 17:03:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gap-cohomolo (Old) and /work/SRC/openSUSE:Factory/.gap-cohomolo.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gap-cohomolo" Wed Sep 2 17:03:32 2026 rev:4 rq:1375328 version:1.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/gap-cohomolo/gap-cohomolo.changes 2026-08-15 22:41:31.390480928 +0200 +++ /work/SRC/openSUSE:Factory/.gap-cohomolo.new.1265/gap-cohomolo.changes 2026-09-02 17:03:59.133905150 +0200 @@ -1,0 +2,8 @@ +Wed Sep 2 07:38:04 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 1.7.1 + * In `SplitExtensionCHR`, `NonsplitExtension` and + `CoveringGroup`, the order of the result is now known if the + order of the given finitely presented group is known. + +------------------------------------------------------------------- Old: ---- cohomolo-1.7.0.tar.gz New: ---- cohomolo-1.7.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gap-cohomolo.spec ++++++ --- /var/tmp/diff_new_pack.cdKT2g/_old 2026-09-02 17:03:59.906931979 +0200 +++ /var/tmp/diff_new_pack.cdKT2g/_new 2026-09-02 17:03:59.907932014 +0200 @@ -17,7 +17,7 @@ Name: gap-cohomolo -Version: 1.7.0 +Version: 1.7.1 Release: 0 Summary: GAP: Cohomology groups of finite groups on finite modules License: GPL-2.0-only ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.cdKT2g/_old 2026-09-02 17:03:59.942933228 +0200 +++ /var/tmp/diff_new_pack.cdKT2g/_new 2026-09-02 17:03:59.947933402 +0200 @@ -1,5 +1,5 @@ -mtime: 1786760383 -commit: eb0570ffce38599085388a460fa3a41a88e805a78b0f9e6f0c9e5a5c170e67c3 +mtime: 1788334709 +commit: aa1e12b0c7230ce5402060a2ea7766eda5af9cfc33b07d557d3ff420905aee6c url: https://src.opensuse.org/jengelh/gap-cohomolo 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-09-02 09:38:29.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ cohomolo-1.7.0.tar.gz -> cohomolo-1.7.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/CHANGES new/cohomolo-1.7.1/CHANGES --- old/cohomolo-1.7.0/CHANGES 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/CHANGES 2026-08-31 02:00:00.000000000 +0200 @@ -1,5 +1,10 @@ This file describes changes in the cohomolo package. +1.7.1 (2026-08-31) + - In SplitExtensionCHR, NonsplitExtension, and CoveringGroup, the + order of the result is known if the order of the given finitely + presented group is known + 1.7.0 (2026-08-13) - Report an error when an external program fails, instead of returning the result of an earlier stage of the computation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/PackageInfo.g new/cohomolo-1.7.1/PackageInfo.g --- old/cohomolo-1.7.0/PackageInfo.g 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/PackageInfo.g 2026-08-31 02:00:00.000000000 +0200 @@ -2,8 +2,8 @@ PackageName := "cohomolo", Subtitle := "Cohomology groups of finite groups on finite modules", -Version := "1.7.0", -Date := "13/08/2026", # dd/mm/yyyy format +Version := "1.7.1", +Date := "31/08/2026", # dd/mm/yyyy format License := "GPL-2.0-or-later", Persons := [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/_entities.xml new/cohomolo-1.7.1/doc/_entities.xml --- old/cohomolo-1.7.0/doc/_entities.xml 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/_entities.xml 2026-08-31 02:00:00.000000000 +0200 @@ -1,4 +1,4 @@ -<!ENTITY RELEASEDATE '13 August 2026'> +<!ENTITY RELEASEDATE '31 August 2026'> <!ENTITY RELEASEYEAR '2026'> -<!ENTITY VERSION '1.7.0'> +<!ENTITY VERSION '1.7.1'> <!ENTITY cohomolo '<Package>cohomolo</Package>'> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap0.html new/cohomolo-1.7.1/doc/chap0.html --- old/cohomolo-1.7.0/doc/chap0.html 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap0.html 2026-08-31 02:00:00.000000000 +0200 @@ -29,10 +29,10 @@ <h2>Cohomology groups of finite groups on finite modules</h2> <p> - 1.7.0</p> + 1.7.1</p> <p> - 13 August 2026 + 31 August 2026 </p> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap0.txt new/cohomolo-1.7.1/doc/chap0.txt --- old/cohomolo-1.7.0/doc/chap0.txt 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap0.txt 2026-08-31 02:00:00.000000000 +0200 @@ -6,10 +6,10 @@ [1X Cohomology groups of finite groups on finite modules [101X - 1.7.0 + 1.7.1 - 13 August 2026 + 31 August 2026 Derek Holt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap0_mj.html new/cohomolo-1.7.1/doc/chap0_mj.html --- old/cohomolo-1.7.0/doc/chap0_mj.html 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap0_mj.html 2026-08-31 02:00:00.000000000 +0200 @@ -32,10 +32,10 @@ <h2>Cohomology groups of finite groups on finite modules</h2> <p> - 1.7.0</p> + 1.7.1</p> <p> - 13 August 2026 + 31 August 2026 </p> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap1.html new/cohomolo-1.7.1/doc/chap1.html --- old/cohomolo-1.7.0/doc/chap1.html 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap1.html 2026-08-31 02:00:00.000000000 +0200 @@ -134,7 +134,7 @@ <h5>1.3-1 CoveringGroup</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoveringGroup</code>( <var class="Arg">chr</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>[,<var class="Arg">mats</var>])</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="code">CoveringGroup</code> calculates a presentation of a covering extension of <span class="SimpleMath">Mul_p</span> by <var class="Arg">G</var>, where <span class="SimpleMath">Mul_p</span> is the <var class="Arg">p</var>-part of the Schur multiplier <var class="Arg">Mul</var> of <var class="Arg">G</var>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <span class="SimpleMath">Mul_p</span>, respectively.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>[,<var class="Arg">mats</var>])</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="func">CoveringGroup</code> calculates a presentation of a covering extension of <span class="SimpleMath">Mul_p</span> by <var class="Arg">G</var>, where <span class="SimpleMath">Mul_p</span> is the <var class="Arg">p</var>-part of the Schur multiplier <var class="Arg">Mul</var> of <var class="Arg">G</var>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <span class="SimpleMath">Mul_p</span>, respectively.</p> <p>The relators fall into three classes:</p> @@ -153,6 +153,17 @@ </dd> </dl> + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= AlternatingGroup( 5 );</span> +Alt( [ 1 .. 5 ] ) +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 60 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">CoveringGroup( C );</span> +<fp group of size 120 on the generators [ f1, f2, f3 ]> +</pre></div> + <p><a id="X7A34884A789EB9A9" name="X7A34884A789EB9A9"></a></p> <h4>1.4 <span class="Heading">FirstCohomologyDimension</span></h4> @@ -184,7 +195,19 @@ <h5>1.6-1 SplitExtensionCHR</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SplitExtensionCHR</code>( <var class="Arg">chr</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="code">SplitExtensionCHR</code> returns a presentation of the split extension of the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var> by the group <var class="Arg">G</var>. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="func">SplitExtensionCHR</code> returns a presentation of the split extension of the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var> by the group <var class="Arg">G</var>. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience.</p> + + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= Group( [ (1,2), (3,4) ] );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 4 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= SplitExtensionCHR( C );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"C2 x C2 x C2" +</pre></div> <p><a id="X85E6B6BB7C54A1BF" name="X85E6B6BB7C54A1BF"></a></p> @@ -195,7 +218,7 @@ <h5>1.7-1 NonsplitExtension</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NonsplitExtension</code>( <var class="Arg">chr</var>[, <var class="Arg">vec</var>] )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. If present, <var class="Arg">vec</var> must be a list of integers of length equal to the dimension over <var class="Arg">K</var> = <span class="SimpleMath">GF(p)</span> of the second cohomology group <span class="SimpleMath">H^2(G,M)</span> of the group <var class="Arg">G</var> in its action on the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var>. <code class="code">NonsplitExtension</code> calculates and returns a presentation of a nonsplit extension of <var class="Arg">M</var> by <var class="Arg">G</var>. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of <span class="SimpleMath" >H^2(G,M)</span>, the optional second parameter can be used to specify an >element of <span class="SimpleMath">H^2(G,M)</span> as a vector. The default >value of this vector is <code class="code">[1,0,...,0]</code>. The set of >generators of the finitely presented group that is returned is a union of two >sets, which are in one-one correspondence with the generators of <var >class="Arg">F</var> and of <var class="Arg">M</var> (as an abelian group), >respectively.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. If present, <var class="Arg">vec</var> must be a list of integers of length equal to the dimension over <var class="Arg">K</var> = <span class="SimpleMath">GF(p)</span> of the second cohomology group <span class="SimpleMath">H^2(G,M)</span> of the group <var class="Arg">G</var> in its action on the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var>. <code class="func">NonsplitExtension</code> calculates and returns a presentation of a nonsplit extension of <var class="Arg">M</var> by <var class="Arg">G</var>. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of <span class="SimpleMath" >H^2(G,M)</span>, the optional second parameter can be used to specify an >element of <span class="SimpleMath">H^2(G,M)</span> as a vector. The default >value of this vector is <code class="code">[1,0,...,0]</code>. The set of >generators of the finitely presented group that is returned is a union of two >sets, which are in one-one correspondence with the generators of <var >class="Arg">F</var> and of <var class="Arg">M</var> (as an abelian group), >respectively.</p> <p>The relators fall into three classes:</p> @@ -210,10 +233,29 @@ </dd> <dt><strong class="Mark">(c)</strong></dt> -<dd><p>Those that give the values of the relators of <var class="Arg">F</var> as elements of <span class="SimpleMath">M</span>. (<em>Note</em>: It is not particularly efficient to call <code class="code">SecondCohomologyDimension</code> first to calculate the dimension of <span class="SimpleMath">H^2(G,M)</span>, which must of course be known if the second parameter is to be given; it is preferable to call <code class="code">NonsplitExtension</code> immediately without the second parameter (which will return one nonsplit extension), and then to call <code class="code">SecondCohomologyDimension</code>, which will at that stage return the required dimension immediately - all subsequent calls of <code class="code">NonsplitExtension</code> on <var class="Arg">chr</var> will also yield immediate results.)</p> +<dd><p>Those that give the values of the relators of <var class="Arg">F</var> as elements of <span class="SimpleMath">M</span>. (<em>Note</em>: It is not particularly efficient to call <code class="code">SecondCohomologyDimension</code> first to calculate the dimension of <span class="SimpleMath">H^2(G,M)</span>, which must of course be known if the second parameter is to be given; it is preferable to call <code class="func">NonsplitExtension</code> immediately without the second parameter (which will return one nonsplit extension), and then to call <code class="func">SecondCohomologyDimension</code> (<a href="chap1.html#X87440B9B7B137892"><span class="RefLink">1.5-1</span></a>), which will at that stage return the required dimension immediately - all subsequent calls of <code class="func">NonsplitExtension</code> on <var class="Arg">chr</var> will also yield immediate results.)</p> </dd> </dl> + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= ElementaryAbelianGroup( IsPermGroup, 4 );</span> +Group([ (1,2), (3,4) ]) +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 4 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">SecondCohomologyDimension( C );</span> +3 +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= NonsplitExtension( C, [ 1, 0, 0 ] );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"D8" +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= NonsplitExtension( C, [ 1, 1, 1 ] );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"Q8" +</pre></div> + <p><a id="X785B656883E116E6" name="X785B656883E116E6"></a></p> <h4>1.8 <span class="Heading">CalcPres</span></h4> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap1.txt new/cohomolo-1.7.1/doc/chap1.txt --- old/cohomolo-1.7.0/doc/chap1.txt 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap1.txt 2026-08-31 02:00:00.000000000 +0200 @@ -98,7 +98,7 @@ [33X[1;0Y[29X[2XCoveringGroup[102X( [3Xchr[103X ) [32X function[133X [33X[0;0Y[3Xchr[103X must be a cohomology-record, created by a call of [10XCHR([3XG[103X[10X,[3Xp[103X[10X,[3XF[103X[10X[,[3Xmats[103X[10X])[110X, - where [3XF[103X is a finitely presented group. [10XCoveringGroup[110X calculates a + where [3XF[103X is a finitely presented group. [2XCoveringGroup[102X calculates a presentation of a covering extension of [22XMul_p[122X by [3XG[103X, where [22XMul_p[122X is the [3Xp[103X-part of the Schur multiplier [3XMul[103X of [3XG[103X. The set of generators of the finitely presented group that is returned is a union of two sets, which are @@ -116,6 +116,16 @@ [8X(c)[108X [33X[0;6YThose that give the values of the relators of [3XF[103X as elements of [22XMul_p[122X.[133X + [4X[32X Example [32X[104X + [4X[25Xgap>[125X [27XG:= AlternatingGroup( 5 );[127X[104X + [4X[28XAlt( [ 1 .. 5 ] )[128X[104X + [4X[25Xgap>[125X [27XF:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );[127X[104X + [4X[28X<fp group of size 60 on the generators [ F1, F2 ]>[128X[104X + [4X[25Xgap>[125X [27XC:= CHR( G, 2, F );;[127X[104X + [4X[25Xgap>[125X [27XCoveringGroup( C );[127X[104X + [4X[28X<fp group of size 120 on the generators [ f1, f2, f3 ]>[128X[104X + [4X[32X[104X + [1X1.4 [33X[0;0YFirstCohomologyDimension[133X[101X @@ -150,11 +160,22 @@ [33X[1;0Y[29X[2XSplitExtensionCHR[102X( [3Xchr[103X ) [32X function[133X [33X[0;0Y[3Xchr[103X must be a cohomology-record, created by a call of [10XCHR([3XG[103X[10X,[3Xp[103X[10X,[3XF[103X[10X,[3Xmats[103X[10X)[110X, where - [3XF[103X is a finitely presented group. [10XSplitExtensionCHR[110X returns a presentation of + [3XF[103X is a finitely presented group. [2XSplitExtensionCHR[102X returns a presentation of the split extension of the module [3XM[103X defined by the matrices [3Xmats[103X by the group [3XG[103X. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience.[133X + [4X[32X Example [32X[104X + [4X[25Xgap>[125X [27XG:= Group( [ (1,2), (3,4) ] );;[127X[104X + [4X[25Xgap>[125X [27XF:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );[127X[104X + [4X[28X<fp group of size 4 on the generators [ F1, F2 ]>[128X[104X + [4X[25Xgap>[125X [27XC:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;[127X[104X + [4X[25Xgap>[125X [27Xext:= SplitExtensionCHR( C );[127X[104X + [4X[28X<fp group of size 8 on the generators [ f1, f2, f3 ]>[128X[104X + [4X[25Xgap>[125X [27XStructureDescription( ext );[127X[104X + [4X[28X"C2 x C2 x C2"[128X[104X + [4X[32X[104X + [1X1.7 [33X[0;0YNonsplitExtension[133X[101X @@ -166,7 +187,7 @@ [3XF[103X is a finitely presented group. If present, [3Xvec[103X must be a list of integers of length equal to the dimension over [3XK[103X = [22XGF(p)[122X of the second cohomology group [22XH^2(G,M)[122X of the group [3XG[103X in its action on the module [3XM[103X defined by the - matrices [3Xmats[103X. [10XNonsplitExtension[110X calculates and returns a presentation of a + matrices [3Xmats[103X. [2XNonsplitExtension[102X calculates and returns a presentation of a nonsplit extension of [3XM[103X by [3XG[103X. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of [22XH^2(G,M)[122X, the optional second parameter can be @@ -189,11 +210,30 @@ ([13XNote[113X: It is not particularly efficient to call [10XSecondCohomologyDimension[110X first to calculate the dimension of [22XH^2(G,M)[122X, which must of course be known if the second parameter is to - be given; it is preferable to call [10XNonsplitExtension[110X immediately + be given; it is preferable to call [2XNonsplitExtension[102X immediately without the second parameter (which will return one nonsplit - extension), and then to call [10XSecondCohomologyDimension[110X, which will at - that stage return the required dimension immediately - all subsequent - calls of [10XNonsplitExtension[110X on [3Xchr[103X will also yield immediate results.)[133X + extension), and then to call [2XSecondCohomologyDimension[102X ([14X1.5-1[114X), which + will at that stage return the required dimension immediately - all + subsequent calls of [2XNonsplitExtension[102X on [3Xchr[103X will also yield immediate + results.)[133X + + [4X[32X Example [32X[104X + [4X[25Xgap>[125X [27XG:= ElementaryAbelianGroup( IsPermGroup, 4 );[127X[104X + [4X[28XGroup([ (1,2), (3,4) ])[128X[104X + [4X[25Xgap>[125X [27XF:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );[127X[104X + [4X[28X<fp group of size 4 on the generators [ F1, F2 ]>[128X[104X + [4X[25Xgap>[125X [27XC:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;[127X[104X + [4X[25Xgap>[125X [27XSecondCohomologyDimension( C );[127X[104X + [4X[28X3[128X[104X + [4X[25Xgap>[125X [27Xext:= NonsplitExtension( C, [ 1, 0, 0 ] );[127X[104X + [4X[28X<fp group of size 8 on the generators [ f1, f2, f3 ]>[128X[104X + [4X[25Xgap>[125X [27XStructureDescription( ext );[127X[104X + [4X[28X"D8"[128X[104X + [4X[25Xgap>[125X [27Xext:= NonsplitExtension( C, [ 1, 1, 1 ] );[127X[104X + [4X[28X<fp group of size 8 on the generators [ f1, f2, f3 ]>[128X[104X + [4X[25Xgap>[125X [27XStructureDescription( ext );[127X[104X + [4X[28X"Q8"[128X[104X + [4X[32X[104X [1X1.8 [33X[0;0YCalcPres[133X[101X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/chap1_mj.html new/cohomolo-1.7.1/doc/chap1_mj.html --- old/cohomolo-1.7.0/doc/chap1_mj.html 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/chap1_mj.html 2026-08-31 02:00:00.000000000 +0200 @@ -137,7 +137,7 @@ <h5>1.3-1 CoveringGroup</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoveringGroup</code>( <var class="Arg">chr</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>[,<var class="Arg">mats</var>])</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="code">CoveringGroup</code> calculates a presentation of a covering extension of <span class="SimpleMath">\(Mul_p\)</span> by <var class="Arg">G</var>, where <span class="SimpleMath">\(Mul_p\)</span> is the <var class="Arg">p</var>-part of the Schur multiplier <var class="Arg">Mul</var> of <var class="Arg">G</var>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <span class="SimpleMath">\(Mul_p\)</span>, respectively.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>[,<var class="Arg">mats</var>])</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="func">CoveringGroup</code> calculates a presentation of a covering extension of <span class="SimpleMath">\(Mul_p\)</span> by <var class="Arg">G</var>, where <span class="SimpleMath">\(Mul_p\)</span> is the <var class="Arg">p</var>-part of the Schur multiplier <var class="Arg">Mul</var> of <var class="Arg">G</var>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <span class="SimpleMath">\(Mul_p\)</span>, respectively.</p> <p>The relators fall into three classes:</p> @@ -156,6 +156,17 @@ </dd> </dl> + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= AlternatingGroup( 5 );</span> +Alt( [ 1 .. 5 ] ) +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 60 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">CoveringGroup( C );</span> +<fp group of size 120 on the generators [ f1, f2, f3 ]> +</pre></div> + <p><a id="X7A34884A789EB9A9" name="X7A34884A789EB9A9"></a></p> <h4>1.4 <span class="Heading">FirstCohomologyDimension</span></h4> @@ -187,7 +198,19 @@ <h5>1.6-1 SplitExtensionCHR</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SplitExtensionCHR</code>( <var class="Arg">chr</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="code">SplitExtensionCHR</code> returns a presentation of the split extension of the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var> by the group <var class="Arg">G</var>. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. <code class="func">SplitExtensionCHR</code> returns a presentation of the split extension of the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var> by the group <var class="Arg">G</var>. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience.</p> + + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= Group( [ (1,2), (3,4) ] );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 4 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= SplitExtensionCHR( C );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"C2 x C2 x C2" +</pre></div> <p><a id="X85E6B6BB7C54A1BF" name="X85E6B6BB7C54A1BF"></a></p> @@ -198,7 +221,7 @@ <h5>1.7-1 NonsplitExtension</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NonsplitExtension</code>( <var class="Arg">chr</var>[, <var class="Arg">vec</var>] )</td><td class="tdright">( function )</td></tr></table></div> -<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. If present, <var class="Arg">vec</var> must be a list of integers of length equal to the dimension over <var class="Arg">K</var> = <span class="SimpleMath">\(GF(p)\)</span> of the second cohomology group <span class="SimpleMath">\(H^2(G,M)\)</span> of the group <var class="Arg">G</var> in its action on the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var>. <code class="code">NonsplitExtension</code> calculates and returns a presentation of a nonsplit extension of <var class="Arg">M</var> by <var class="Arg">G</var>. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of <span class="Sim pleMath">\(H^2(G,M)\)</span>, the optional second parameter can be used to specify an element of <span class="SimpleMath">\(H^2(G,M)\)</span> as a vector. The default value of this vector is <code class="code">[1,0,...,0]</code>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <var class="Arg">M</var> (as an abelian group), respectively.</p> +<p><var class="Arg">chr</var> must be a cohomology-record, created by a call of <code class="code">CHR(<var class="Arg">G</var>,<var class="Arg">p</var>,<var class="Arg">F</var>,<var class="Arg">mats</var>)</code>, where <var class="Arg">F</var> is a finitely presented group. If present, <var class="Arg">vec</var> must be a list of integers of length equal to the dimension over <var class="Arg">K</var> = <span class="SimpleMath">\(GF(p)\)</span> of the second cohomology group <span class="SimpleMath">\(H^2(G,M)\)</span> of the group <var class="Arg">G</var> in its action on the module <var class="Arg">M</var> defined by the matrices <var class="Arg">mats</var>. <code class="func">NonsplitExtension</code> calculates and returns a presentation of a nonsplit extension of <var class="Arg">M</var> by <var class="Arg">G</var>. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of <span class="Sim pleMath">\(H^2(G,M)\)</span>, the optional second parameter can be used to specify an element of <span class="SimpleMath">\(H^2(G,M)\)</span> as a vector. The default value of this vector is <code class="code">[1,0,...,0]</code>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the generators of <var class="Arg">F</var> and of <var class="Arg">M</var> (as an abelian group), respectively.</p> <p>The relators fall into three classes:</p> @@ -213,10 +236,29 @@ </dd> <dt><strong class="Mark">(c)</strong></dt> -<dd><p>Those that give the values of the relators of <var class="Arg">F</var> as elements of <span class="SimpleMath">\(M\)</span>. (<em>Note</em>: It is not particularly efficient to call <code class="code">SecondCohomologyDimension</code> first to calculate the dimension of <span class="SimpleMath">\(H^2(G,M)\)</span>, which must of course be known if the second parameter is to be given; it is preferable to call <code class="code">NonsplitExtension</code> immediately without the second parameter (which will return one nonsplit extension), and then to call <code class="code">SecondCohomologyDimension</code>, which will at that stage return the required dimension immediately - all subsequent calls of <code class="code">NonsplitExtension</code> on <var class="Arg">chr</var> will also yield immediate results.)</p> +<dd><p>Those that give the values of the relators of <var class="Arg">F</var> as elements of <span class="SimpleMath">\(M\)</span>. (<em>Note</em>: It is not particularly efficient to call <code class="code">SecondCohomologyDimension</code> first to calculate the dimension of <span class="SimpleMath">\(H^2(G,M)\)</span>, which must of course be known if the second parameter is to be given; it is preferable to call <code class="func">NonsplitExtension</code> immediately without the second parameter (which will return one nonsplit extension), and then to call <code class="func">SecondCohomologyDimension</code> (<a href="chap1_mj.html#X87440B9B7B137892"><span class="RefLink">1.5-1</span></a>), which will at that stage return the required dimension immediately - all subsequent calls of <code class="func">NonsplitExtension</code> on <var class="Arg">chr</var> will also yield immediate results.)</p> </dd> </dl> + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">G:= ElementaryAbelianGroup( IsPermGroup, 4 );</span> +Group([ (1,2), (3,4) ]) +<span class="GAPprompt">gap></span> <span class="GAPinput">F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );</span> +<fp group of size 4 on the generators [ F1, F2 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;</span> +<span class="GAPprompt">gap></span> <span class="GAPinput">SecondCohomologyDimension( C );</span> +3 +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= NonsplitExtension( C, [ 1, 0, 0 ] );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"D8" +<span class="GAPprompt">gap></span> <span class="GAPinput">ext:= NonsplitExtension( C, [ 1, 1, 1 ] );</span> +<fp group of size 8 on the generators [ f1, f2, f3 ]> +<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription( ext );</span> +"Q8" +</pre></div> + <p><a id="X785B656883E116E6" name="X785B656883E116E6"></a></p> <h4>1.8 <span class="Heading">CalcPres</span></h4> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/cohomolo.xml new/cohomolo-1.7.1/doc/cohomolo.xml --- old/cohomolo-1.7.0/doc/cohomolo.xml 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/cohomolo.xml 2026-08-31 02:00:00.000000000 +0200 @@ -98,6 +98,7 @@ </Description> </ManSection> </Section> + <Section> <Heading>CoveringGroup</Heading> <Index>CoveringGroup!</Index> @@ -106,7 +107,7 @@ <Description> <A>chr</A> must be a cohomology-record, created by a call of <C>CHR(<A>G</A>,<A>p</A>,<A>F</A>[,<A>mats</A>])</C>, where <A>F</A> is a finitely presented group. -<C>CoveringGroup</C> calculates a presentation of a covering extension of <M>Mul_p</M> +<Ref Func="CoveringGroup"/> calculates a presentation of a covering extension of <M>Mul_p</M> by <A>G</A>, where <M>Mul_p</M> is the <A>p</A>-part of the Schur multiplier <A>Mul</A> of <A>G</A>. The set of generators of the finitely presented group that is returned is a union of two sets, which are in one-one correspondence with the @@ -121,9 +122,20 @@ <Mark>(c)</Mark> <Item>Those that give the values of the relators of <A>F</A> as elements of <M>Mul_p</M>.</Item> </List> + +<Example><![CDATA[ +gap> G:= AlternatingGroup( 5 ); +Alt( [ 1 .. 5 ] ) +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 60 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F );; +gap> CoveringGroup( C ); +<fp group of size 120 on the generators [ f1, f2, f3 ]> +]]></Example> </Description> </ManSection> </Section> + <Section> <Heading>FirstCohomologyDimension</Heading> <Index>FirstCohomologyDimension!</Index> @@ -155,6 +167,7 @@ </Description> </ManSection> </Section> + <Section> <Heading>SplitExtensionCHR</Heading> <Index>SplitExtensionCHR!</Index> @@ -163,13 +176,25 @@ <Description> <A>chr</A> must be a cohomology-record, created by a call of <C>CHR(<A>G</A>,<A>p</A>,<A>F</A>,<A>mats</A>)</C>, where <A>F</A> is a finitely presented group. -<C>SplitExtensionCHR</C> returns a presentation of the split extension of the module +<Ref Func="SplitExtensionCHR"/> returns a presentation of the split extension of the module <A>M</A> defined by the matrices <A>mats</A> by the group <A>G</A>. This is a straightforward calculation, and involves no call of the external cohomology programs. It is provided here for convenience. + +<Example><![CDATA[ +gap> G:= Group( [ (1,2), (3,4) ] );; +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 4 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );; +gap> ext:= SplitExtensionCHR( C ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"C2 x C2 x C2" +]]></Example> </Description> </ManSection> </Section> + <Section> <Heading>NonsplitExtension</Heading> <Index>NonsplitExtension!</Index> @@ -181,7 +206,7 @@ If present, <A>vec</A> must be a list of integers of length equal to the dimension over <A>K</A> = <M>GF(p)</M> of the second cohomology group <M>H^2(G,M)</M> of the group <A>G</A> in its action on the module <A>M</A> defined by the matrices <A>mats</A>. -<C>NonsplitExtension</C> calculates and returns a presentation of a nonsplit +<Ref Func="NonsplitExtension"/> calculates and returns a presentation of a nonsplit extension of <A>M</A> by <A>G</A>. Since there may be many such extensions, and the equivalence classes of these extensions are in one-one correspondence with the nonzero elements of <M>H^2(G,M)</M>, the optional second parameter @@ -203,15 +228,34 @@ (<E>Note</E>: It is not particularly efficient to call <C>SecondCohomologyDimension</C> first to calculate the dimension of <M>H^2(G,M)</M>, which must of course be known if the second parameter is to be given; it is preferable to call -<C>NonsplitExtension</C> immediately without the second parameter (which will -return one nonsplit extension), and then to call <C>SecondCohomologyDimension</C>, +<Ref Func="NonsplitExtension"/> immediately without the second parameter (which will +return one nonsplit extension), and then to call <Ref Func="SecondCohomologyDimension"/>, which will at that stage return the required dimension immediately - -all subsequent calls of <C>NonsplitExtension</C> on <A>chr</A> will also yield +all subsequent calls of <Ref Func="NonsplitExtension"/> on <A>chr</A> will also yield immediate results.)</Item> </List> + +<Example><![CDATA[ +gap> G:= ElementaryAbelianGroup( IsPermGroup, 4 ); +Group([ (1,2), (3,4) ]) +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 4 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );; +gap> SecondCohomologyDimension( C ); +3 +gap> ext:= NonsplitExtension( C, [ 1, 0, 0 ] ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"D8" +gap> ext:= NonsplitExtension( C, [ 1, 1, 1 ] ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"Q8" +]]></Example> </Description> </ManSection> </Section> + <Section> <Heading>CalcPres</Heading> <Index>CalcPres!</Index> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/main.tex new/cohomolo-1.7.1/doc/main.tex --- old/cohomolo-1.7.0/doc/main.tex 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/main.tex 2026-08-31 02:00:00.000000000 +0200 @@ -100,8 +100,8 @@ \mbox{}}}\\ \vfill -{\Huge 1.7.0 \mbox{}}\\[1cm] -{ 13 August 2026 \mbox{}}\\[1cm] +{\Huge 1.7.1 \mbox{}}\\[1cm] +{ 31 August 2026 \mbox{}}\\[1cm] \mbox{}\\[2cm] {\Large \textbf{\strut Derek Holt \strut\mbox{}}}\\ \hypersetup{pdfauthor={ Derek Holt }} @@ -231,6 +231,16 @@ \item[{(b)}] Those that say that the generators of $Mul_p$ are central; and \item[{(c)}] Those that give the values of the relators of \mbox{\texttt{\mdseries\slshape F}} as elements of $Mul_p$. \end{description} + +\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example] + !gapprompt@gap>| !gapinput@G:= AlternatingGroup( 5 );| + Alt( [ 1 .. 5 ] ) + !gapprompt@gap>| !gapinput@F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );| + <fp group of size 60 on the generators [ F1, F2 ]> + !gapprompt@gap>| !gapinput@C:= CHR( G, 2, F );;| + !gapprompt@gap>| !gapinput@CoveringGroup( C );| + <fp group of size 120 on the generators [ f1, f2, f3 ]> +\end{Verbatim} } } @@ -286,7 +296,18 @@ \mbox{\texttt{\mdseries\slshape chr}} must be a cohomology\texttt{\symbol{45}}record, created by a call of \texttt{CHR(\mbox{\texttt{\mdseries\slshape G}},\mbox{\texttt{\mdseries\slshape p}},\mbox{\texttt{\mdseries\slshape F}},\mbox{\texttt{\mdseries\slshape mats}})}, where \mbox{\texttt{\mdseries\slshape F}} is a finitely presented group. \texttt{SplitExtensionCHR} returns a presentation of the split extension of the module \mbox{\texttt{\mdseries\slshape M}} defined by the matrices \mbox{\texttt{\mdseries\slshape mats}} by the group \mbox{\texttt{\mdseries\slshape G}}. This is a straightforward calculation, and involves no call of the external -cohomology programs. It is provided here for convenience. } +cohomology programs. It is provided here for convenience. +\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example] + !gapprompt@gap>| !gapinput@G:= Group( [ (1,2), (3,4) ] );;| + !gapprompt@gap>| !gapinput@F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );| + <fp group of size 4 on the generators [ F1, F2 ]> + !gapprompt@gap>| !gapinput@C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;| + !gapprompt@gap>| !gapinput@ext:= SplitExtensionCHR( C );| + <fp group of size 8 on the generators [ f1, f2, f3 ]> + !gapprompt@gap>| !gapinput@StructureDescription( ext );| + "C2 x C2 x C2" +\end{Verbatim} + } } @@ -316,9 +337,27 @@ \item[{(b)}] Those that define the action of the generators of \mbox{\texttt{\mdseries\slshape F}} on those of \mbox{\texttt{\mdseries\slshape M}}; and \item[{(c)}] Those that give the values of the relators of \mbox{\texttt{\mdseries\slshape F}} as elements of $M$. (\emph{Note}: It is not particularly efficient to call \texttt{SecondCohomologyDimension} first to calculate the dimension of $H^2(G,M)$, which must of course be known if the second parameter is to be given; it is preferable to call \texttt{NonsplitExtension} immediately without the second parameter (which will return one nonsplit -extension), and then to call \texttt{SecondCohomologyDimension}, which will at that stage return the required dimension immediately +extension), and then to call \texttt{SecondCohomologyDimension} (\ref{SecondCohomologyDimension}), which will at that stage return the required dimension immediately \texttt{\symbol{45}} all subsequent calls of \texttt{NonsplitExtension} on \mbox{\texttt{\mdseries\slshape chr}} will also yield immediate results.) \end{description} + +\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example] + !gapprompt@gap>| !gapinput@G:= ElementaryAbelianGroup( IsPermGroup, 4 );| + Group([ (1,2), (3,4) ]) + !gapprompt@gap>| !gapinput@F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) );| + <fp group of size 4 on the generators [ F1, F2 ]> + !gapprompt@gap>| !gapinput@C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );;| + !gapprompt@gap>| !gapinput@SecondCohomologyDimension( C );| + 3 + !gapprompt@gap>| !gapinput@ext:= NonsplitExtension( C, [ 1, 0, 0 ] );| + <fp group of size 8 on the generators [ f1, f2, f3 ]> + !gapprompt@gap>| !gapinput@StructureDescription( ext );| + "D8" + !gapprompt@gap>| !gapinput@ext:= NonsplitExtension( C, [ 1, 1, 1 ] );| + <fp group of size 8 on the generators [ f1, f2, f3 ]> + !gapprompt@gap>| !gapinput@StructureDescription( ext );| + "Q8" +\end{Verbatim} } } Binary files old/cohomolo-1.7.0/doc/manual.pdf and new/cohomolo-1.7.1/doc/manual.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/manual.six new/cohomolo-1.7.1/doc/manual.six --- old/cohomolo-1.7.0/doc/manual.six 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/manual.six 2026-08-31 02:00:00.000000000 +0200 @@ -16,26 +16,26 @@ [ "\033[1X\033[33X\033[0;-2YCoveringGroup\033[133X\033[101X", "1.3", [ 1, 3, 0 ], 93, 4, "coveringgroup", "X83494C06840C24F6" ], [ "\033[1X\033[33X\033[0;-2YFirstCohomologyDimension\033[133X\033[101X", - "1.4", [ 1, 4, 0 ], 119, 5, "firstcohomologydimension", + "1.4", [ 1, 4, 0 ], 129, 5, "firstcohomologydimension", "X7A34884A789EB9A9" ], [ "\033[1X\033[33X\033[0;-2YSecondCohomologyDimension\033[133X\033[101X", - "1.5", [ 1, 5, 0 ], 132, 5, "secondcohomologydimension", + "1.5", [ 1, 5, 0 ], 142, 5, "secondcohomologydimension", "X87440B9B7B137892" ], [ "\033[1X\033[33X\033[0;-2YSplitExtensionCHR\033[133X\033[101X", "1.6", - [ 1, 6, 0 ], 145, 5, "splitextensionchr", "X7DC573BE856F0320" ], + [ 1, 6, 0 ], 155, 5, "splitextensionchr", "X7DC573BE856F0320" ], [ "\033[1X\033[33X\033[0;-2YNonsplitExtension\033[133X\033[101X", "1.7", - [ 1, 7, 0 ], 158, 5, "nonsplitextension", "X85E6B6BB7C54A1BF" ], + [ 1, 7, 0 ], 179, 6, "nonsplitextension", "X85E6B6BB7C54A1BF" ], [ "\033[1X\033[33X\033[0;-2YCalcPres\033[133X\033[101X", "1.8", - [ 1, 8, 0 ], 198, 6, "calcpres", "X785B656883E116E6" ], + [ 1, 8, 0 ], 238, 7, "calcpres", "X785B656883E116E6" ], [ "\033[1X\033[33X\033[0;-2YPermRep\033[133X\033[101X", "1.9", [ 1, 9, 0 ], - 212, 6, "permrep", "X84A1474A84A1474A" ], + 252, 7, "permrep", "X84A1474A84A1474A" ], [ "\033[1X\033[33X\033[0;-2YFurther Information\033[133X\033[101X", "1.10", - [ 1, 10, 0 ], 225, 6, "further information", "X7A5F3AD27C649B0B" ], - [ "Bibliography", "bib", [ "Bib", 0, 0 ], 1, 8, "bibliography", + [ 1, 10, 0 ], 265, 7, "further information", "X7A5F3AD27C649B0B" ], + [ "Bibliography", "bib", [ "Bib", 0, 0 ], 1, 9, "bibliography", "X7A6F98FD85F02BFE" ], - [ "References", "bib", [ "Bib", 0, 0 ], 1, 8, "references", + [ "References", "bib", [ "Bib", 0, 0 ], 1, 9, "references", "X7A6F98FD85F02BFE" ], - [ "Index", "ind", [ "Ind", 0, 0 ], 1, 9, "index", "X83A0356F839C696F" ], + [ "Index", "ind", [ "Ind", 0, 0 ], 1, 10, "index", "X83A0356F839C696F" ], [ "Cohomology!", "1.0", [ 1, 0, 0 ], 1, 3, "cohomology!", "X84CFC57B7E9CCCF7" ], [ "CHR!", "1.1", [ 1, 1, 0 ], 62, 4, "chr!", "X7CE09B357B95D5AE" ], @@ -49,27 +49,27 @@ "X83494C06840C24F6" ], [ "\033[2XCoveringGroup\033[102X", "1.3-1", [ 1, 3, 1 ], 96, 4, "coveringgroup", "X83494C06840C24F6" ], - [ "FirstCohomologyDimension!", "1.4", [ 1, 4, 0 ], 119, 5, + [ "FirstCohomologyDimension!", "1.4", [ 1, 4, 0 ], 129, 5, "firstcohomologydimension!", "X7A34884A789EB9A9" ], - [ "\033[2XFirstCohomologyDimension\033[102X", "1.4-1", [ 1, 4, 1 ], 122, 5, + [ "\033[2XFirstCohomologyDimension\033[102X", "1.4-1", [ 1, 4, 1 ], 132, 5, "firstcohomologydimension", "X7A34884A789EB9A9" ], - [ "SecondCohomologyDimension!", "1.5", [ 1, 5, 0 ], 132, 5, + [ "SecondCohomologyDimension!", "1.5", [ 1, 5, 0 ], 142, 5, "secondcohomologydimension!", "X87440B9B7B137892" ], - [ "\033[2XSecondCohomologyDimension\033[102X", "1.5-1", [ 1, 5, 1 ], 135, + [ "\033[2XSecondCohomologyDimension\033[102X", "1.5-1", [ 1, 5, 1 ], 145, 5, "secondcohomologydimension", "X87440B9B7B137892" ], - [ "SplitExtensionCHR!", "1.6", [ 1, 6, 0 ], 145, 5, "splitextensionchr!", + [ "SplitExtensionCHR!", "1.6", [ 1, 6, 0 ], 155, 5, "splitextensionchr!", "X7DC573BE856F0320" ], - [ "\033[2XSplitExtensionCHR\033[102X", "1.6-1", [ 1, 6, 1 ], 148, 5, + [ "\033[2XSplitExtensionCHR\033[102X", "1.6-1", [ 1, 6, 1 ], 158, 5, "splitextensionchr", "X7DC573BE856F0320" ], - [ "NonsplitExtension!", "1.7", [ 1, 7, 0 ], 158, 5, "nonsplitextension!", + [ "NonsplitExtension!", "1.7", [ 1, 7, 0 ], 179, 6, "nonsplitextension!", "X85E6B6BB7C54A1BF" ], - [ "\033[2XNonsplitExtension\033[102X", "1.7-1", [ 1, 7, 1 ], 161, 5, + [ "\033[2XNonsplitExtension\033[102X", "1.7-1", [ 1, 7, 1 ], 182, 6, "nonsplitextension", "X85E6B6BB7C54A1BF" ], - [ "CalcPres!", "1.8", [ 1, 8, 0 ], 198, 6, "calcpres!", "X785B656883E116E6" + [ "CalcPres!", "1.8", [ 1, 8, 0 ], 238, 7, "calcpres!", "X785B656883E116E6" ], - [ "\033[2XCalcPres\033[102X", "1.8-1", [ 1, 8, 1 ], 201, 6, "calcpres", + [ "\033[2XCalcPres\033[102X", "1.8-1", [ 1, 8, 1 ], 241, 7, "calcpres", "X785B656883E116E6" ], - [ "PermRep!", "1.9", [ 1, 9, 0 ], 212, 6, "permrep!", "X84A1474A84A1474A" ], - [ "\033[2XPermRep\033[102X", "1.9-1", [ 1, 9, 1 ], 215, 6, "permrep", + [ "PermRep!", "1.9", [ 1, 9, 0 ], 252, 7, "permrep!", "X84A1474A84A1474A" ], + [ "\033[2XPermRep\033[102X", "1.9-1", [ 1, 9, 1 ], 255, 7, "permrep", "X84A1474A84A1474A" ] ] ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/doc/title.xml new/cohomolo-1.7.1/doc/title.xml --- old/cohomolo-1.7.0/doc/title.xml 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/doc/title.xml 2026-08-31 02:00:00.000000000 +0200 @@ -9,7 +9,7 @@ Cohomology groups of finite groups on finite modules </Subtitle> <Version> - 1.7.0 + 1.7.1 </Version> <Author> Derek Holt @@ -23,6 +23,6 @@ <Homepage>http://homepages.warwick.ac.uk/staff/D.F.Holt/</Homepage> </Author> <Date> - 13 August 2026 + 31 August 2026 </Date> </TitlePage> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/gap/coho4.g new/cohomolo-1.7.1/gap/coho4.g --- old/cohomolo-1.7.0/gap/coho4.g 2026-08-13 02:00:00.000000000 +0200 +++ new/cohomolo-1.7.1/gap/coho4.g 2026-08-31 02:00:00.000000000 +0200 @@ -859,7 +859,15 @@ od; Add(Erels,w); od; - return E/Erels; + E:= E/Erels; + if HasSize( F ) then + if mult then + SetSize( E, Size( F ) * Product( chr.multiplier, 1 ) ); + else + SetSize( E, Size( F ) * chr.prime^dim ); + fi; + fi; + return E; end ); ############################################################################# @@ -990,7 +998,7 @@ ############################################################################# ## -#F PermRep( <F>, <K> ). . . calculate permutation represenation of fp-group +#F PermRep( <F>, <K> ). . . calculate permutation representation of fp-group ## ## <F> should be a finitely presented group and <K> a subgroup of finite ## index. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cohomolo-1.7.0/tst/cohomolo01.tst new/cohomolo-1.7.1/tst/cohomolo01.tst --- old/cohomolo-1.7.0/tst/cohomolo01.tst 1970-01-01 01:00:00.000000000 +0100 +++ new/cohomolo-1.7.1/tst/cohomolo01.tst 2026-08-31 02:00:00.000000000 +0200 @@ -0,0 +1,50 @@ +# cohomolo, chapter 1 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! +# +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("cohomolo01.tst"); + +# doc/cohomolo.xml:126-134 +gap> G:= AlternatingGroup( 5 ); +Alt( [ 1 .. 5 ] ) +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 60 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F );; +gap> CoveringGroup( C ); +<fp group of size 120 on the generators [ f1, f2, f3 ]> + +# doc/cohomolo.xml:184-193 +gap> G:= Group( [ (1,2), (3,4) ] );; +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 4 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );; +gap> ext:= SplitExtensionCHR( C ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"C2 x C2 x C2" + +# doc/cohomolo.xml:238-254 +gap> G:= ElementaryAbelianGroup( IsPermGroup, 4 ); +Group([ (1,2), (3,4) ]) +gap> F:= Image( IsomorphismFpGroupByGenerators( G, GeneratorsOfGroup(G) ) ); +<fp group of size 4 on the generators [ F1, F2 ]> +gap> C:= CHR( G, 2, F, [ [[1]], [[1]] ] * Z(2) );; +gap> SecondCohomologyDimension( C ); +3 +gap> ext:= NonsplitExtension( C, [ 1, 0, 0 ] ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"D8" +gap> ext:= NonsplitExtension( C, [ 1, 1, 1 ] ); +<fp group of size 8 on the generators [ f1, f2, f3 ]> +gap> StructureDescription( ext ); +"Q8" + +# +gap> STOP_TEST("cohomolo01.tst", 1);
