MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Question on factor group calculations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38348] Re: [mg38249] Question on factor group calculations
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Thu, 12 Dec 2002 01:37:18 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Sorry, I wrote my reply in a great hurry and made some silly mistake. 
Here is the correct code, I hope.

First load the Combinatorica package:

In[1]:=
<< "DiscreteMath`Combinatorica`"

Next define the group elements

In[2]:=
Z4Z12 = Flatten[Outer[List, Range[0, 3], Range[0, 11]], 1]

Out[2]=
{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 
8}, {0, 9},
   {0, 10}, {0, 11}, {1, 0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 
6},
   {1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}, {2, 0}, {2, 1}, {2, 2}, {2, 
3},
   {2, 4}, {2, 5}, {2, 6}, {2, 7}, {2, 8}, {2, 9}, {2, 10}, {2, 11}, {3, 
0},
   {3, 1}, {3, 2}, {3, 3}, {3, 4}, {3, 5}, {3, 6}, {3, 7}, {3, 8}, {3, 
9},
   {3, 10}, {3, 11}}

Next,t he group multiplication:

In[3]:=
multZ4Z12[{a_, b_}, {c_, d_}] := {Mod[a + c, 4], Mod[b + d, 12]}

THe generated subgroup:

In[4]:=
H = NestWhileList[multZ4Z12[#1, {2, 2}] & , {2, 2}, #1 != {0, 0} & ]

Out[4]=
{{2, 2}, {0, 4}, {2, 6}, {0, 8}, {2, 10}, {0, 0}}

The coset representatives:

In[5]:=
cosetReps = Union[Z4Z12, SameTest -> (MemberQ[H, multZ4Z12[#1, -#2]] & 
)]

Out[5]=
{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {1, 0}, {1, 1}, {1, 2}, {1, 3}}

Now (this is different from the previous version), the multiplication 
of the coset representatives:

In[6]:=
multF[{a_, b_}, {c_, d_}] := First[Select[cosetReps,
     MemberQ[H, multZ4Z12[multZ4Z12[{a, b}, {c, d}], -#1]] & ]]

And here is the multiplication table:

In[7]:=
TableForm[MultiplicationTable[cosetReps, multF]]

Out[7]//TableForm=
TableForm[{{1, 2, 3, 4, 5, 6, 7, 8}, {2, 3, 4, 1, 6, 7, 8, 5},
    {3, 4, 1, 2, 7, 8, 5, 6}, {4, 1, 2, 3, 8, 5, 6, 7}, {5, 6, 7, 8, 3, 
4, 1, 2},
    {6, 7, 8, 5, 4, 1, 2, 3}, {7, 8, 5, 6, 1, 2, 3, 4}, {8, 5, 6, 7, 2, 
3, 4, 1}}]

I hope this is now O.K.

With best regards

Andrzej


On Wednesday, December 11, 2002, at 10:59 PM, Diana Mecum wrote:

> Andrzej,
>
> Thank you. This is very helpful, and I appreciate your time.
>
> I am not sure that I am getting the desired final multiplication table
> output.
>
> The output I get for the multiplication table:
>
> MultiplicationTable[cosetReps, multZ4Z12] // TableForm
>
> has zeros in it. (Perhaps I have not used the right equation to 
> calculate
> the multiplication table.) I am not sure that the code is 
> understanding that
> the result might not be an exact match of the original coset, but 
> might have
> bits and pieces of the original coset.
>
> For example, manually multiplying (element for element) the coset
> represented by (3,0) and (3,2) gives:
>
> {(2,2), (2,6), (2,10), (2,2), (2,6), (2,10)}, when the actual coset
> represented by the identity is:
>
> {{0, 0}, {2, 2}, {0, 4}, {2, 6}, {0, 8}, {2, 10}}
>
> I have listed the representative element, such as {0, 0}, first.
>
> I greatly appreciate you help with this. The concept of being able to 
> do
> this with Mathematica is very exciting.
>
> Diana M.
>
>
>
> -----Original Message-----
> From: Andrzej Kozlowski [mailto:akoz at mimuw.edu.pl]
To: mathgroup at smc.vnet.net
> Sent: Tuesday, December 10, 2002 9:20 PM
> To: Diana
> Cc: mathgroup at smc.vnet.net; Andrzej Kozlowski
> Subject: [mg38348] Re: [mg38249] Question on factor group calculations
>
>
> I think the best way is to use cost representatives rather than cosets
> to construct your table.
>
> First define Z4Z12 in your way:
>
> In[2]:=
> Z4Z12 = Flatten[Outer[List, Range[0, 3], Range[0, 11]], 1]
>
> Out[2]=
> {{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6},
>    {0, 7}, {0, 8}, {0, 9}, {0, 10}, {0, 11}, {1, 0}, {1, 1},
>    {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {1, 7}, {1, 8},
>    {1, 9}, {1, 10}, {1, 11}, {2, 0}, {2, 1}, {2, 2}, {2, 3},
>    {2, 4}, {2, 5}, {2, 6}, {2, 7}, {2, 8}, {2, 9}, {2, 10},
>    {2, 11}, {3, 0}, {3, 1}, {3, 2}, {3, 3}, {3, 4}, {3, 5},
>    {3, 6}, {3, 7}, {3, 8}, {3, 9}, {3, 10}, {3, 11}}
>
> In[3]:=
> multZ4Z12[{a_, b_}, {c_, d_}] := {Mod[a + c, 4],
>     Mod[b + d, 12]}
>
>
> Next we cpnstruct the subroup generated by {2,2} (your Coset1):
>
> In[4]:=
> H = NestWhileList[multZ4Z12[#1, {2, 2}] & , {2, 2},
>     #1 != {0, 0} & ]
>
> Out[4]=
> {{2, 2}, {0, 4}, {2, 6}, {0, 8}, {2, 10}, {0, 0}}
>
> Now we can use Union with a suitable SameTest function to obtian a set
> of coste representatives:
>
>
> In[7]:=
> cosetReps = Union[Z4Z12, SameTest ->
>      (MemberQ[H, multZ4Z12[#1, -#2]] & )]
>
> Out[7]=
> {{0, 0}, {0, 1}, {0, 2}, {0, 3}, {1, 0}, {1, 1}, {1, 2},
>    {1, 3}}
>
> We only need to generate a multiplication table for the coset
> representatives, so we defiea new multiplication:
>
> In[8]:=
> multF[{a_, b_}, {c_, d_}] := Select[cosetReps,
>     MemberQ[H, multZ4Z12[{a, b}, {c, d}] - #1] & ]
>
> You cna check that it wrks the right way. Now it is easy to generate
> the multiplication table.
>
> Not e that I have paid no attention to efficiency here. This method
> works nicely for examples of your size. For much larger ones it  would
> be necessary to carefully consider the question of efficiency and the
> code would almost certainly become less compact.
>
> Andrzej Kozlowski
> Yokohama, Japan
>
>
> On Tuesday, December 10, 2002, at 06:10 PM, Diana wrote:
>
>> Math friends,
>>
>> I am trying to create a multiplication table for the factor groups,
>>
>> (Z_4 (+) Z_12)/<(2,2)>
>>
>> I understand how to list the elements of (Z_4 (+) Z_12). This is done
>> with:
>>
>> Z4Z12 = Flatten[Outer[List, Range[0, 3], Range[0, 11]], 1]
>>
>> I would like to be able to figure out how to list the eight factor
>> groups
>> with a calculation with (2,2). This would be in modulo 4,12 
>> arithmetic.
>>
>> As a workaround, I defined (Z_4 (+) Z_12)/<(2,2)> as the eight cosets
>> defined below:
>>
>> multZ4Z12[{a_, b_}, {c_, d_}] := {Mod[a + c, 4], Mod[b + d, 12]}
>>
>> Multiplication[Z4Z12, multZ4Z12] // TableForm;
>>
>> Coset1 = {Z4Z12[[1]], Z4Z12[[27]], Z4Z12[[5]], Z4Z12[[31]], 
>> Z4Z12[[9]],
>>     Z4Z12[[35]]}
>>
>> Coset2 = {Z4Z12[[2]], Z4Z12[[28]], Z4Z12[[6]], Z4Z12[[32]],
>> Z4Z12[[10]],
>>     Z4Z12[[36]]}
>>
>> Coset3 = {Z4Z12[[3]], Z4Z12[[29]], Z4Z12[[7]], Z4Z12[[33]],
>> Z4Z12[[11]],
>>     Z4Z12[[25]]}
>>
>> Coset4 = {Z4Z12[[4]], Z4Z12[[30]], Z4Z12[[8]], Z4Z12[[34]],
>> Z4Z12[[12]],
>>     Z4Z12[[26]]}
>>
>> Coset5 = {Z4Z12[[37]], Z4Z12[[15]], Z4Z12[[41]], Z4Z12[[19]],
>> Z4Z12[[45]],
>>     Z4Z12[[23]]}
>>
>> Coset6 = {Z4Z12[[38]], Z4Z12[[16]], Z4Z12[[42]], Z4Z12[[20]],
>> Z4Z12[[46]],
>>     Z4Z12[[24]]}
>>
>> Coset7 = {Z4Z12[[39]], Z4Z12[[17]], Z4Z12[[43]], Z4Z12[[21]],
>> Z4Z12[[47]],
>>     Z4Z12[[13]]}
>>
>> Coset8 = {Z4Z12[[40]], Z4Z12[[18]], Z4Z12[[44]], Z4Z12[[22]],
>> Z4Z12[[48]],
>>     Z4Z12[[14]]}
>>
>> I was not able to figure a way to create a multiplication table with
>> these
>> eight elements, because of the multiple part modulo addition.
>>
>> There must be a way to multiply <(2,2)> by different elements of the
>> external direct product, and a way to compute the multiplication table
>> of
>> the factor groups. Can someone help?
>>
>> Thanks,
>>
>> Diana
>>
>> =====================================================
>> "God made the integers, all else is the work of man."
>> L. Kronecker, Jahresber. DMV 2, S. 19.
>>
>>
>>
>
>
>
Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/



  • Prev by Date: RE: Efficient Sorting Algorithm ++ SortSplit1 and Merge
  • Next by Date: Printing Graphics Problem
  • Previous by thread: Re: Question on factor group calculations
  • Next by thread: Re: Question on factor group calculations