Application Center - Maplesoft

App Preview:

Metacyclic Groups by Maple

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

Learn about Maple
Download Application




 

 

 

 

Metacyclic Groups by Maple

Kahtan H. Alzubaidy

Department of Mathematics, Faculty of Science,University of Benghazi,Liya

E-mail: kahtanalzubaidy@yahoo.com

 

 

 

 

Key Words : Metacyclic Groups, Recurrence Relations

 

Introduction.

 A group G is called metacyclic if it has a normal subgroup H such that both H and G/H are cyclic. A metacyclic group is presented by two generators and three relations.

An important class of metacyclic groups is finitely presented as follows

G=<a,b: "a^(m)=b^(n)=1,ba=a^(r)b,r^(n)&equiv;1 (mod m)>. Thus  "G={ "a^(i)b^(j) :  0<=i<m,   0<=j<n }. |G|=mn."

G y "C[m]<a>&rtimes; C[n]<b>  as a semidirect product."

If  r =1, then G y "C[m]<a>* C[n]<b> which is abelian."

In this article a few procedures are made to compute the list of group elements, group table, a table of the inverse elements, and a table of the order of the elements for the metacylic group G.The centralizer and center are computed. Finally conjugate classes are also found.

A finite metacyclic group of this class is represented by a finite group of complex numbers with a special binary operation.Complex numbers in this respect simplifies Maple computation instead of dealing with powerw of the generators a and b directly.

The advantige of the approach of this application is that mathematical forms are maintained so that the results look like exactly as in mathematics.

 

Referencs

[1] Michael O. Albertson,Joan P. Hutchinson, Discrete Mathematics with Algorithms, John Wiley & Sons,New York, 1988.  

[2] Thomas W. Hungerford, Algebra, Springer-Verlag, Graduate Texts in Mathematics 73, New York, 1974.

 

Computations

 

restart

with(numtheory):

NULL

The following procedure determine the values of r if m and n are given.

 

r:= proc(m,n) local L,x;L:={};

 for x from 2 to m-1 do if is(x^n mod m =1)then L:=L union {x} fi od;min(L);

end proc;

proc (m, n) local L, x; L := {}; for x from 2 to m-1 do if is(`mod`(x^n, m) = 1) then L := `union`(L, {x}) end if end do; min(L) end proc

(1)

NULL

r(4, 2)

3

(2)

r(7, 3)

2

(3)

``

 We have taken the minimum value of  r not 1. The other values may produce isomorphic copies of groups.To get all values of r

msolve(x^3=1,7);

 

{x = 1}, {x = 2}, {x = 4}

(4)

 

Notation: Our group is denoted by  G(a,m,b,n,r).

The following procedure lists the elements of the group  G(a,m,b,n,r).

 

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

 local M;

 M:=Transpose(Matrix(m,n,(i,j)->a^(i-1)*b^(j-1)));

 [seq(seq(M(i,j),j=1..m),i=1..n)], m*n, elements;

end proc;

proc (a, m, b, n, r) local M; M := LinearAlgebra:-Transpose(Matrix(m, n, proc (i, j) options operator, arrow; a^(i-1)*b^(j-1) end proc)); [seq(seq(M(i, j), j = 1 .. m), i = 1 .. n)], m*n, elements end proc

(5)

NULL

G(a, 4, b, 2, 3)

[1, a, a^2, a^3, b, a*b, a^2*b, a^3*b], 8, elements

(6)

G(x, 5, y, 4, 2)

[1, x, x^2, x^3, x^4, y, x*y, x^2*y, x^3*y, x^4*y, y^2, x*y^2, x^2*y^2, x^3*y^2, x^4*y^2, y^3, x*y^3, x^2*y^3, x^3*y^3, x^4*y^3], 20, elements

(7)

 

 

 From ba = a^r*b we have  b^j*a^k = Typesetting[delayDotProduct](a^(k*r^j)*b^j.Thus, group, true)*operation*can*be*viewed*as*follows

 

("a^(i)b^(j))(a^(k)b^(l))=a^(i+k r^(j) (mod m)  )b^(j+l (mod n))."

 

The identity is  
"a^(0)b^(0)=1  and  the inverse element is given by  (a^(i) b^(j))^(-1)=  a^((m-i) r^((n-j)) (mod m)   )b^((n-j) (mod n)) ."

 

Complex representation

 

 We make a complex copy GC of the metacyclic group G.

 

"a^(i)b^(j)->i+j*I,  where  I=sqrt(-1)    and  z-> a^(Re(z)) b^(Im(z)) . Thus group elements in complex form are given by  GC= {i+j*I: 0<=i<m,  0<=j<n }."

 

Thus the operation, identity, and inverse element in GC are given as follows

p(z,w)=(Re(z)+"r^(Im(z)).Re(w)) (mod m)+(Im(z)+Im(w)) (mod n)*I"

 

identity 0+0*I =0

 

inv(z)= (m - Re(z))*"r^(n-Im(z)) (mod m)+(n-Im(z)) (mod n) *I ."

 

Group elements of the complex copy GC  are given by the following procedure

 

 

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

 local M;

 M:=Transpose(Matrix(m,n,(i,j)->Complex(i-1,j-1)));

 [seq(seq(M(i,j),j=1..m),i=1..n)];

end proc;

proc (a, m, b, n, r) local M; M := LinearAlgebra:-Transpose(Matrix(m, n, proc (i, j) options operator, arrow; Complex(i-1, j-1) end proc)); [seq(seq(M(i, j), j = 1 .. m), i = 1 .. n)] end proc

(8)

``

GC(a, 3, b, 2, 2); nops(%), element*s

[0, 1, 2, I, 1+I, 2+I]

6, element*s

(9)

GC(x, 5, y, 4, 2); nops(%), elements

[0, 1, 2, 3, 4, I, 1+I, 2+I, 3+I, 4+I, 2*I, 1+2*I, 2+2*I, 3+2*I, 4+2*I, 3*I, 1+3*I, 2+3*I, 3+3*I, 4+3*I]

20, elements

(10)

``

 

Group Tables

 

We start first with the complex group table GTC of the group GC.

 

T:=proc(a,m,b,n,r)NULL

local L,p;

p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc;

L:=GC(a,m,b,n,r);

Matrix(m*n,(i,j)->p(L[i],L[j]));

end proc;

proc (a, m, b, n, r) local L, p; p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc; L := GC(a, m, b, n, r); Matrix(m*n, proc (i, j) options operator, arrow; p(L[i], L[j]) end proc) end proc

(11)

``

``

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

local L,R,RR,P,N;

 

L:=GC(a,m,b,n,r);

R:=convert([L],matrix);

RR:=transpose(R);N:=T(a,m,b,n,r);

P:=Matrix([[omicron]]);

blockmatrix(2,2,[P,R,RR,N,P,RR,R,N]);

end proc;

proc (a, m, b, n, r) local L, R, RR, P, N; L := GC(a, m, b, n, r); R := convert([L], linalg:-matrix); RR := linalg:-transpose(R); N := T(a, m, b, n, r); P := Matrix([[omicron]]); linalg:-blockmatrix(2, 2, [P, R, RR, N, P, RR, R, N]) end proc

(12)

``

GTC(a, 3, b, 2, 2)

array( 1 .. 7, 1 .. 7, [( 3, 4 ) = (0), ( 2, 2 ) = (0), ( 6, 6 ) = (0), ( 3, 6 ) = (2+I), ( 1, 4 ) = (2), ( 6, 3 ) = (I), ( 4, 5 ) = (2+I), ( 7, 1 ) = (2+I), ( 4, 6 ) = (I), ( 5, 5 ) = (0), ( 4, 1 ) = (2), ( 7, 5 ) = (2), ( 3, 3 ) = (2), ( 6, 5 ) = (1), ( 4, 3 ) = (0), ( 7, 6 ) = (1), ( 1, 3 ) = (1), ( 2, 5 ) = (I), ( 2, 7 ) = (2+I), ( 5, 4 ) = (1+I), ( 1, 7 ) = (2+I), ( 2, 6 ) = (1+I), ( 7, 2 ) = (2+I), ( 5, 7 ) = (1), ( 4, 7 ) = (1+I), ( 6, 4 ) = (2+I), ( 2, 3 ) = (1), ( 1, 5 ) = (I), ( 5, 6 ) = (2), ( 1, 1 ) = (omicron), ( 6, 1 ) = (1+I), ( 6, 2 ) = (1+I), ( 4, 2 ) = (2), ( 1, 2 ) = (0), ( 7, 7 ) = (0), ( 2, 4 ) = (2), ( 3, 2 ) = (1), ( 7, 4 ) = (I), ( 6, 7 ) = (2), ( 4, 4 ) = (1), ( 5, 3 ) = (2+I), ( 5, 2 ) = (I), ( 3, 1 ) = (1), ( 3, 7 ) = (I), ( 5, 1 ) = (I), ( 2, 1 ) = (0), ( 7, 3 ) = (1+I), ( 3, 5 ) = (1+I), ( 1, 6 ) = (1+I)  ] )

(13)

GTC(a, 4, b, 2, 3)

array( 1 .. 9, 1 .. 9, [( 9, 3 ) = (2+I), ( 8, 9 ) = (3), ( 5, 7 ) = (I), ( 8, 3 ) = (1+I), ( 6, 3 ) = (3+I), ( 9, 2 ) = (3+I), ( 4, 3 ) = (3), ( 4, 7 ) = (3+I), ( 1, 4 ) = (2), ( 6, 8 ) = (2), ( 2, 2 ) = (0), ( 3, 7 ) = (2+I), ( 2, 7 ) = (1+I), ( 8, 5 ) = (3+I), ( 3, 9 ) = (I), ( 4, 2 ) = (2), ( 3, 2 ) = (1), ( 6, 7 ) = (3), ( 2, 6 ) = (I), ( 6, 9 ) = (1), ( 3, 8 ) = (3+I), ( 7, 7 ) = (0), ( 3, 3 ) = (2), ( 7, 1 ) = (1+I), ( 6, 4 ) = (2+I), ( 9, 9 ) = (0), ( 4, 8 ) = (I), ( 3, 6 ) = (1+I), ( 1, 3 ) = (1), ( 1, 1 ) = (omicron), ( 4, 6 ) = (2+I), ( 1, 5 ) = (3), ( 9, 5 ) = (I), ( 8, 1 ) = (2+I), ( 5, 6 ) = (3+I), ( 2, 9 ) = (3+I), ( 1, 7 ) = (1+I), ( 4, 1 ) = (2), ( 7, 3 ) = (I), ( 8, 8 ) = (0), ( 4, 5 ) = (1), ( 9, 4 ) = (1+I), ( 7, 2 ) = (1+I), ( 4, 9 ) = (1+I), ( 5, 1 ) = (3), ( 2, 1 ) = (0), ( 8, 6 ) = (2), ( 2, 8 ) = (2+I), ( 5, 3 ) = (0), ( 5, 8 ) = (1+I), ( 7, 5 ) = (2+I), ( 8, 4 ) = (I), ( 2, 5 ) = (3), ( 5, 2 ) = (3), ( 1, 6 ) = (I), ( 7, 9 ) = (2), ( 1, 2 ) = (0), ( 3, 1 ) = (1), ( 9, 7 ) = (2), ( 6, 6 ) = (0), ( 9, 1 ) = (3+I), ( 2, 3 ) = (1), ( 6, 2 ) = (I), ( 9, 8 ) = (1), ( 8, 7 ) = (1), ( 8, 2 ) = (2+I), ( 6, 1 ) = (I), ( 2, 4 ) = (2), ( 3, 5 ) = (0), ( 7, 8 ) = (3), ( 1, 8 ) = (2+I), ( 5, 4 ) = (1), ( 5, 5 ) = (2), ( 9, 6 ) = (3), ( 5, 9 ) = (2+I), ( 6, 5 ) = (1+I), ( 4, 4 ) = (0), ( 7, 4 ) = (3+I), ( 7, 6 ) = (1), ( 1, 9 ) = (3+I), ( 3, 4 ) = (3)  ] )

(14)

 

Now, we compute  the group table GT of  G in terms of the usual notations of our metacyclic group.

 

h:=proc(w,a,b)

  if w=omicron then omicron else a^Re(w)*b^Im(w)  fi;

end proc;

proc (w, a, b) if w = omicron then omicron else a^Re(w)*b^Im(w) end if end proc

(15)

``

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

local M,h1; M:=GTC(a,m,b,n,r); h1:=w->h(w,a,b);

Map(h1,M);

 

end proc;

proc (a, m, b, n, r) local M, h1; M := GTC(a, m, b, n, r); h1 := proc (w) options operator, arrow; h(w, a, b) end proc; LinearAlgebra:-Map(h1, M) end proc

(16)

``

``

GT(a, 3, b, 2, 2)

array( 1 .. 7, 1 .. 7, [( 3, 4 ) = (1), ( 2, 2 ) = (1), ( 6, 6 ) = (1), ( 3, 6 ) = (a^2*b), ( 1, 4 ) = (a^2), ( 6, 3 ) = (b), ( 4, 5 ) = (a^2*b), ( 7, 1 ) = (a^2*b), ( 4, 6 ) = (b), ( 5, 5 ) = (1), ( 4, 1 ) = (a^2), ( 7, 5 ) = (a^2), ( 3, 3 ) = (a^2), ( 6, 5 ) = (a), ( 4, 3 ) = (1), ( 7, 6 ) = (a), ( 1, 3 ) = (a), ( 2, 5 ) = (b), ( 2, 7 ) = (a^2*b), ( 5, 4 ) = (a*b), ( 1, 7 ) = (a^2*b), ( 2, 6 ) = (a*b), ( 7, 2 ) = (a^2*b), ( 5, 7 ) = (a), ( 4, 7 ) = (a*b), ( 6, 4 ) = (a^2*b), ( 2, 3 ) = (a), ( 1, 5 ) = (b), ( 5, 6 ) = (a^2), ( 1, 1 ) = (omicron), ( 6, 1 ) = (a*b), ( 6, 2 ) = (a*b), ( 4, 2 ) = (a^2), ( 1, 2 ) = (1), ( 7, 7 ) = (1), ( 2, 4 ) = (a^2), ( 3, 2 ) = (a), ( 7, 4 ) = (b), ( 6, 7 ) = (a^2), ( 4, 4 ) = (a), ( 5, 3 ) = (a^2*b), ( 5, 2 ) = (b), ( 3, 1 ) = (a), ( 3, 7 ) = (b), ( 5, 1 ) = (b), ( 2, 1 ) = (1), ( 7, 3 ) = (a*b), ( 3, 5 ) = (a*b), ( 1, 6 ) = (a*b)  ] )

(17)

GT(x, 4, y, 2, 3)

array( 1 .. 9, 1 .. 9, [( 8, 2 ) = (x^2*y), ( 3, 4 ) = (x^3), ( 2, 2 ) = (1), ( 6, 6 ) = (1), ( 3, 6 ) = (x*y), ( 1, 4 ) = (x^2), ( 6, 3 ) = (x^3*y), ( 4, 5 ) = (x), ( 8, 6 ) = (x^2), ( 7, 1 ) = (x*y), ( 9, 4 ) = (x*y), ( 8, 9 ) = (x^3), ( 4, 6 ) = (x^2*y), ( 1, 9 ) = (x^3*y), ( 5, 5 ) = (x^2), ( 4, 1 ) = (x^2), ( 9, 7 ) = (x^2), ( 7, 5 ) = (x^2*y), ( 3, 3 ) = (x^2), ( 5, 9 ) = (x^2*y), ( 9, 1 ) = (x^3*y), ( 6, 5 ) = (x*y), ( 4, 3 ) = (x^3), ( 9, 8 ) = (x), ( 7, 6 ) = (x), ( 1, 3 ) = (x), ( 2, 5 ) = (x^3), ( 8, 1 ) = (x^2*y), ( 2, 7 ) = (x*y), ( 5, 8 ) = (x*y), ( 6, 8 ) = (x^2), ( 5, 4 ) = (x), ( 9, 6 ) = (x^3), ( 2, 9 ) = (x^3*y), ( 1, 7 ) = (x*y), ( 2, 6 ) = (y), ( 7, 2 ) = (x*y), ( 7, 8 ) = (x^3), ( 5, 7 ) = (y), ( 4, 7 ) = (x^3*y), ( 8, 7 ) = (x), ( 6, 4 ) = (x^2*y), ( 2, 3 ) = (x), ( 8, 8 ) = (1), ( 1, 5 ) = (x^3), ( 5, 6 ) = (x^3*y), ( 1, 1 ) = (omicron), ( 6, 1 ) = (y), ( 7, 9 ) = (x^2), ( 8, 4 ) = (y), ( 6, 2 ) = (y), ( 4, 2 ) = (x^2), ( 9, 3 ) = (x^2*y), ( 9, 2 ) = (x^3*y), ( 1, 2 ) = (1), ( 3, 8 ) = (x^3*y), ( 7, 7 ) = (1), ( 4, 8 ) = (y), ( 2, 4 ) = (x^2), ( 4, 9 ) = (x*y), ( 3, 2 ) = (x), ( 7, 4 ) = (x^3*y), ( 6, 7 ) = (x^3), ( 4, 4 ) = (1), ( 8, 3 ) = (x*y), ( 5, 3 ) = (1), ( 2, 8 ) = (x^2*y), ( 5, 2 ) = (x^3), ( 3, 1 ) = (x), ( 6, 9 ) = (x), ( 3, 7 ) = (x^2*y), ( 5, 1 ) = (x^3), ( 9, 9 ) = (1), ( 2, 1 ) = (1), ( 1, 8 ) = (x^2*y), ( 8, 5 ) = (x^3*y), ( 9, 5 ) = (y), ( 7, 3 ) = (y), ( 3, 9 ) = (y), ( 3, 5 ) = (1), ( 1, 6 ) = (y)  ] )

(18)

 

The abelian case is when  r =1.

 

GT(a, 2, b, 2, 1)

array( 1 .. 5, 1 .. 5, [( 3, 4 ) = (a*b), ( 2, 2 ) = (1), ( 1, 4 ) = (b), ( 4, 5 ) = (a), ( 5, 5 ) = (1), ( 4, 1 ) = (b), ( 3, 3 ) = (1), ( 4, 3 ) = (a*b), ( 1, 3 ) = (a), ( 2, 5 ) = (a*b), ( 5, 4 ) = (a), ( 2, 3 ) = (a), ( 1, 5 ) = (a*b), ( 1, 1 ) = (omicron), ( 4, 2 ) = (b), ( 1, 2 ) = (1), ( 2, 4 ) = (b), ( 3, 2 ) = (a), ( 4, 4 ) = (1), ( 5, 3 ) = (b), ( 5, 2 ) = (a*b), ( 3, 1 ) = (a), ( 5, 1 ) = (a*b), ( 2, 1 ) = (1), ( 3, 5 ) = (b)  ] )

(19)

``

Power of element  "z^(s ) in a group  G(a,m,b,n,r)."

 

PrC:=proc(z,s,m,n,r)

local t,p,q;

p := (z,w)->(Re(z)+r^Im(z)*Re(w)) mod m +I*(Im(z)+Im(w) mod n);

q:=t->p(q(t-1),z);

q(1):=z;

q(s);  

end proc;

 

proc (z, s, m, n, r) local t, p, q; p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc; q := proc (t) options operator, arrow; p(q(t-1), z) end proc; q(1) := z; q(s) end proc

(20)

PrC(2+I, 3, 5, 2, 3);

I

(21)

``

Power of element  "a^(j)*b^(j)  in a group  G(a,m,b,n,r)."

 

 

NULL

PrG:=proc(i,j,s,m,n,r) local z;

z:=PrC(Complex(i, j), s, m, n, r);a^Re(z)*b^Im(z);

end proc;

proc (i, j, s, m, n, r) local z; z := PrC(Complex(i, j), s, m, n, r); a^Re(z)*b^Im(z) end proc

(22)

PrG(1, 1, 7, 4, 2, 3);

a*b

(23)

``

Inverse Elements Tables  

 

Inverse elements table ITC of GC is as follows.

ITC:=proc(m,n,r)

local M,L,inv,IL;inv := z->Complex(`mod`((m-Re(z))*r^(2-Im(z)), m), `mod`(n-Im(z), n)) ;

M:=Transpose(Matrix(m,n,(i,j)->Complex(i-1,j-1)));

L:= [seq(seq(M(i,j),j=1..m),i=1..n)];

IL:=Map(inv,L);

Transpose(Matrix(2, m*n, [L, IL]));

end proc;

 

proc (m, n, r) local M, L, inv, IL; inv := proc (z) options operator, arrow; Complex(`mod`((m-Re(z))*r^(2-Im(z)), m), `mod`(n-Im(z), n)) end proc; M := LinearAlgebra:-Transpose(Matrix(m, n, proc (i, j) options operator, arrow; Complex(i-1, j-1) end proc)); L := [seq(seq(M(i, j), j = 1 .. m), i = 1 .. n)]; IL := LinearAlgebra:-Map(inv, L); LinearAlgebra:-Transpose(Matrix(2, m*n, [L, IL])) end proc

(24)

 

ITC(5, 2, 4)

Matrix([[0, 0], [1, 4], [2, 3], [3, 2], [4, 1], [I, I], [1+I, 1+I], [2+I, 2+I], [3+I, 3+I], [4+I, 4+I]])

(25)

 

Inverse elements table ITG of G is as follows.

 

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

  local hh; hh:=w->a^Re(w)*b^Im(w);

  Map(hh,ITC(m,n,r));

end proc;

proc (a, m, b, n, r) local hh; hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; LinearAlgebra:-Map(hh, ITC(m, n, r)) end proc

(26)

NULL

ITG(a, 5, b, 2, 4)

Matrix([[1, 1], [a, a^4], [a^2, a^3], [a^3, a^2], [a^4, a], [b, b], [a*b, a*b], [a^2*b, a^2*b], [a^3*b, a^3*b], [a^4*b, a^4*b]])

(27)

``

Order Tables

The order OrdC of an element z in GC and order table OTC of GC

 

OrdC:=proc(z,m,n,r)

local t,p,q;

z;p := (z,w)->(Re(z)+r^Im(z)*Re(w)) mod m +I*(Im(z)+Im(w) mod n);

q:=n->p(q(n-1),z);

q(1):=z;

for t from 1 to m*n do if is(q(t)=0) then return(t) fi;od;   

end proc;

proc (z, m, n, r) local t, p, q; z; p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc; q := proc (n) options operator, arrow; p(q(n-1), z) end proc; q(1) := z; for t to m*n do if is(q(t) = 0) then return t end if end do end proc

(28)

``

``

OrdC(1, 4, 2, 3);

4

(29)

OrdC(1+I, 4, 2, 3);

2

(30)

 

OTC:=proc(m,n,r)

local L,OL,ord1;

L:= GC(a,m,b,n,r);

ord1:=z->OrdC(z,m,n,r);

OL:=Map(ord1,L);

Transpose(Matrix(2, m*n, [L, OL]));

end proc;

 

 

proc (m, n, r) local L, OL, ord1; L := GC(a, m, b, n, r); ord1 := proc (z) options operator, arrow; OrdC(z, m, n, r) end proc; OL := LinearAlgebra:-Map(ord1, L); LinearAlgebra:-Transpose(Matrix(2, m*n, [L, OL])) end proc

(31)

NULL

OTC(5, 2, 4)

Matrix([[0, 1], [1, 5], [2, 5], [3, 5], [4, 5], [I, 2], [1+I, 2], [2+I, 2], [3+I, 2], [4+I, 2]])

(32)

``

The order of element in G and the order table OTG of G

 

OrdG:=proc(i,j,a,m,b,n,r) local z;

z:=Complex(i,j);

OrdC(z,m,n,r);

end proc;

proc (i, j, a, m, b, n, r) local z; z := Complex(i, j); OrdC(z, m, n, r) end proc

(33)

``

OrdG(3, 0, a, 4, b, 2, 3);

 

4

(34)

``

OTG:=proc(a,m,b,n,r) local A,L,K,hh,LL;

A:=OTC(m,n,r);

L:=convert(col(A,1),list);

K:=convert(col(A,2),list);

hh:=w->a^Re(w)*b^Im(w);

LL:=Map(hh,L);

transpose(Matrix(2,m*n,[LL,K]));

end proc;

proc (a, m, b, n, r) local A, L, K, hh, LL; A := OTC(m, n, r); L := convert(linalg:-col(A, 1), list); K := convert(linalg:-col(A, 2), list); hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; LL := LinearAlgebra:-Map(hh, L); linalg:-transpose(Matrix(2, m*n, [LL, K])) end proc

(35)

``

OTG(x, 5, y, 2, 4)

array( 1 .. 10, 1 .. 2, [( 3, 2 ) = (5), ( 5, 1 ) = (x^4), ( 8, 2 ) = (2), ( 10, 2 ) = (2), ( 5, 2 ) = (5), ( 8, 1 ) = (x^2*y), ( 2, 1 ) = (x), ( 9, 2 ) = (2), ( 1, 2 ) = (1), ( 2, 2 ) = (5), ( 1, 1 ) = (1), ( 10, 1 ) = (x^4*y), ( 7, 2 ) = (2), ( 9, 1 ) = (x^3*y), ( 6, 1 ) = (y), ( 3, 1 ) = (x^2), ( 4, 2 ) = (5), ( 6, 2 ) = (2), ( 4, 1 ) = (x^3), ( 7, 1 ) = (x*y)  ] )

(36)

``

 Centerlizer and Center

 Centeralizer CentC in GC and centeralizer CentG in G as well as CenterC and CenterG are found below  

NULL

NULL

CentC:=proc(u,a,m,b,n,r)

   local E,p;

   E:=GC(a,m,b,n,r);

   p := (z,w)->(Re(z)+r^Im(z)*Re(w)) mod m +I*(Im(z)+Im(w) mod n);  

  { select(z->is(p(u,z)=p(z,u)),E)[]};

end proc;

proc (u, a, m, b, n, r) local E, p; E := GC(a, m, b, n, r); p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc; {select(proc (z) options operator, arrow; is(p(u, z) = p(z, u)) end proc, E)[]} end proc

(37)

NULL

CentC(1+I, a, 3, b, 2, 3)

{0, 1+I}

(38)

``

CentG:=proc(i,j,a,m,b,n,r) local S,hh; hh:=w->a^Re(w)*b^Im(w);

S:=CentC(Complex(i,j),a,m,b,n,r);

Map(hh,S);

end proc;

 

 

proc (i, j, a, m, b, n, r) local S, hh; hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; S := CentC(Complex(i, j), a, m, b, n, r); LinearAlgebra:-Map(hh, S) end proc

(39)

CentG(1, 1, a, 3, b, 2, 2)

{1, a*b}

(40)

CentG(2, 1, a, 4, b, 2, 3)

{1, b, a^2, a^2*b}

(41)

NULL

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

local S,E;E:=GC(a,m,b,n,r);

S := seq(CentC(z, a, m, b, n, r), `in`(z, E));

`intersect`(S);

end proc;

proc (a, m, b, n, r) local S, E; E := GC(a, m, b, n, r); S := seq(CentC(z, a, m, b, n, r), `in`(z, E)); `intersect`(S) end proc

(42)

``

``

CenterC(a, 6, b, 2, 5);

{0, 3}

(43)

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

  local L,hh;

  L:=CenterC(a,m,b,n,r);

hh:=w->a^Re(w)*b^Im(w);

Map(hh,L);

end proc;

proc (a, m, b, n, r) local L, hh; L := CenterC(a, m, b, n, r); hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; LinearAlgebra:-Map(hh, L) end proc

(44)

CenterG(a, 3, b, 4, 2);

{1, b^2}

(45)

CenterG(a, 6, b, 2, 5);

{1, a^3}

(46)

CenterG(x, 7, y, 2, 6);

{1}

(47)

CenterG(a, 8, b, 2, 7);

{1, a^4}

(48)

``

Conjugate Classes

ConjC and ConjG are to find cojugate class of an element in GC and G respectively.

ConjClassesC and ConjClassesG are to find cojugate classes of GC and G respectively.

 

``

ConjC:=proc(z,a,m,b,n,r)

 local p,inv,E;  E:=GC(a,m,b,n,r);

 p := (z,w)->(Re(z)+r^Im(z)*Re(w)) mod m +I*(Im(z)+Im(w) mod n);  

 inv := z->Complex(`mod`((m-Re(z))*r^(2-Im(z)), m), `mod`(n-Im(z), n)) ;

 {seq(p(p(w,z),inv(w)),w in E)};

end proc;

 

proc (z, a, m, b, n, r) local p, inv, E; E := GC(a, m, b, n, r); p := proc (z, w) options operator, arrow; `mod`(Re(z)+r^Im(z)*Re(w), m)+I*(`mod`(Im(z)+Im(w), n)) end proc; inv := proc (z) options operator, arrow; Complex(`mod`((m-Re(z))*r^(2-Im(z)), m), `mod`(n-Im(z), n)) end proc; {seq(p(p(w, z), inv(w)), `in`(w, E))} end proc

(49)

NULL

NULL

ConjC(1+I, a, 4, b, 2, 3);

{1+I, 3+I}

(50)

ConjC(0, a, 4, b, 2, 3);

{0}

(51)

ConjC(2, a, 4, b, 2, 3);

{2}

(52)

ConjG:=proc(i,j,a,m,b,n,r)

local z,hh,S;

z:=Complex(i,j);S:=ConjC(z,a,m,b,n,r);

hh:=w->a^Re(w)*b^Im(w);

Map(hh,S);

end proc;

 

proc (i, j, a, m, b, n, r) local z, hh, S; z := Complex(i, j); S := ConjC(z, a, m, b, n, r); hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; LinearAlgebra:-Map(hh, S) end proc

(53)

NULL

ConjG(1, 1, a, 4, b, 2, 3);

{a*b, a^3*b}

(54)

``

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

local E,con1; con1:=z->ConjC(z,a,m,b,n,r);

E:=GC(a,m,b,n,r);

{seq(con1(z),z in E)};

end proc;

proc (a, m, b, n, r) local E, con1; con1 := proc (z) options operator, arrow; ConjC(z, a, m, b, n, r) end proc; E := GC(a, m, b, n, r); {seq(con1(z), `in`(z, E))} end proc

(55)

``

``

ConjClassesC(a, 4, b, 2, 3);

{{0}, {2}, {1, 3}, {I, 2+I}, {1+I, 3+I}}

(56)

``

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

local H,hh;

hh:=w->a^Re(w)*b^Im(w);

H:=ConjClassesC(a,m,b,n,r);seq(Map(hh,X),X=H);

end proc;

 

proc (a, m, b, n, r) local H, hh; hh := proc (w) options operator, arrow; a^Re(w)*b^Im(w) end proc; H := ConjClassesC(a, m, b, n, r); seq(LinearAlgebra:-Map(hh, X), X = H) end proc

(57)

NULL

ConjClassesG(a, 4, b, 2, 3);

{1}, {a^2}, {a, a^3}, {b, a^2*b}, {a*b, a^3*b}

(58)

ConjClassesG(a, 3, b, 2, 2);

{1}, {a, a^2}, {b, a*b, a^2*b}

(59)

ConjClassesG(a, 3, b, 4, 2);

{1}, {b^2}, {a, a^2}, {a*b^2, a^2*b^2}, {b, a*b, a^2*b}, {b^3, a*b^3, a^2*b^3}

(60)

 

Remark

It is known that a subgroup and a quotient group of  a metacyclic group are metacyclic. One may use the same treatment to find all subgroups of a metacyclic group.

``