Chapter4.mws

Abstract Algebra with Maple
Chapter 4: Finite Groups and Subgroups

by Alec Mihailovs

4: Finite Groups and Subgroups

Orders of Elements

After loading the number theory package (we did it in the previous section), orders of elements of groups U(n) can be evaluated as follows:

> order(7,15);

4

> order(31,42);

6

The cyclic subgroup of U(n) generated by a , can be found using the following procedure:

> cycleU:=(c,n)->[seq(c^(i-1) mod n, i=1..order(c,n))]:

> cycleU(7,15);

[1, 7, 4, 13]

> cycleU(31,42);

[1, 31, 37, 13, 25, 19]

In general, the cyclic subgroup generated by an element c of an (extended) group g can be found using the following procedure:

> Cycle:=proc(c,g) local v,a;
v:=[g[3]]; a:=c;
while not a=g[3] do v:=[op(v),a]; a:=g[2](a,c) od; v end:

For example, the cyclic subgroup generated by 10 in Z[25] :

> Cycle(10,Z(25));

[0, 10, 20, 5, 15]

Another example,

> map(matrix,Cycle([[1,2],[3,4]],GL2(5)));

[matrix([[1, 0], [0, 1]]), matrix([[1, 2], [3, 4]])...

The orders of elements can be found as the orders of the cyclic subgroups generated by them:

> Ord:=proc(c,g) local a,n;
a:=c; n:=1;
while not a=g[3] do n:=n+1; a:=g[2](a,c) od; n end:

> Ord([[1,2],[3,4]],SL2(5));

8

> Ord([[2,3],[4,5]],GL2(11));

60

> Ord(715,Z(1001));

7

Center and Centralizers

The centralizer of an element a of an extended group G can be determined as follows:

> CentralizerE:=proc(a,G) local i,v;
v:=[]; for i to nops(G[1]) do if G[2](G[1][i],a)=G[2](a,G[1][i]) then v:=[op(v),G[1][i]] fi od; v end:

For example,

> CentralizerE(8,Cyclic(8));

[1, 2, 3, 4, 5, 6, 7, 8]

> CentralizerE(8,Dihedral(4));

[1, 3, 6, 8]

The centralizer of a subset S of an extended group G can be determined as follows:

> CentralizerS:=proc(S,G) local i,j,v;
v:=[]; for i to nops(G[1]) do j:=1; while not j=nops(S)+1 and
G[2](G[1][i],S[j])=G[2](S[j],G[1][i]) do j:=j+1 od; if j=nops(S)+1 then v:=[op(v),G[1][i]] fi od; v end:

> CentralizerS([7,8],Dihedral(4));

[1, 3]

The center is the centralizer of the group:

> Center:=G->CentralizerS(G[1],G):

> Center(Dihedral(7));

[1]

> Center(Dihedral(10));

[1, 6]

> map(matrix,Center(GL2(3)));

[matrix([[1, 0], [0, 1]]), matrix([[2, 0], [0, 2]])...

Note.

Why do we need two commands for a centralizer - CentralizerE and CentralizerS ? Why can't we use one command, Centralizer, for both cases? The problem is that some elements of a group can be equal to some sets of other elements. For example, a group can contain elements 1, 2, and {1,2}.

What would the Centralizer({1,2}) be in that case? The centralizer of the element {1,2}, CentralizerE ({1,2}), or the centralizer of the subset {1,2}, CentralizerS ({1,2})? Since we can't distinguish between these two cases by checking the type of an argument, we need two different commands for that.

A Subgroup Test

According to Theorem 3.3 on p. 62 of Dr. Gallian's text, to test whether a finite subset H is a subgroup of G , it is enough to check if H is a subset of G and it is closed under the group operation of G . So we can use isCP for that:

> isSubgroup:=(h,G)->verify({op(h)},{op(G[1])},`subset`) and isCP(h,G[2]):

For example,

> isSubgroup(Cycle(8,Z(33)),Z(33));

true

> isSubgroup(Cycle([[1,2],[2,0]],GL2(5)),SL2(5));

true

Certainly, cyclic subgroups are subgroups :-) as well as the center and centralizers:

> isSubgroup(CentralizerE(11,Dihedral(6)),Dihedral(6));

true

> isSubgroup(CentralizerS({[[1,2],[3,4]],[[1,3],[2,4]]},GL2(5)),GL2(5));

true

> isSubgroup(Center(SL2(4)),SL2(4));

true

Finally, an opposite example:

> isSubgroup(Z(5)[1],Z(10));

false

>

Exercises