K1.11.1: Groups of order  8

B. Schnizer

schnizer@itp.tu-graz.ac.at

2008-11-10

Summary:  There are 5 groups of order 8:	1.:   The cyclic group  (Subscript[C, 8]), 
						2.:   The remainder group mod16  of odd numbers
						3.:   The dihedral group (Subscript[D, 4])
						4:     The quaternion group  Q
						5.:    The "eight" group  AA8	
All groups except for the quaternion group Q are Abelian groups. 
Below the permutation group isomorphic to each group are found and the group tables are computed.

General commands

<< DiscreteMath`Combinatorica`

\(\(\(\(\(ppr[li_, lk_]\  := \ \ lk\  /. \ 
        Thread[\ unit\  -> \ li]\)\(
\)\( (*\ 
      computes\ product\ of\ two\ permutations\ *) \)\(
\)
    \)

    \(\(ppi[li_]\  := \ unit\  /. \ Thread[\ li\ \  -> \ unit\ ]\)\(
\)
    \)\)\( (*\ computes\ permutation\ inverse\ to\ li\ *) \)\)\)

S8  serves as a starting point

np  =  8;
l0  =  MinimumChangePermutations[Table[n, {n, np}]];
unit  =  l0[[1]];

Length[l0]

1: (Subscript[C, 8])  The cyclic group of order 8

Noack: (Subscript[G, 1]^8), pp.37 - 41

lgc8  =  Table[0, {8}]

ppo[gv_]  :=  ppr[gv, g2]

g1 = unit = e

lgc8[[1]]  =  unit  =  g1

g2 = a = {2,3,4,5,6,7,8,1}

g2  =  {2, 3, 4, 5, 6, 7, 8, 1}

lgc8[[2]] =  g2

Do[lgc8[[k + 1]]  =  ppo[lgc8[[k]]], {k, 2, 7}]

lgc8

lop1  =  Table[RotateLeft[unit, k], {k, 0, 7}]

lop1 ==  lgc8

lc1  =  Table[ToCycles[lop1[[k]]], {k, Length[lop1]}]

RotateRight[ lc1[[2, 1]], 1]

grt1  =  
        Table[ppr[lop1[[i]], lop1[[k]]], {i, Length[lop1]}, {k, 
            Length[lop1]}];

Table[Position[grt1, lop1[[k]]], {k, Length[lop1]}];

Table[
        Position[lop1, grt1[[i, k]]], {i, Length[lop1]}, {k, 
          Length[lop1]}];

Partition[Flatten[%], 8]

Map[(a^#) &, %] // MatrixForm

This is the group table of  (Subscript[C, 8])  written as a matrix.

2: Remainder classes mod.16 of odd numbers

Noack: (Subscript[G, 2]^8), pp.42-3

Group table

grt21  =  
      Table[Mod[i k,  16], {i, 1, 16, 2}, {k, 1, 16, 2}]  // 
        MatrixForm

Permutation group

grl  =  Range[1, 15, 2]

supl  =  Thread[grl  ->  Range[8]]

e = g1

g1  =  unit

g2 ⇔ 3

g2  =  Mod[3 grl, 16]

g2  =  g2  /.  supl

g3 ⇔ 5

g3  =  Mod[5 grl, 16]

g3  =  g3  /.  supl

g4 ⇔ 7

g4  =  Mod[7 grl, 16]

g4  =  g4  /.  supl

g5 ⇔ 9

g5  =  Mod[9 grl, 16]

g5  =  g5  /.  supl

g6 ⇔ 11

g6  =  Mod[11 grl, 16]

g6  =  g6  /.  supl

g7 ⇔ 13

g7  =  Mod[13 grl, 16]

g7  =  g7  /.  supl

g8 ⇔ 15

g8  =  Mod[15 grl, 16]

g8  =  g8  /.  supl

lop2  =  {g1, g2, g3, g4, g5, g6, g7, g8}

Group table

lc2  =  
      Table[Map[RotateRight[#, 1] &, ToCycles[lop2[[k]]]], {k, 
          Length[lop2]}]

grt2  =  
        Table[ppr[lop2[[i]], lop2[[k]]], {i, Length[lop2]}, {k, 
            Length[lop2]}];

Table[
        Position[lop2, grt2[[i, k]]], {i, Length[lop2]}, {k, 
          Length[lop2]}];

Map[(Subscript[g, #]) &, Partition[Flatten[%], 8], {2}] /.  
        (Subscript[g, 1]) ->  e ;

MatrixForm[%]

3:Dihedral group (Subscript[D, 4])

Noack: (Subscript[G, 3]^8), pp.43-4

The cyclic group (Subscript[C, 4]) written as permutation group

e = unit = g1

g1  =  Range[8]

a = g2

g2  =  {2, 3, 4, 1, 6, 7, 8, 5}

ToCycles[%]

(a^2)   =  g2 g2

g3  =  ppr[g2, g2]

ToCycles[%]

Map[RotateRight[#, 1] &, %]

(a^3)   =  g4  =  g2 g3

g4  =  ppr[g2, g3]

ToCycles[%]

Map[RotateRight[#, 1] &, %]

(a^4)   =  e  =    g2 g4

ppr[g2, g4]

ToCycles[%]

Extension to the dihedral group

For the extension to the dihedral group we need a reflection s.

s = g5

g5  =  {2, 1, 4, 3, 6, 5, 8, 7}

(s^2) = (g5)^2 =  e

ppr[g5, g5]

as = g2 g5 = g6

g6  =  ppr[g2, g5]

ToCycles[%]

Map[RotateRight[#, 1] &, %]

(a^2)s = g3 g5 = g7

g7  =  ppr[g3, g5]

ToCycles[%]

Map[RotateRight[#, 1] &, %]

(a^3)s = g4 g5 = g8

g8  =  ppr[g4, g5]

ToCycles[%]

Map[RotateRight[#, 1] &, %]

Group table

lop3  =  {g1, g2, g3, g4, g5, g6, g7, g8}

lc3  =  
      Table[Map[RotateRight[#, 1] &, ToCycles[lop3[[k]]]], {k, 
          Length[lop3]}]

grt3  =  
        Table[ppr[lop3[[i]], lop3[[k]]], {i, Length[lop3]}, {k, 
            Length[lop3]}];

Table[
        Position[lop3, grt3[[i, k]]], {i, Length[lop3]}, {k, 
          Length[lop3]}];

Map[(Subscript[g, #]) &, Partition[Flatten[%], 8], {2}] /.  
        (Subscript[g, 1]) ->  e ;

MatrixForm[%]

4: Quaternion group

Defining the noncommuative product of the basis vectors

Clear[ii, jj, kk]
suq  =  {1 ** 1  ->  
          1, 
ii ** ii  ->  -1, 
        jj ** jj ->  -1,  
        kk ** kk ->  -1, 
1 ** 
            ii  ->   ii,  1 **  jj  ->  jj, 
        1 ** kk  ->  kk, 
        ii ** 1  ->   ii,   jj ** 1  ->  jj, 
        kk ** 1  ->  kk, 
ii **  jj  ->  
          kk,   jj ** ii  ->  -kk, 
jj ** 
            kk  -> ii, kk ** jj  -> -ii, 
        ii ** kk  -> -jj, kk ** ii -> jj}

sun  =  {1 ** aa_ -> aa, 
        aa_ ** 1 -> aa, (-1) ** aa_ -> -aa, 
        aa_ ** (-1) -> -aa, (-bb_) ** 
            aa_ -> -bb ** aa, 
        aa_ ** (-bb_) -> -aa ** 
              bb, (-aa_) ** (-bb_)  ->  
          aa ** bb}

List of the basis vectors

lq  =  {1, -1, ii, -ii, jj, -jj, 
          kk, -kk};

The group table computed from the basis vectors

qgrt  =  
        Table[lq[[i]] **  lq[[j]] //. Join[sun, suq], {i, 
            Length[lq]}, {j, Length[lq]}];
TableForm[%]

The isomorphic permutation group

sup  =  Thread[lq  ->   Range[8]]

spij  =  Array[suij, {8}]

g1 = e = unit ⇔ 1

g1  =  Range[8]

suij[1]  =  g1  ->  1

g2 ⇔ -1

lm1  =  
      Table[(-1) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g2  =  lm1  /.  sup

ppr[g2, g2]

suij[2]  =  g2  ->  -1

g3 ⇔ ii

lii  =  
      Table[(ii) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g3  = lii  /.  sup

suij[3]  =  g3  ->  ii

g4 ⇔ - ii

lmi  =  
      Table[(-ii) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g4  =  lmi  /.  sup

suij[4]  =  g4  ->  -ii

g5 ⇔ jj

ljj =  
      Table[(jj) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g5  = ljj /.  sup

suij[5]  =  g5  ->  jj

g6 ⇔ - jj

lmj  =  
      Table[(-jj) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g6  =  lmj  /.  sup

suij[6]  =  g6  ->  -jj

g7 ⇔ kk

lkk  =  
      Table[(kk) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g7  =  lkk  /.  sup

ppr[g3, g5]  ==  g7

suij[7]  =  g7  ->  kk

g8 ⇔ - kk

lmk  =  
      Table[(-kk) ** lq[[k]] //. Join[sun, suq], {k, 
          Length[lq]}]

g8  =  lmk  /.  sup

ppr[g5, g3]  ==  g8

suij[8]  =  g8  ->  -kk

All resubstitutions

spij

Group table

lop4  =  {unit, g2,  g3, g4, g5, g6, g7 , g8}

lc4  =  
      Table[Map[RotateRight[#, 1] &, ToCycles[lop4[[k]]]], {k, 
          Length[lop4]}]

grt4  =  
        Table[ppr[lop4[[i]], lop4[[k]]], {i, Length[lop4]}, {k, 
            Length[lop4]}];

grt4  /.  spij

qgrt

%  ==  %%

5: The "eight" group AA8

The permuations representing the elements of the "eight" group are found from the following coboid
with corners labeled as shown in ghe figure (taken from AA8Fig.nb ).

The elements

rhsu  =  Array[su, {8}]

e unit element

su[1] =  Range[8]  ->  e

ToCycles[Range[8]]

(Subscript[S, yz])

g2  =  {2, 1,  4,  3,  6,  5,  8,  7}

Map[Sort, ToCycles[%]]

su[2] = g2 -> (Subscript[S, yz])

ppr[g2, g2]

ToCycles[%]

(Subscript[S, xy])

g3  =  {5, 6,  7,  8,  1,  2,  3,  4}

Map[Sort, ToCycles[%]]

su[3]= g3 -> (Subscript[S, xy])

ppr[g3, g3]

(Subscript[S, xz])

g4  =  {4, 3,  2,  1,  8,  7,  6,  5}

Map[Sort, ToCycles[%]]

su[4] = g4 -> (Subscript[S, xz])

ppr[g4, g4]

(Subscript[S, x])

g5  =  {8, 7,  6,  5,  4,  3,  2,  1}

Map[Sort, ToCycles[%]]

su[5] = g5 -> (Subscript[S, x])

ppr[g5, g5]

(Subscript[S, y])

g6  =  {6, 5,  8,  7,  2,  1,  4,  3}

Map[Sort, ToCycles[%]]

su[6] = g6 -> (Subscript[S, y])

ppr[g6, g6]

(Subscript[S, z])

g7  =  {3, 4,  1,  2,  7,  8,  5,  6}

Map[Sort, ToCycles[%]]

su[7] = g7 -> (Subscript[S, z])

ppr[g7, g7]

I  Inversion

g8  =  {7, 8, 5,  6,  3,  4,  1,  2}

Map[Sort, ToCycles[%]]

su[8]  =  g8  ->  "I"

ppr[g8, g8]

Inverse substitutions

rhsu

Group table

ls5  =  {e, (Subscript[S, yz]), (Subscript[S, xy]), (Subscript[S, xz]),  (Subscript[S, x]), (Subscript[S, y]), 
        (Subscript[S, z]), "I"}

lop5  =  {unit, g2, g3, g4, g5, g6, g7, g8 }

lop5  /.  rhsu

lc5  =  Map[Sort, Map[ToCycles, lop5], 2]

grt5  =  
      Table[ppr[lop5[[i]], lop5[[k]]], {i, Length[lop5]}, {k, 
          Length[lop5]}]

grt5  /.  rhsu // MatrixForm