Mathematical software for computing in integral group rings of discrete groups? - MathOverflow most recent 30 from http://mathoverflow.net 2013-05-22T17:56:22Z http://mathoverflow.net/feeds/question/34300 http://www.creativecommons.org/licenses/by-nc/2.5/rdf http://mathoverflow.net/questions/34300/mathematical-software-for-computing-in-integral-group-rings-of-discrete-groups Mathematical software for computing in integral group rings of discrete groups? Douglas Lind 2010-08-02T20:49:58Z 2010-08-10T16:06:44Z <p>I'm doing computations in the integral group ring of a discrete group, in particular the discrete Heisenberg group. In this case elements are integral combinations of monomials \$x^k y^m z^n\$, where the generators \$x\$, \$y\$, and \$z\$ satisfy \$xz=zx\$, \$yz=zy\$, and \$yx=xyz\$. Is there mathematical software for doing calculations with such objects, for example to compute powers of an element? </p> <p>I've not been able to do this inside standard mathematical software like Mathematica.</p> http://mathoverflow.net/questions/34300/mathematical-software-for-computing-in-integral-group-rings-of-discrete-groups/35135#35135 Answer by Max for Mathematical software for computing in integral group rings of discrete groups? Max 2010-08-10T16:06:44Z 2010-08-10T16:06:44Z <p>You can do this with <a href="http://www.gap-system.org/" rel="nofollow">GAP</a>. The example below assumes that you have the <a href="http://www.gap-system.org/Packages/polycyclic.html" rel="nofollow">polycyclic</a> package installed.</p> <p>First, you tell GAP which group you want to work with. Luckily, Heisenberg groups are polycyclic, and the polycyclic package provides a command to obtain them:</p> <pre><code>gap&gt; G:=HeisenbergPcpGroup(1); Pcp-group with orders [ 0, 0, 0 ] </code></pre> <p>Note that we could have also defined it by some other means if polycyclic was not available (e.g. as a matrix group), but this way is the most convenient. Now let's form the integral group ring:</p> <pre><code>gap&gt; ZG:=GroupRing(Integers,G); &lt;free left module over Integers, and ring-with-one, with 6 generators&gt; </code></pre> <p>The extra three generators come from the inverses of x, y and z (note that internally it calls them g1,g2,g3; it would be possible to change that with some effort, but that's beyond the scope here). Let's assign the corresponding generators of the group ring to variables x, y, z, and verify the relations you have given:</p> <pre><code>gap&gt; x:=ZG.1;; y:=ZG.2;; z:=ZG.3;; gap&gt; x*z=z*x and y*z=z*y and y*x=x*y*z; true </code></pre> <p>Here is an example of powering a group element (this works with more complicated ones, too, but I picked a small one to keep the output readable).</p> <pre><code>gap&gt; (x+7*y)^2; (1)*g1^2+(7)*g1*g2*g3+(7)*g1*g2+(49)*g2^2 </code></pre> <p>I hope this helps.</p>