Re: representing the dihedral group {1,r,r^2...s,sr^2...}

*To*: mathgroup at smc.vnet.net*Subject*: [mg98871] Re: representing the dihedral group {1,r,r^2...s,sr^2...}*From*: mark mcclure <mcmcclur at unca.edu>*Date*: Mon, 20 Apr 2009 19:11:35 -0400 (EDT)*References*: <gsh100$gr$1@smc.vnet.net>

On Apr 20, 1:25 am, obo... at gmail.com wrote: > Hi, I'm trying to represent the dihedral group > {1,r,r^2...s,sr^2...} in mathematica so I can > do for example: > s^3 > and get s. First, you should understand that the general problem you suggest is *very* hard - impossible, in fact. For some specific groups, however, there algorithms to reduce an arbitrary product to a canonical form and this is the case for the dihedral group. The dihedral group of order 2n may be represented as <a,b|(ab)^n = a^2 = b^2 = 1>. If you start with an arbitrary finite string of as and bs, simply remove each consecutive pair of identical symbols. You will be left with a product in one of the following four forms: (a*b)^m (a*b)^m * b (b*a)^m (b*a)^m * a The exponent m may then be reduced modulo n. To implement this in Mathematica, it is best to use NonCommutativeMultiply, or it's infix form **. Here's how: a /: a ** a = 1; b /: b ** b = 1; a /: a ** 1 = a; b /: b ** 1 = b; a /: 1 ** a = a; b /: 1 ** b = b; Now, let's generate a long product of as and bs. w = NonCommutativeMultiply@@RandomChoice[{a, b}, 100] You should notice that the string is far shorter than 100 symbols, since cancellation has already been performed. now let's put it in it's final form. Assuming you're working in D_6, you can do the following: n = 3; finalForm[w : NonCommutativeMultiply[a, ___, b]] := (a**b)^Mod[Length[w]/2, n]; finalForm[w : NonCommutativeMultiply[a, ___, a]] := (a**b)^Mod[(Length[w] - 1)/2, n] ** a; finalForm[w : NonCommutativeMultiply[b, ___, a]] := (b**a)^Mod[Length[w]/2, n]; finalForm[w : NonCommutativeMultiply[b, ___, b]] := (b**a)^Mod[(Length[w] - 1)/2, n] ** b; finalForm[w] Now, my ab is your r, my ba is your r^(n-1), my b is your s, and (I think) my a is your r^(n-2)s. Thus, you should be able to use this code to reduce in the alternative presentation <r,s|r^n = s^2 = 1>. One final comment: If you are planning to work with more general group presentations, then I strongly recommend that you check out Gap: http://www.gap-system.org/ Hope that helps, Mark McClure