Application Center - Maplesoft

App Preview:

Multiplicative Cyclic Groups by Maple

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application




 

 

Multiplicative Cyclic Groups by Maple

 

Kahtan H. Alzubaidy

Department of Mathematics, Faculty of Science, University of Benghazi

E-mail: kahtanalzubaidy@yahoo.com

 

  

Introduction

    In this article we introduce cyclic groups in multiplicative notations by using Maple 13. Group table,order table,and inverse table are given.

All generators and all subgroups of a multiplicative cyclic group are given also. Hasse diagrams of subgroup lattices are shown. All homomorphisms and automorphisms of such groups are computed as well as the kernel and image of a homomorphism.  

 

Reference

"  David S. Dummit,Richard M. Foote, ABSTRACT ALGEBRA. 2 nd edition Prentice-Hall 1999."

 

Procedures

NULL

 1) Group Table

     C(n,a) denotes a multiplicative cyclic group of order n and generator a .

     GT(n,a) is the group table of C(n,a).

 

restart

with(numtheory); with(LinearAlgebra); with(GraphTheory); with(plottools)

``

C:=proc(n,a);

 GroupElements,[seq(a^i, i = 0 .. n-1)];

end proc;

proc (n, a) GroupElements, [seq(a^i, i = 0 .. n-1)] end proc

(1)

NULL

C(8, a)

GroupElements, [1, a, a^2, a^3, a^4, a^5, a^6, a^7]

(2)

``

GT:=proc(n,a)

  local M,L ;L:=[seq(a^i, i =0..n-1)];

  M:=Matrix(n,(i,j)-> L[i]*L[j]);

  GroupTable,algsubs(a^n=1,M);

end proc;

proc (n, a) local M, L; L := [seq(a^i, i = 0 .. n-1)]; M := Matrix(n, proc (i, j) options operator, arrow; L[i]*L[j] end proc); GroupTable, algsubs(a^n = 1, M) end proc

(3)

``

GT(8, a)

GroupTable, Matrix(8, 8, {(1, 1) = 1, (1, 2) = a, (1, 3) = a^2, (1, 4) = a^3, (1, 5) = a^4, (1, 6) = a^5, (1, 7) = a^6, (1, 8) = a^7, (2, 1) = a, (2, 2) = a^2, (2, 3) = a^3, (2, 4) = a^4, (2, 5) = a^5, (2, 6) = a^6, (2, 7) = a^7, (2, 8) = 1, (3, 1) = a^2, (3, 2) = a^3, (3, 3) = a^4, (3, 4) = a^5, (3, 5) = a^6, (3, 6) = a^7, (3, 7) = 1, (3, 8) = a, (4, 1) = a^3, (4, 2) = a^4, (4, 3) = a^5, (4, 4) = a^6, (4, 5) = a^7, (4, 6) = 1, (4, 7) = a, (4, 8) = a^2, (5, 1) = a^4, (5, 2) = a^5, (5, 3) = a^6, (5, 4) = a^7, (5, 5) = 1, (5, 6) = a, (5, 7) = a^2, (5, 8) = a^3, (6, 1) = a^5, (6, 2) = a^6, (6, 3) = a^7, (6, 4) = 1, (6, 5) = a, (6, 6) = a^2, (6, 7) = a^3, (6, 8) = a^4, (7, 1) = a^6, (7, 2) = a^7, (7, 3) = 1, (7, 4) = a, (7, 5) = a^2, (7, 6) = a^3, (7, 7) = a^4, (7, 8) = a^5, (8, 1) = a^7, (8, 2) = 1, (8, 3) = a, (8, 4) = a^2, (8, 5) = a^3, (8, 6) = a^4, (8, 7) = a^5, (8, 8) = a^6})

(4)

 

 2) Element Order Table

    eo(a, i ,n) dentes the order of "a^(i )in C(n,a)."

     OT(n,a) is the order table.

 

eo:=proc(a,i,n)

  n/gcd(n,i);

end proc;

proc (a, i, n) n/gcd(n, i) end proc

(5)

NULL

eo(a, 6, 15)

5

(6)

eo(a, 0, 4)

1

(7)

NULL

OT:=proc(n,a)

 local L,H;L:=[seq(eo(a,i,n),i=0..n-1)];H:=[seq(a^i, i =0..n-1)];

 OrderTable,Transpose(Matrix(2,n,[H,L]));

end proc;

proc (n, a) local L, H; L := [seq(eo(a, i, n), i = 0 .. n-1)]; H := [seq(a^i, i = 0 .. n-1)]; OrderTable, LinearAlgebra:-Transpose(Matrix(2, n, [H, L])) end proc

(8)

``

OT(8, a)

OrderTable, Matrix(8, 2, {(1, 1) = 1, (1, 2) = 1, (2, 1) = a, (2, 2) = 8, (3, 1) = a^2, (3, 2) = 4, (4, 1) = a^3, (4, 2) = 8, (5, 1) = a^4, (5, 2) = 2, (6, 1) = a^5, (6, 2) = 8, (7, 1) = a^6, (7, 2) = 4, (8, 1) = a^7, (8, 2) = 8})

(9)

 3)Element Inverse Table

   ei(a, i, n) denotes the inverse of  "a^(i  )in C(n,a)."

   IT(n,a) is the inverse table.

 

ei:= proc(a,i,n)

 a^(n-i);

end proc;

proc (a, i, n) a^(n-i) end proc

(10)

NULL

ei(b, 7, 12)

b^5

(11)

NULL

IT:=proc(n,a)

 local L,H;

 L:=[seq(a^i, i =0..n-1)];

 H:=algsubs(a^(n)=1,[seq(a^(n-i),i=0..n-1)]);

 InverseTable,Transpose(Matrix(2,n,[L,H]));

end proc;

 

proc (n, a) local L, H; L := [seq(a^i, i = 0 .. n-1)]; H := algsubs(a^n = 1, [seq(a^(n-i), i = 0 .. n-1)]); InverseTable, LinearAlgebra:-Transpose(Matrix(2, n, [L, H])) end proc

(12)

NULL

IT(8, a)

InverseTable, Matrix(8, 2, {(1, 1) = 1, (1, 2) = 1, (2, 1) = a, (2, 2) = a^7, (3, 1) = a^2, (3, 2) = a^6, (4, 1) = a^3, (4, 2) = a^5, (5, 1) = a^4, (5, 2) = a^4, (6, 1) = a^5, (6, 2) = a^3, (7, 1) = a^6, (7, 2) = a^2, (8, 1) = a^7, (8, 2) = a})

(13)

 4) Generators

    AG(n,a) denotes all generators of  C(n,a).

 

AG:=proc(n,a)

 phi(n), generators, map(x->a^x,select(r->is(igcd(r,n)=1),[$1..n-1]));

end proc;

proc (n, a) numtheory:-phi(n), generators, map(proc (x) options operator, arrow; a^x end proc, select(proc (r) options operator, arrow; is(igcd(r, n) = 1) end proc, [`$`(1 .. n-1)])) end proc

(14)

``

AG(10, a)

4, generators, [a, a^3, a^7, a^9]

(15)

AG(18, x)

6, generators, [x, x^5, x^7, x^11, x^13, x^17]

(16)

  5) Subgroups

"      Every subgroup of a cyclic group is cyclic."

(Every*quotient*group*of*a*cyclic*group)*is*cyclic. That is "C[n]<a>/<a^(t)>&cong;<a^(n-t)>=<a^(-t)>."

       SG(a, k, n) denotes the subgroup generated by "a^(k)."

       AS(n,a) is the set all subgroups of C(n,a).

 

NULL

SG:=proc(a,k,n)

 sort(algsubs(a^(n)=1,{seq((a^(k))^(i-1),i=1..(n)/(gcd(n,k)))}));

end proc;

proc (a, k, n) sort(algsubs(a^n = 1, {seq((a^k)^(i-1), i = 1 .. n/gcd(n, k))})) end proc

(17)

``

SG(a, 4, 18)

{1, a^2, a^4, a^6, a^8, a^10, a^12, a^14, a^16}

(18)

SG(a, 0, 12)

{1}

(19)

SG(a, 1, 12)

{1, a, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9, a^10, a^11}

(20)

NULL

AS:=proc(n,a)

  local S; S:= {seq(SG(a,t,n),t=0..n-1)};

  S, print( nops(S) ,subgroups);

end proc;

proc (n, a) local S; S := {seq(SG(a, t, n), t = 0 .. n-1)}; S, print(nops(S), subgroups) end proc

(21)

AS(8, a)

4, subgroups

{{1}, {1, a^4}, {1, a^2, a^4, a^6}, {1, a, a^2, a^3, a^4, a^5, a^6, a^7}}

(22)

NULL

AS(1, b)

1, subgroups

{{1}}

(23)

AS(13, a)

2, subgroups

{{1}, {1, a, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9, a^10, a^11, a^12}}

(24)

AS(16, a)

5, subgroups

{{1}, {1, a^8}, {1, a^4, a^8, a^12}, {1, a^2, a^4, a^6, a^8, a^10, a^12, a^14}, {1, a, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9, a^10, a^11, a^12, a^13, a^14, a^15}}

(25)

 

" 6)Hasse Diagram of Subgroup Lattice "

"    Intersection and union generated of two subgroups "

 

      <
"a^(r)> intersect <a^(s)>=<a^([r,s] )>  and <<a^(r)> union <a^(s)>>=<a^((r,s))>, where [   ] and (   ) are the notations of lcm and gcd respectively ."

There is a 1-1 correspondence between the lattice L of all subgroups of C[n] with order  4 and the set  D[n]" of all positive divisors of n with the order divides |. "The correspondence is given by S↔ |S| for any subgroup S of "C[n]."

"Thus Hasse diagrams of L  and  D[n] are similar. The label on each vertix is the order of a subgroup. The diagram can be adjusted by "

suitable rotations.

NULL

Hasse:=proc(n)

 local V,VV,sdiv,r,nc,L,x,y,G;

 V:=divisors(n);

 VV:=convert(V,list);

 sdiv:=(x,y)->(x<>y) and is (y/x,integer);

 r:=(x,z,y)->is(sdiv(x,z) and sdiv(z,y));

 nc:=(x,y)->convert({ seq(not(r(x,z,y)),z in V)},list)[1];

 L:={};

 for x in V do for y in V do if (sdiv(x,y) and nc(x,y)) then L:=L union {[x,y]}fi od od;  

 L;

 G:=Digraph(VV,L);

 DrawGraph(G,style=spring);

end proc;

 

proc (n) local V, VV, sdiv, r, nc, L, x, y, G; V := numtheory:-divisors(n); VV := convert(V, list); sdiv := proc (x, y) options operator, arrow; x <> y and is(y/x, integer) end proc; r := proc (x, z, y) options operator, arrow; is(sdiv(x, z) and sdiv(z, y)) end proc; nc := proc (x, y) options operator, arrow; convert({seq(not r(x, z, y), `in`(z, V))}, list)[1] end proc; L := {}; for x in V do for y in V do if sdiv(x, y) and nc(x, y) then L := `union`(L, {[x, y]}) end if end do end do; L; G := GraphTheory:-Digraph(VV, L); GraphTheory:-DrawGraph(G, style = spring) end proc

(26)

rotate(Hasse(6), -(1/2)*Pi)

Hasse(24)

Hasse(30)

  7) Group Homomorphisms

" A group homomorphism  f :C[m]<a>-> C[n]<b> is given by f(a)=b^(r), where  (n)/((r,n))| (m,n) to gurentee that f is well defined."

" If m=n and (r,n)=1, then f is an automorphism. The automorphism group Aut(C[n])&cong;C[n]^(*),the group of all reduced residue classes, modulo n. It is abelian but not necessarily cyclic. "

  Hom(m,a,n,b) denotes the set of all all group homomorphisms  "f :C[m]<a>-> C[n]<b>."

 Aut(n,a) is the set of all automorphisms of  "C[n]<a>."

 

Hom:=proc(m,a,n,b)

 local L;

 L:=select(x->is(igcd(m,n)*igcd(x,n)/n ,integer),[$0..n-1]);

 'f(a)'=seq(b^(r mod n),r in L), nops(L),homomorphisms;

end proc;

proc (m, a, n, b) local L; L := select(proc (x) options operator, arrow; is(igcd(m, n)*igcd(x, n)/n, integer) end proc, [`$`(0 .. n-1)]); 'f(a)' = seq(b^(`mod`(r, n)), `in`(r, L)), nops(L), homomorphisms end proc

(27)

``

Hom(7, a, 9, b)

f(a) = (1), 1, homomorphisms

(28)

Hom(9, a, 7, b)

f(a) = (1), 1, homomorphisms

(29)

Hom(24, a, 36, b)

f(a) = (1, b^3, b^6, b^9, b^12, b^15, b^18, b^21, b^24, b^27, b^30, b^33), 12, homomorphisms

(30)

Hom(36, a, 24, b)

f(a) = (1, b^2, b^4, b^6, b^8, b^10, b^12, b^14, b^16, b^18, b^20, b^22), 12, homomorphisms

(31)

Hom(5, a, 5, b)

f(a) = (1, b, b^2, b^3, b^4), 5, homomorphisms

(32)

NULL

Aut:=proc(n,a)

  local L;L:=select(x->is (igcd(x,n)=1),[$1..n]);

 'f(a)'=seq(a^r,r in L), nops(L),automorphisms;

end proc;  

proc (n, a) local L; L := select(proc (x) options operator, arrow; is(igcd(x, n) = 1) end proc, [`$`(1 .. n)]); 'f(a)' = seq(a^r, `in`(r, L)), nops(L), automorphisms end proc

(33)

NULL

Aut(7, a)

f(a) = (a, a^2, a^3, a^4, a^5, a^6), 6, automorphisms

(34)

Aut(10, x)

f(x) = (x, x^3, x^7, x^9), 4, automorphisms

(35)

Aut(30, x)

f(x) = (x, x^7, x^11, x^13, x^17, x^19, x^23, x^29), 8, automorphisms

(36)

 8) Kernel and Image

    A group homomorphisms "f :C[m]<a>-> C[n]<b> is determined by f(a)=b^(r)."

     "Denote such a homomorphism by H(m,a,n,b,r)."

     The following procedures are to check that 
"H(m,a,n,b,r) is a homomorphism and to compute its kernel(Ker) and image(Ima)."

     First isomorphism theorem implies that  |Ker| |Ima|=|G|.

``

 

CHK:=proc(m,a,n,b,r)

 if is(igcd(m,n)*igcd(r,n)/n,integer) then print(true)else print(false) fi;end proc;

 

proc (m, a, n, b, r) if is(igcd(m, n)*igcd(r, n)/n, integer) then print(true) else print(false) end if end proc

(37)

``

CHK(8, a, 12, b, 3)

true

(38)

CHK(18, a, 12, b, 5)

false

(39)

NULL

Ker:=proc(m,a,n,b,r)

 local K;

 K:=select(x->is(r*x mod n =0),{$0..m-1});

 {seq(a^(y mod m),y in K)};

end proc;

proc (m, a, n, b, r) local K; K := select(proc (x) options operator, arrow; is(`mod`(r*x, n) = 0) end proc, {`$`(0 .. m-1)}); {seq(a^(`mod`(y, m)), `in`(y, K))} end proc

(40)

``

Ima:=proc(m,a,n,b,r)

  local M;

  M:={seq( r*t mod n, t=0..m-1)};

  {seq(b^x , x in M)};

end proc;

proc (m, a, n, b, r) local M; M := {seq(`mod`(r*t, n), t = 0 .. m-1)}; {seq(b^x, `in`(x, M))} end proc

(41)

``

Examples

 

1) H(18,a,12,b,4)

 

CHK(18, a, 12, b, 4)

true

(42)

Ker(18, a, 12, b, 4), Ima(18, a, 12, b, 4)

{1, a^3, a^6, a^9, a^12, a^15}, {1, b^4, b^8}

(43)

``

2) H(12,a,18,b,4)

 

CHK(12, a, 18, b, 3)

true

(44)

Ker(12, a, 18, b, 3), Ima(12, a, 18, b, 3)

{1, a^6}, {1, b^3, b^6, b^9, b^12, b^15}

(45)

``

3) H(10,a,10,a,7);

 

CHK(10, a, 10, a, 7)

true

(46)

Ker(10, a, 10, a, 7), Ima(10, a, 10, a, 7)

{1}, {1, a, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9}

(47)

``