2
$\begingroup$

I would like to write a program (in C++) that can handle groups. The use shall be solving equations in groups. What's a good idea to store a group?

My plan was:

  • If the group has a generating system, it is enough to store the generators
  • Otherwise, try something implicit (for example, let $(\mathbb{R},+)$ be approximated by all floats, or: this group can be constructed from that group by whatever)

Are there better alternatives to store groups?

  • 0
    I think a general rule is that the more general your setting is, the less you can do with them.2012-09-07

2 Answers 2

8

It might be helpful to look at what is done in an open-source computer algebra system, such as GAP. As far as I know, it deals mainly with finitely generated groups, but they must have some way of dealing with some non-finitely-generated groups. For example, commutator subgroups of f.g. groups aren't always f.g., and I think GAP can still work with them.

5

I agree with Tara's answer -- though I'm not so sure about non f.g. groups in GAP.

But I also wanted to point out that if there is a finite-dimensional representation of your group (or just a subgroup that you're interested in), then pretty much any computer algebra system can help in performing calculations via matrix multiplications and inverses.

I would not recommend approximating group elements in any way using floats unless you are willing to deal with round-off error. For example, $e^{2i\pi/5}$ is order $5$ in the multiplicative group of complex numbers, but an approximation, $z = 0.309016994 + 0.951056516 i$ is not -- Due to roundoff error, $z^5 = 0.999999998 + 1.32694344 \times 10^{-9} i \neq 1$.

Hope this helps!