# What are some interesting coding projects (doable in Java) that relates to group theory?

I would like some ideas of possible programs I can write in Java that involves some computational aspects of group theory. My only ideas so far is to write a program that computes the product of two elements of $S_n$, but this is too easy. Any suggestions/ideas will be greatly appreciated.

• Sure, that's easy. But then take it a step further, find the cyclic subgroup generated by an element. Given a set of elements find the subgroup that they generate. Determine if a subgroup is normal, given its generators. Find the normal closure. I don't know how to do these things, but they're implemented in GAP for instance so you can surely find documentation for such things. Feb 11 '13 at 4:48

Another suggestion may be to look at the Java library http://java.symcomp.org/ which implements a Java API for SCSCP protocol and OpenMath encoding, with a collection of middleware developed on top of it.

Using this API, a Java application will be able to send requests and get back results to/from any SCSCP-compliant computer algebra system, and one of such systems is GAP by means of its SCSCP and OpenMath packages. This way, group-theoretical computations will be performed on the GAP's side, while the Java implementation will take care of things not easily doable in GAP or not possible there at all.

One can envisage a range of possible applications, from simple forms to input data and get back the result, to e.g. visualising the Cayley table of a finite group, or its lattice of subgroups, or, say, visualising finite-state automata. It may be worth to look for some ideas from GAP packages XGAP, automata and sgpviz which use different technologies for visualisation.

This may be not the original idea of the question, but obviously the link with the group theory (or other areas covered by GAP or other CAS) will be present. I am happy to talk about this in more details.

• A leading answer +1. However,I installed Linux to use XGAP but couldn't use it properly. Wish it can be used through A. Hulpke's great pack in Win. May 10 '13 at 10:12
• @BabakS.: thanks! What's the problem with XGAP? May 10 '13 at 10:58
• Nothing Prof., it is a perfect pack. :-) Just to wish we can use it in Windows environment. Thanks for your kind attention. :-) May 10 '13 at 13:20
• @BabakS.: OK - maybe I've misread your comment like you can't use XGAP in you Linux installation (if that is the case, please contact XGAP author or GAP Support). Regarding Windows: you may wish to try to install Cygwin and then you might be able to compile some more packages with external binaries in addition to those which are included in -win.zip archives from the GAP website. However, there is no guarantee that all of them will compile and work, including XGAP. This is why a Java application working under Windows may be useful in this context ... May 10 '13 at 14:19
• Thanks! I'll try the Cygwin. May 10 '13 at 15:33

One option (off the top of my head) would be to determine the order of an element in a cyclic group.

I suggest looking at this book (free): http://abstract.pugetsound.edu/ It has some programming problems (designed for a different language, but should be close enough) that relate to whatever topic the chapter discusses. Obviously, group theory is included.

An interesting project would be: given a group, its generators and its defining equations, print the whole group table. Consider this example, taken from A Book of Abstract Algebra, 2nd Edition by Charles C. Pinter (Dover Book):

Let $G$ be the group $\{e, a, b, b^2, ab, ab^2\}$ whose generators satisfy $a^2 = e$, $b^3 = e$, $ba = ab^2$. Your program should print the following table for $G$:

$$\begin{array}{c|cccccc} & e & a & b & b^2 & ab & ab^2 \\ \hline e & e & a & b & b^2 & ab & ab^2 \\ a & a & e & ab & ab^2 & b & b^2 \\ b & b & ab^2 & b^2 & e & a & ab \\ b^2 & b^2 & ab & e & b & ab^2 & a \\ ab & ab & b^2 & ab^2 & a & e & b \\ ab^2 & ab^2 & b & a & ab & b^2 & e \\ \end{array}$$