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/