Abstract Algebra with Maple
Chapter 4: Finite Groups and Subgroups
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
can be evaluated as follows:
> order(7,15);
> order(31,42);
The cyclic subgroup of
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);
> cycleU(31,42);
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
:
> Cycle(10,Z(25));
Another example,
> map(matrix,Cycle([[1,2],[3,4]],GL2(5)));
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));
> Ord([[2,3],[4,5]],GL2(11));
> Ord(715,Z(1001));
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));
> CentralizerE(8,Dihedral(4));
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));
The center is the centralizer of the group:
> Center:=G->CentralizerS(G[1],G):
> Center(Dihedral(7));
> Center(Dihedral(10));
> map(matrix,Center(GL2(3)));
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));
> isSubgroup(Cycle([[1,2],[2,0]],GL2(5)),SL2(5));
Certainly, cyclic subgroups are subgroups :-) as well as the center and centralizers:
> isSubgroup(CentralizerE(11,Dihedral(6)),Dihedral(6));
> isSubgroup(CentralizerS({[[1,2],[3,4]],[[1,3],[2,4]]},GL2(5)),GL2(5));
> isSubgroup(Center(SL2(4)),SL2(4));
Finally, an opposite example:
> isSubgroup(Z(5)[1],Z(10));
>
Exercises
.
.
,
} in
GL
(2,