Please send suggestions, additions, corrections to
David Joyner.
This page itself is under construction...
|
How
do I construct ... group?
|
How
do I ... a polynomial?
|
|
How do I find the ... of a group
representation?
|
|
|
How
do I compute an mod m, where A is ...?
|
Given
a group G, how do I compute ... ?
|
The permutation group G generated by the cycles (1,2)(3,4) and (1,2,3):
gap> G:=Group((1,2)(3,4),(1,2,3));This is of course a subgroup of the symmetric group S4 on 4 letters. Indeed, this G is in fact the alternating group on four letters, A4.
Group([ (1,2)(3,4), (1,2,3) ])
By virtue of the fact that the permutations generating G employ integers less than or equal to 4, this group G is a subgroup of the symmetric group S4 on 4 letters. Some permutation groups have special constructions:
gap> S4:=SymmetricGroup(4);
Sym( [ 1 .. 4 ] )
gap> A4:=AlternatingGroup(4);
Alt( [ 1 .. 4 ] )
gap> IsSubgroup(S4,G);
true
gap> IsSubgroup(A4,G);
true
gap> S3:=SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap> IsSubgroup(S3,G);
false
gap> G:=DihedralGroup(6);gap> Size(G); 6 gap> f:=GeneratorsOfGroup( G ); [ f1, f2 ] gap> f[1]^2; f[2]^3; identity of ... identity of ... gap> f[1]^2= f[2]^3; true
gap> R:=ZmodnZ( 12); (Integers mod 12) gap> a:=Random(R); ZmodnZObj( 11, 12 ) gap> 4*a; ZmodnZObj( 8, 12 ) gap> b:=Random(R); ZmodnZObj( 9, 12 ) gap> a+b; ZmodnZObj( 8, 12 )or use the special "CyclicGroup" command
gap> G:=CyclicGroup(12); pc group of size 12 with 3 generators gap> a:=Random(G); f3^2 gap> f:=GeneratorsOfGroup( G ); [ f1, f2, f3 ] gap> f[1]^4; f3 gap> f[1]^12; identity of ...
gap> G:=SL(2,7); SL(2,7) gap> CG:=ConjugacyClasses(G); [ [ [ Z(7)^0, 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ]^G, [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, Z(7)^5 ] ]^G, [ [ 0*Z(7), Z(7)^4 ], [ Z(7)^5, Z(7)^5 ] ]^G, [ [ Z(7)^3, 0*Z(7) ], [ 0*Z(7), Z(7)^3 ] ]^G, [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, Z(7)^2 ] ]^G, [ [ 0*Z(7), Z(7)^4 ], [ Z(7)^5, Z(7)^2 ] ]^G, [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ]^G, [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, Z(7)^4 ] ]^G, [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, Z(7) ] ]^G, [ [ Z(7)^4, 0*Z(7) ], [ 0*Z(7), Z(7)^2 ] ]^G, [ [ Z(7)^5, 0*Z(7) ], [ 0*Z(7), Z(7) ] ]^G ] gap> g:=Representative(CG[3]); Order(g); [ [ 0*Z(7), Z(7)^4 ], [ Z(7)^5, Z(7)^5 ] ] 14 gap> g:=Representative(CG[4]); Order(g); [ [ Z(7)^3, 0*Z(7) ], [ 0*Z(7), Z(7)^3 ] ] 2 gap> g:=Representative(CG[5]); Order(g); [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, Z(7)^2 ] ] 7 gap> g:=Representative(CG[6]); Order(g); [ [ 0*Z(7), Z(7)^4 ], [ Z(7)^5, Z(7)^2 ] ] 7 gap>
gap> M12 := MathieuGroup( 12 ); Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) gap> F := FreeGroup( "a", "b", "c" ); free group on the generators [ a, b, c ] gap> words := [ F.1, F.2 ]; [ a, b ] gap> P := PresentationViaCosetTable( M12, F, words ); presentation with 3 gens and 10 rels of total length 97 gap> TzPrintRelators( P ); #I 1. c^2 #I 2. b^4 #I 3. a*c*a*c*a*c #I 4. a*b^2*a*b^-2*a*b^-2 #I 5. a^11 #I 6. a^2*b*a^-2*b^2*a*b^-1*a^2*b^-1 #I 7. a*b*a^-1*b*a^-1*b^-1*a*b*a^-1*b*a^-1*b^-1 #I 8. a^2*b*a^2*b^2*a^-1*b*a^-1*b^-1*a^-1*b^-1 #I 9. a*b*a*b*a^2*b^-1*a^-1*b^-1*a*c*b*c #I 10. a^4*b*a^2*b*a^-2*c*a*b*a^-1*c gap> G := FpGroupPresentation( P ); fp group on the generators [ a, b, c ] gap> RelatorsOfFpGroup( G ); [ c^2, b^4, a*c*a*c*a*c, a*b^-2*a*b^-2*a*b^-2, a^11, a^2*b*a^-2*b^-2*a*b^-1*a^2*b^-1, a*b*a^-1*b*a^-1*b^-1*a*b*a^-1*b*a^-1*b^-1, a^2*b*a^2*b^-2*a^-1*b*a^-1*b^-1*a^-1*b^-1, a*b*a*b*a^2*b^-1*a^-1*b^-1*a*c*b*c, a^4*b*a^2*b*a^-2*c*a*b*a^-1*c ] gap> Size(M12); 95040 gap> Size(G); 95040 gap> IsomorphismGroups(G,M12); ????????The last command is computationally intensive and requires more than the default memory allocation of 256M of RAM.
Here is another example.
gap> F := FreeGroup( "a", "b"); free group on the generators [ a, b ] gap> G:=F/[F.1^2,F.2^3,F.1*F.2*F.1^(-1)*F.2^(-1)]; fp group on the generators [ a, b ] gap> Size(G); 6
gap> M:=[[1,2,3,4,5],[1,2,1,2,1],[1,1,0,0,0]]; [ [ 1, 2, 3, 4, 5 ], [ 1, 2, 1, 2, 1 ], [ 1, 1, 0, 0, 0 ] ] gap> TriangulizeMat(M); gap> M; [ [ 1, 0, 0, -1, 1 ], [ 0, 1, 0, 1, -1 ], [ 0, 0, 1, 1, 2 ] ] gap> Display(M); [ [ 1, 0, 0, -1, 1 ], [ 0, 1, 0, 1, -1 ], [ 0, 0, 1, 1, 2 ] ] gap> M:=Z(3)^0*[[1,2,3,4,5],[1,2,1,2,1],[1,1,0,0,0]]; [ [ Z(3)^0, Z(3), 0*Z(3), Z(3)^0, Z(3) ], [ Z(3)^0, Z(3), Z(3)^0, Z(3), Z(3)^0 ], [ Z(3)^0, Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ] ] gap> TriangulizeMat(M); gap> Display(M); 1 . . 2 1 . 1 . 1 2 . . 1 1 2 gap>
For integer entries, related commands include "NullspaceIntMat" and "SolutionNullspaceIntMat" in section 25.1 "Linear equations over the integers and Integral Matrices" of the reference manual.
gap> M:=[[1,2,3],[4,5,6],[7,8,9]]; [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] gap> NullspaceIntMat(M); [ [ 1, -2, 1 ] ] gap> SolutionNullspaceIntMat(M,[0,0,1]); [ fail, [ [ 1, -2, 1 ] ] ] gap> SolutionNullspaceIntMat(M,[0,0,0]); [ [ 0, 0, 0 ], [ [ 1, -2, 1 ] ] ] gap> SolutionNullspaceIntMat(M,[1,2,3]); [ [ 1, 0, 0 ], [ [ 1, -2, 1 ] ] ]Here (0,0,1) is not in the image of M (under v-> v*M) but (0,0,0) and (1,2,3) are.
For field entries, related commands include "NullspaceMat" and "TriangulizedNullspaceMat" in section 24.6 "Matrices Representing Linear Equations and the Gaussian Algorithm" of the reference manual.
gap> M:=[[1,2,3],[4,5,6],[7,8,9]]; [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] gap> NullspaceMat(M); [ [ 1, -2, 1 ] ] gap> TriangulizedNullspaceMat(M); [ [ 1, -2, 1 ] ] gap> M:=[[1,2,3,1,1],[4,5,6,1,1],[7,8,9,1,1],[1,2,3,1,1]]; [ [ 1, 2, 3, 1, 1 ], [ 4, 5, 6, 1, 1 ], [ 7, 8, 9, 1, 1 ], [ 1, 2, 3, 1, 1 ] ] gap> NullspaceMat(M); [ [ 1, -2, 1, 0 ], [ -1, 0, 0, 1 ] ] gap> TriangulizedNullspaceMat(M); [ [ 1, 0, 0, -1 ], [ 0, 1, -1/2, -1/2 ] ]
gap> G:=Group((1,2)(3,4),(1,2,3));
Group([ (1,2)(3,4), (1,2,3) ])
gap> T:=CharacterTable(G);
CharacterTable( Alt( [ 1 .. 4 ] ) )
gap> Display(T);
CT1
2 2 2 . .
3 1 . 1 1
1a 2a 3a 3b
2P 1a 1a 3b 3a
3P 1a 2a 1a 1a
X.1 1 1 1 1
X.2 1 1 A /A
X.3 1 1 /A A
X.4 3 -1 . .
A = E(3)^2
= (-1-ER(-3))/2 = -1-b3
gap> irr:=Irr(G);
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, E(3)^2, E(3) ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, E(3), E(3)^2 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 3, -1, 0, 0 ] ) ]
gap> Display(irr);
[ [ 1, 1, 1, 1 ],
[ 1, 1, E(3)^2, E(3) ],
[ 1, 1, E(3), E(3)^2 ],
[ 3, -1, 0, 0 ] ]
gap> chi:=irr[2]; gamma:=CG[3]; g:=Representative(gamma); g^chi;
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, E(3)^2, E(3) ] )
(1,2,3)^G
(1,2,3)
E(3)^2
For further details and examples, see chapters
69-
72 of the
GAP reference manual.
gap> G:=Group((1,2)(3,4),(1,2,3));
Group([ (1,2)(3,4), (1,2,3) ])
gap> irr:=IrreducibleRepresentations(G,GF(7));
[ [ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^0 ] ] ],
[ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^4 ] ] ],
[ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^2 ] ] ],
[ (1,2)(3,4), (1,2,3) ] -> [
[ [ 0*Z(7), Z(7)^3, Z(7)^0 ], [ 0*Z(7), Z(7)^3, 0*Z(7) ], [ Z(7)^0, Z(7)^3, 0*Z(7) ] ],
[ [ 0*Z(7), Z(7)^0, 0*Z(7) ], [ 0*Z(7), 0*Z(7), Z(7)^0 ], [ Z(7)^0, 0*Z(7), 0*Z(7) ] ]
] ]
gap> brvals := List(irr,chi-> List(ConjugacyClasses(G),c-> BrauerCharacterValue(Image(chi, Representative(c)))));
[ [ 1, 1, 1, 1 ], [ 1, 1, E(3)^2, E(3) ], [ 1, 1, E(3), E(3)^2 ], [ 3, -1, 0, 0 ] ]
gap> Display(brvals);
[ [ 1, 1, 1, 1 ],
[ 1, 1, E(3)^2, E(3) ],
[ 1, 1, E(3), E(3)^2 ],
[ 3, -1, 0, 0 ] ]
gap>
gap> Pts:=Z(7)^0*[1,2,3]; [ Z(7)^0, Z(7)^2, Z(7) ] gap> Vals:=Z(7)^0*[1,2,6]; [ Z(7)^0, Z(7)^2, Z(7)^3 ] gap> g:=InterpolatedPolynomial(GF(7),Pts,Vals); Z(7)^5*x_1^2+Z(7)Or:
gap> p:=3;; F:=GF(p);; gap> R:=PolynomialRing(F,["x1","x2"]); PolynomialRing(..., [ x1, x2 ]) gap> vars:=IndeterminatesOfPolynomialRing(R);; gap> x1:=vars[1]; x2:=vars[2]; x1 x2 gap> p:=x1^5-x2^5; x1^5-x2^5 gap> DivisorsMultivariatePolynomial(p,R); [ x1^4+x1^3*x2+x1^2*x2^2+x1*x2^3+x2^4, x1-x2 ]Or:
gap> x:=X(Rationals); x_1 gap> f:=x+x^2+1; x_1^2+x_1+1 gap> Value(f,[x],[1]); 3
For a factoring a univariate polynomial, GAP provides only methods over finite fields and over subfields of cyclotomic fields. Please see the examples given in section 64.10 "Polynomial Factorization" for more details.
For multivariate polynomials, a very slow algorithm has been implemented in GAP and an interface to a very fast algorithm in Singular has been implemented for those who have both Singular and the GAP Singular package installed. The former of these was illustrated above in "polynomial" above. (Again, the ground field must be a finite field or a subfields of cyclotomic fields.) For the latter, please see the example in the (GAP-)Singular manual FactorsUsingSingularNC.
The "Factors" command actually has an option which allows you to increase the groundfield so that a factorization actually returns the roots. Please see the examples given in section 64.10 "Polynomial Factorization" for more details.
Here is a second appoach.
gap> p:=3; n:=4; F:=GF(p^n); c:=Random(F); r:=2; 3 4 GF(3^4) Z(3^4)^79 2 gap> x:=X(F,1); f:=x^r-c*x+c-1; x_1 x_1^2+Z(3^4)^39*x_1+Z(3^4)^36 gap> F_f:=FieldExtension( F, f ); AsField( GF(3^4), GF(3^8) ) gap> alpha:=RootOfDefiningPolynomial(F_f); Z(3^4)^36 gap> Value(f,[x],[alpha]); 0*Z(3)Here is a third. First, enter the following program:
RootOfPolynomial:=function(f,R) local F0,Ff,a; F0:=CoefficientsRing(R); Ff:=FieldExtension(F0,f); a:=RootOfDefiningPolynomial(Ff); return a; end;Here's how this can be used to find a root:
gap> F:=Rationals; Rationals gap> x:=X(F,1); f:=x^2+x+1; x_1 x_1^2+x_1+1 gap> R:=PolynomialRing( F, [ x ]); PolynomialRing(..., [ x_1 ]) gap> a:=RootOfPolynomial(f,R); E(3) gap> # check: gap> Value(f,[x],[a]); 0
Related links:
gap> a:=1000; n:=100000; m:=123; 1000 100000 123 gap> a^n mod m; 1
gap> A:=[[1,2],[3,4]]; n:=100000; m:=123; [ [ 1, 2 ], [ 3, 4 ] ] 100000 123 gap> A^n mod m; [ [ 1, 41 ], [ 0, 1 ] ]
gap> Z4:=ZmodnZ(4); (Integers mod 4) gap> R:=UnivariatePolynomialRing(Z4,1); PolynomialRing(..., [ x ]) gap> x:=IndeterminatesOfPolynomialRing(R)[1]; x gap> I:=TwoSidedIdealByGenerators( R,[x^8-x^0]); two-sided ideal in PolynomialRing(..., [ x ]), (1 generators) gap> gen:=x^8-x^0; x8-ZmodnZObj(1,4) gap> QuotientRemainder(R,x^8,gen); [ ZmodnZObj(1,4), ZmodnZObj(1,4) ] gap> QuotientRemainder(R,x^15,gen); [ x^7, x^7 ] gap> QuotientRemainder(R,x^15+x^8,gen); [ x^7+ZmodnZObj(1,4), x^7+ZmodnZObj(1,4) ] gap> PowerMod( R, x+x^0, 15, gen ); ZmodnZObj(0,4) gap> PowerMod( R, x, 15, gen ); x^7
gap> G := AlternatingGroup( 5 );
Group( (1,2,5), (2,3,5), (3,4,5) )
gap> normal := NormalSubgroups( G );
[ Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ), [ ] ),
Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (1,2)(3,4), (1,3)(4,5), (1,4)(2,3) ] ) ]
Related links:
gap> G := AlternatingGroup( 5 );
Group( (1,2,5), (2,3,5), (3,4,5) )
gap> classes := ConjugacyClassesSubgroups( G );
[ ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ), [ ] ) ),
ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5) ] ) ), ConjugacyClassSubgroups( Group( (1,2,5),
(2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (3,4,5) ] ) ), ConjugacyClassSubgroups( Group( (1,2,5),
(2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5), (2,4)(3,5) ] ) ), ConjugacyClassSubgroups( Group(
(1,2,5), (2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5),
(3,4,5) ), [ (1,2,3,4,5) ] ) ), ConjugacyClassSubgroups( Group(
(1,2,5), (2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5),
(3,4,5) ), [ (3,4,5), (1,2)(4,5) ] ) ),
ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (1,2,3,4,5), (2,5)(3,4) ] ) ), ConjugacyClassSubgroups( Group(
(1,2,5), (2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5),
(3,4,5) ), [ (2,3)(4,5), (2,4)(3,5), (3,4,5) ] ) ),
ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5), (3,4,5) ), Group(
(1,2,5), (2,3,5), (3,4,5) ) ) ]
gap> cl := classes[4];
ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5), (2,4)(3,5) ] ) )
gap> length := Size( cl );
5
gap> rep := Representative( cl );
Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5), (2,4)(3,5) ] )
gap> order := Size( rep );
4
gap> IsAbelian( rep );
true
gap> abel := Filtered( classes, cl -> IsAbelian( Representative( cl ) ) );
[ ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ), [ ] ) ),
ConjugacyClassSubgroups( Group( (1,2,5), (2,3,5),
(3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5) ] ) ), ConjugacyClassSubgroups( Group( (1,2,5),
(2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (3,4,5) ] ) ), ConjugacyClassSubgroups( Group( (1,2,5),
(2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5), (3,4,5) ),
[ (2,3)(4,5), (2,4)(3,5) ] ) ), ConjugacyClassSubgroups( Group(
(1,2,5), (2,3,5), (3,4,5) ), Subgroup( Group( (1,2,5), (2,3,5),
(3,4,5) ), [ (1,2,3,4,5) ] ) ) ]
Here's an illustration of how to convert a finitely presented group into a permutation group.
gap> p:=7;
7
gap> G:=PSL(2,p);
Group([ (3,7,5)(4,8,6), (1,2,6)(3,4,8) ])
gap> H:=SchurCover(G);
fp group of size 336 on the generators [ f1, f2, f3 ]
gap> iso:=IsomorphismPermGroup(H);
[ f1, f2, f3 ] -> [ (1,2,4,3)(5,9,7,10)(6,11,8,12)(13,14,15,16),
(2,5,6)(3,7,8)(11,13,14)(12,15,16), (1,4)(2,3)(5,7)(6,8)(9,10)(11,12)(13,
15)(14,16) ]
gap> H0:=Image(iso); # 2-cover of PSL2
Group([ (1,2,4,3)(5,9,7,10)(6,11,8,12)(13,14,15,16),
(2,5,6)(3,7,8)(11,13,14)(12,15,16), (1,4)(2,3)(5,7)(6,8)(9,10)(11,12)(13,
15)(14,16) ])
gap> IdGroup(H0);
[ 336, 114 ]
gap> IdGroup(SL(2,7));
[ 336, 114 ]
gap>
N:=CyclicGroup(IsPermGroup,4); G:=CyclicGroup(IsPermGroup,2); AutN:=AutomorphismGroup(N); f:=GroupHomomorphismByImages(G,AutN,GeneratorsOfGroup(G),[Elements(AutN)[2]]); NG:=SemidirectProduct(G,f,N);Verify with
StructureDescription(NG);
#D12 = (C2 x C2) : C3
G1:=CyclicGroup(IsPermGroup,2);
G2:=CyclicGroup(IsPermGroup,2);
G:=DirectProduct(G1,G2);
N:=CyclicGroup(IsPermGroup,3);
AutN:=AutomorphismGroup(N);
f:=GroupHomomorphismByImages(G,AutN,[Elements(G)[1],Elements(G)[2],Elements(G)[3],Elements(G)[4]],[Elements(AutN)[1],Elements(AutN)[2],Elements(AutN)[1],Elements(AutN)[2]]);
NG:=SemidirectProduct(G,f,N);
Print(str(NG));
Print("\n");
#T = C4 : C3
G:=CyclicGroup(IsPermGroup,4);
N:=CyclicGroup(IsPermGroup,3);
AutN:=AutomorphismGroup(N);
f:=GroupHomomorphismByImages(G,AutN,[Elements(G)[1],Elements(G)[2],Elements(G)[3],Elements(G)[4]],[Elements(AutN)[1],Elements(AutN)[2],Elements(AutN)[1],Elements(AutN)[2]]);
NG:=SemidirectProduct(G,f,N);
Print(str(NG));
Print("\n");
#A4 = C3 : (C2 x C2)
G:=CyclicGroup(IsPermGroup,3);
N1:=CyclicGroup(IsPermGroup,2);
N2:=CyclicGroup(IsPermGroup,2);
N:=DirectProduct(G1,G2);
AutN:=AutomorphismGroup(N);
f:=GroupHomomorphismByImages(G,AutN,[Elements(G)[1],Elements(G)[2],Elements(G)[3]],[Elements(AutN)[1],Elements(AutN)[4],Elements(AutN)[5]]);
NG:=SemidirectProduct(G,f,N);
Print(str(NG));
Print("\n");
gap> A5:=AlternatingGroup(5); Alt( [ 1 .. 5 ] ) gap> AbelianInvariantsMultiplier(A5); [ 2 ]So, H2(A5,C) is Z/2Z.
Related links:
Last modified 8-30-2007 by David Joyner.