MathGroup Archive 2003

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

Search the Archive

Re: command for producing subgroups of a given group

  • To: mathgroup at smc.vnet.net
  • Subject: [mg42409] Re: [mg42401] command for producing subgroups of a given group
  • From: Ken Levasseur <klevasseur at mac.com>
  • Date: Sat, 5 Jul 2003 03:10:55 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Brian:

For relatively small groups, you might want to try the AbstractAlgebra
packages that Al Hibbard and I have developed.  They can be downloaded at
http://www.central.edu/eaam/index.asp

Here are some examples.  The function Subgroups only works in a reasonable
amount of time for relatively small groups (less than 20 elements?); but
CyclicSubgroups can be used for groups that are know to have only cyclic
subgroups.

In[1]:=
<<AbstractAlgebra`

In[13]:=
G=DirectProduct[Z[8],Z[3]]

Out[13]=
Groupoid[{{0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 1}, {1, 2},
 {2, 0}, {2, 1}, {2, 2}, {3, 0}, {3, 1}, {3, 2}, {4, 0},
 {4, 1}, {4, 2}, {5, 0}, {5, 1}, {5, 2}, {6, 0}, {6, 1},
 {6, 2}, {7, 0}, {7, 1}, {7, 2}}, -Operation-]

In[14]:=
CyclicSubgroups[G]

Out[14]=
{Groupoid[{{0, 0}}, -Operation-],
 Groupoid[{{0, 0}, {4, 0}}, -Operation-],
 Groupoid[{{0, 0}, {0, 1}, {0, 2}}, -Operation-],
 Groupoid[{{0, 0}, {2, 0}, {4, 0}, {6, 0}}, -Operation-],
 Groupoid[{{0, 0}, {0, 1}, {0, 2}, {4, 0}, {4, 1}, {4, 2}},
 -Operation-], Groupoid[{{0, 0}, {1, 0}, {2, 0}, {3, 0},
 {4, 0}, {5, 0}, {6, 0}, {7, 0}}, -Operation-],
 Groupoid[{{0, 0}, {0, 1}, {0, 2}, {2, 0}, {2, 1}, {2, 2},
 {4, 0}, {4, 1}, {4, 2}, {6, 0}, {6, 1}, {6, 2}},
 -Operation-], Groupoid[{{0, 0}, {0, 1}, {0, 2}, {1, 0},
 {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}, {3, 0}, {3, 1},
 {3, 2}, {4, 0}, {4, 1}, {4, 2}, {5, 0}, {5, 1}, {5, 2},
 {6, 0}, {6, 1}, {6, 2}, {7, 0}, {7, 1}, {7, 2}},
 -Operation-]}

In[12]:=
Subgroups[Alternating[4]]

Out[12]=
{Groupoid[{{1, 2, 3, 4}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {2, 1, 4, 3}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {3, 4, 1, 2}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {4, 3, 2, 1}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {1, 3, 4, 2}, {1, 4, 2, 3}},
 -Operation-], Groupoid[{{1, 2, 3, 4}, {2, 3, 1, 4},
 {3, 1, 2, 4}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {2, 4, 3, 1}, {4, 1, 3, 2}},
 -Operation-], Groupoid[{{1, 2, 3, 4}, {3, 2, 4, 1},
 {4, 2, 1, 3}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {2, 1, 4, 3}, {3, 4, 1, 2},
 {4, 3, 2, 1}}, -Operation-],
 Groupoid[{{1, 2, 3, 4}, {1, 3, 4, 2}, {1, 4, 2, 3},
 {2, 1, 4, 3}, {2, 3, 1, 4}, {2, 4, 3, 1}, {3, 1, 2, 4},
 {3, 2, 4, 1}, {3, 4, 1, 2}, {4, 1, 3, 2}, {4, 2, 1, 3},
 {4, 3, 2, 1}}, -Operation-]}

For Z_m x Z_n and larger values of m and n, you can use basic number theory
to list all subgroups by their generators most efficiently.

In[18]:=
subgroups[m_,n_]:=("<"<>ToString[#1]<>"> x
<"<>ToString[#2]<>">")&@@#&/@CartesianProduct[Mod[#,m]&/@Divisors[m],Mod[#,n
]&/@Divisors[n]]

In[19]:=
subgroups[45,28]

Out[19]=
{<1> x <1>, <1> x <2>, <1> x <4>, <1> x <7>, <1> x <14>,
 <1> x <0>, <3> x <1>, <3> x <2>, <3> x <4>, <3> x <7>,
 <3> x <14>, <3> x <0>, <5> x <1>, <5> x <2>, <5> x <4>,
 <5> x <7>, <5> x <14>, <5> x <0>, <9> x <1>, <9> x <2>,
 <9> x <4>, <9> x <7>, <9> x <14>, <9> x <0>, <15> x <1>,
 <15> x <2>, <15> x <4>, <15> x <7>, <15> x <14>,
 <15> x <0>, <0> x <1>, <0> x <2>, <0> x <4>, <0> x <7>,
 <0> x <14>, <0> x <0>}

Ken Levasseur
Math. Sci.
UMass Lowell


> From: brian.ginsberg at yale.edu (BDG)
To: mathgroup at smc.vnet.net
> Date: Fri, 04 Jul 2003 01:33:17 -0400 (EDT)
> To: mathgroup at smc.vnet.net
> Subject: [mg42409] [mg42401] command for producing subgroups of a given group
> 
> Hi,
> 
> I'm wondering if there's a Mathematica
> function that lets me input a group of the form Z_p x Z_q, where p and
> q are any positive integers, and will output
> 
> (1) all subgroups of that group and
> (2) the generator(s) of each subgroup.
> 
> If no such predefined command exists, any help with creating a
> notebook (for Mathematica) or routine that does this would be much
> appreciated. Thanks!
> 
> BDG
> 


  • Prev by Date: Re: programming in mathematica
  • Next by Date: Re: Re: New version, new bugs
  • Previous by thread: command for producing subgroups of a given group
  • Next by thread: Question about Notation Palette and Rewrite Rules