PREP - Professional Enhancement Programs of the MAA



 

Exploring Abstract Algebra with Computer Software

A PREP Workshop

GAP log - Tuesday June 29, 10 am - 11:30 am

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