
Section 4: Proof that An is Simple
gap> a4:= AlternatingGroup(4); Alt( [ 1 .. 4 ] ) gap> ConjugacyClasses(a4); [ ()^G, (1,2)(3,4)^G, (1,2,3)^G, (1,2,4)^G ] gap> c:= ConjugacyClass(a4, (1,2,3)); (1,2,3)^G gap> Elements(c); [ (2,4,3), (1,2,3), (1,3,4), (1,4,2) ]
Exercise 4.2 gap> a6:= AlternatingGroup(6); Alt( [ 1 .. 6 ] ) gap> ConjugacyClasses(a6); [ ()^G, (1,2)(3,4)^G, (1,2,3)^G, (1,2,3)(4,5,6)^G, (1,2,3,4)(5,6)^G, (1,2,3,4,5)^G, (1,2,3,4,6)^G ] gap> Size(ConjugacyClass(a6, ())); 1 gap> Size(ConjugacyClass(a6, (1,2)(3,4))); 45 gap> Size(ConjugacyClass(a6, (1,2,3))); 40 gap> Size(ConjugacyClass(a6, (1,2,3)(4,5,6)); Syntax error: ) expected Size(ConjugacyClass(a6, (1,2,3)(4,5,6)); ^ gap> Size(ConjugacyClass(a6, (1,2,3)(4,5,6))); 40 gap> Size(ConjugacyClass(a6, (1,2,3,4)(5,6))); 90 gap> Size(ConjugacyClass(a6, (1,2,3,4,5))); 72 gap> Size(ConjugacyClass(a6, (1,2,3,4,5,6))); 120 gap> Size(ConjugacyClass(a6, (1,2,3,4,6))); 72
Exercise 4.5 gap> G:= AlternatingGroup(5); Alt( [ 1 .. 5 ] ) gap> ConjugacyClasses(G); [ ()^G, (1,2)(3,4)^G, (1,2,3)^G, (1,2,3,4,5)^G, (1,2,3,5,4)^G ] gap> Size(ConjugacyClass(G, ())); 1 gap> Size(ConjugacyClass(G, (1,2)(3,4))); 15 gap> Size(ConjugacyClass(G, (1,2,3))); 20 gap> Size(ConjugacyClass(G, (1,2,3,4,5))); 12 gap> Size(ConjugacyClass(G, (1,2,3,5,4))); 12 gap> Size(AlternatingGroup(5)); 60
Exercise 4.6 gap> G:= AlternatingGroup(4); Alt( [ 1 .. 4 ] ) gap> ConjugacyClasses(G); [ ()^G, (1,2)(3,4)^G, (1,2,3)^G, (1,2,4)^G ] gap> Elements(ConjugacyClass(G, (1,2)(3,4))); [ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ] gap> Elements(ConjugacyClass(G, (1,2,3))); [ (2,4,3), (1,2,3), (1,3,4), (1,4,2) ] gap> Elements(ConjugacyClass(G, (1,2,4))); [ (2,3,4), (1,2,4), (1,3,2), (1,4,3) ] gap> H:= Subgroup(G, [(1,2)(3,4), (1,3)(4,2)]); Group([ (1,2)(3,4), (1,3)(2,4) ]) gap> IsNormal(G,H); true gap> IsCyclic(H); false gap> IsAbelian(H); true
Section 5: Groups Defined using Generators and Relations
gap> f := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> f.1;
f1
gap> G := f/[f.1^3, f.2^9, f.1^2*f.2*f.1*f.2];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
3
gap> Size(f);
infinity
gap> Order(G);
3
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x := f.1; y := f.2;
a
b
gap> rels := [x^2, y^3, (x*y)^5];
[ a^2, b^3, a*b*a*b*a*b*a*b*a*b ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> Order(G);
60
gap> A := AlternatingGroup(5);
Alt( [ 1 .. 5 ] )
gap> IsomorphismGroups(G,A);
[ a^-1*b^-1*a^-1*b^-1*a*b^2*a*b*a*b*a*b*a, b*a*b*a*b^2 ] -> [ (2,4)(3,5), (1,2,3) ]
gap> IsomorphismGroups(A,G);
[ (2,4)(3,5), (1,2,3) ] -> [ a^-1*b^-1*a^-1*b^-1*a*b^2*a*b*a*b*a*b*a, b*a*b*a*b^2 ]
Exercise 5.1
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x := f.1; y := f.2;
a
b
gap> rels := [x^5, y^2, x^-1*y^-1*x^2*y];
[ a^5, b^2, a^-1*b^-1*a^2*b ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> Order(G);
2
Exercise 5.2
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x := f.1; y := f.2;
a
b
gap> rels := [x^6, y^3, x^-3*y^-1*x*y];
[ a^6, b^3, a^-3*b^-1*a*b ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> Order(G);
6
gap> IsCyclic(G);
true
gap> Elements(G);
[ <identity ...>, a, b, b^2, a*b, a*b^2 ]
gap> Order(a);
Variable: 'a' must have a value
gap> Order(x);
user interrupt at
MakeImmutable( a );
called from
Inverse( obj ) called from
<function>( <arguments> ) called from read-eval-loop
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can return to continue
brk> quit;
gap> Order(G.1);
2
gap> elts := Elements(G);
[ <identity ...>, a, b, b^2, a*b, a*b^2 ]
gap> Order(elts[2]);
2
gap> Order(elts[3]);
3
gap> Order(elts[5]);
6
Exercise 5.3
gap> f := FreeGroup("a","b","c","d");
<free group on the generators [ a, b, c, d ]>
gap> x:=f.1; y:=f.2; z:=f.3; w:=f.4;
a
b
c
d
gap> rels := [x*y*z^-1,y*z*w^-1, z*w*x^-1,w*x*y^-1];
[ a*b*c^-1, b*c*d^-1, c*d*a^-1, d*a*b^-1 ]
gap> G := f/rels;
<fp group on the generators [ a, b, c, d ]>
gap> Order(G);
5
Exercise 5.5
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x:=f.1; y:=f.2;
a
b
gap> rels := [x^3, y^3, (x*y)^2];
[ a^3, b^3, a*b*a*b ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> Order(G);
12
gap> IsAbelian(G);
false
gap> IsDihedral(G);
Variable: 'IsDihedral' must have a value
gap> Elements(G);
[ <identity ...>, b, a*b*a, b*a, a, a*b*a^2, a^2, b*a^2, a*b, a^2*b, a^2*b*a, a^2*b*a^2 ]
gap> Read("orderFrequency");
gap> orderFrequency(G);
[ [ 1, 1 ], [ 2, 3 ], [ 3, 8 ] ]
gap> G2 := DirectProduct(SymmetricGroup(3),CyclicGroup(2));
<group of size 12 with 3 generators>
gap> orderFrequency(G2);
[ [ 1, 1 ], [ 2, 7 ], [ 3, 2 ], [ 6, 2 ] ]
gap> A := AlternatingGroup(4);
Alt( [ 1 .. 4 ] )
gap> orderFrequency(A);
[ [ 1, 1 ], [ 2, 3 ], [ 3, 8 ] ]
gap> NumberSmallGroups(12);
5
gap> List(AllSmallGroups(12), x -> orderFrequency(x));
[ [ [ 1, 1 ], [ 2, 1 ], [ 3, 2 ], [ 4, 6 ], [ 6, 2 ] ],
[ [ 1, 1 ], [ 2, 1 ], [ 3, 2 ], [ 4, 2 ], [ 6, 2 ], [ 12, 4 ] ], [ [ 1, 1 ], [ 2, 3 ], [ 3, 8 ] ],
[ [ 1, 1 ], [ 2, 7 ], [ 3, 2 ], [ 6, 2 ] ], [ [ 1, 1 ], [ 2, 3 ], [ 3, 2 ], [ 6, 6 ] ] ]
gap> IsomorphismGroups(G,A);
[ a, b ] -> [ (1,4,3), (1,2,3) ]
gap> IsomorphismGroups(G,G2);
fail
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x:=f.1; y:=f.2;
a
b
gap> rels := [x^2,y^3];
[ a^2, b^3 ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> Order(G);
#I Coset table calculation failed -- trying with bigger table limit
#I Coset table calculation failed -- trying with bigger table limit
#I Coset table calculation failed -- trying with bigger table limit
#I Coset table calculation failed -- trying with bigger table limit
#I Coset table calculation failed -- trying with bigger table limit
GAP quit here
gap> f := FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> x := f.1; y := f.2;
a
b
gap> rels := [x^2,y^3];
[ a^2, b^3 ]
gap> G := f/rels;
<fp group on the generators [ a, b ]>
gap> LowIndexSubgroupsFpGroup(G,TrivialSubgroup(G),6);
[ Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>) ]
gap> LowIndexSubgroupsFpGroup(G,TrivialSubgroup(G),24);
user interrupt at
S := Objectify( NewType( fam, IsGroup and IsSubgroupOfWholeGroupByQuotientRep and IsAttributeStoringRep ), rec(
quot := Q,
sub := U ) );
called from
SubgroupOfWholeGroupByQuotientSubgroup( FamilyObj( G ), Q, Stabilizer( Q, 1 ) ) called from
<function>( <arguments> ) called from read-eval-loop
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can return to continue
brk> quit;
gap> LowIndexSubgroupsFpGroup(G,TrivialSubgroup(G),6);
[ Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>) ]
gap> lisg := LowIndexSubgroupsFpGroup(G,TrivialSubgroup(G),6);
[ Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>) ]
gap> lisg[1];
Group(<fp, no generators known>)
gap> Random(lisg[1]);
#I Coset table calculation failed -- trying with bigger table limit
#I Coset table calculation failed -- trying with bigger table limit
user interrupt at
prev[2 * limit] := 2 * limit - 1;
called from
TCENUM.CosetTableFromGensAndRels( fgens, grels, fsgens ) called from
CosetTableFromGensAndRels( fgens, grels, List( trial, UnderlyingElement ) ) called from
Attempt( trial ) called from
Attempt( gens ) called from
FinIndexCyclicSubgroupGenerator( G, infinity ) called from
...
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can return to continue
brk> quit;
#I Options stack has been reset
gap> LogTo();
Back to Home Page
This PREP workshop is made possible by the NSF grant DUE: 0341481