
Instructions
Select a group
First pick a group type, and then enter any auxiliary information. cyclic: enter the order
 dihedral: enter n, for the ngon
 units modulo n: enter the modulus
 abelian group: you can select any finite abelian group as a product of cyclic groups  enter the list of orders of the cyclic factors, like 6, 4, 2
 affine group: the group of affine transformations modulo n (discussed more below)  enter the modulus n
 by order: not really a group type, but you first pick the size of the group, then pick the group from a list. For the orders listed, each isomorphism class of groups is listed once.
 mystery groups: allows you to select a group from its list of known groups, but where the group has been disguised. The identity element will be identified as e but the other elements will have been shuffled and labelled a, b, c, ... The user can supply a bound on how large of a group for it to produce, and a seed value. A given pair of numbers will always produce the same group.
 specific groups: groups which are known to the program, but which are not accessible elsewhere (in the indicated form) are then listed individually. Currently, there is only one such group, GL_{2}(Z_{2}).
Group table operation
Once a group has been selected, its group table is displayed to the right, and a list of its elements are listed on the left.The elements in the list on the left are clickable to select or deselect them. Many operations relate the the set of selected elements.
 Generate Subgroup: forms the subgroup generated by the selected elements. This subgroup becomes the new selected set, and elements of the group in the table are colored by left coset.
 Close under Conj.: augments the set of selected elements by adding all of their conjugates.
 Centralizer: finds the set of elements which commute with all of the selected elements. Since this is always a subgroup, it automatically colors by coset.
 [S,S]: forms the set of commutators, aba^{1}b^{1}, using only selected elements.
 [S,G]: forms the set of commutators, aba^{1}b^{1}, where a is a selected element and b runs through all of the elements of the group.
 Subgroup to Diagram: if a subgroup has been produced in the table, clicking here will jump you to the subgroup diagram tab with the current subgroup selected. Note, the subgroup diagram tab functions properly on fewer browsers than does the group table tab.
 Clear Selection: unselect all group elements.
 +: displays the group table in a slightly larger font. You can click on this button repeatedly to make the table much larger.
 : displays the group table in a slightly smaller font. You can click on this button repeatedly to make the table much smaller.
Subgroup diagrams
Once you have picked a group, you can go to this tab and click on Show Diagram. If your browser supports canvas elements, you will get the diagram. Normal subgroups are represented by diamond shapes. Nonnormal subgroups are represented by circles, and are grouped by conjugacy class.
 The program tries to make the initial layout of the diagram to be not horrible. You can drag subgroups around to arrange them more aesthetically. Note, dragging can be a little sluggish.
 If you click on a subgroup, you get a little information about it on the left side of the window. Namely, you get its size and a set of generating elements.
 If you have clicked on a subgroup, the Sub to Table button becomes active. Clicking on it selects the elements of that subgroup in the group table.
Activities
 Explore subgroups generated by a set of elements by selecting them and then clicking on Generate Subgroup
 Looking at the group table, determine whether or not a group is abelian.
 Explore orders of elements by selecting one element, and then generating its (cyclic) subgroup.
 Explore conjugacy classes by selecting an element, and then clicking to Close Under Conj.
 Generate normal subgroups by combining Generate Subgroup and Close Under Conj.
 When you Generate Subgroup, the group table is reorganized by left coset, and colored accordingly. You should be able to see if the subgroup is normal, and the group table for the quotient group.
 If no elements are selected, taking the centralizer gives the whole group (why?). If you click on the centralizer button again, you get the center of the group (again why?).
 Looking at the subgroup diagram of a group, you should be able to see if the group is a nontrivial direct product, and in how many ways this is possible.
 Similarly, looking at the subgroup diagram of a group, you should be able to see if the group is a nontrivial semidirect product, and in how many ways this is possible.
 With a matrix group, compare orders of elements computed from the group table with answers computed by linear algebra.
 Choose a mystery group and play "name that group". In other words, try to determine which group it is based on calculations on the group table page, and/or from its subgroup diagram.
 Play name that group with quotients of groups modulo their centers.
Group Notations
 A group "Aff(Z_n)" is the set of affine functions ax+b where a and b are taken in Z_{n}, and a relatively prime to n. It is a group under composition.
 For dihedral groups, a special notation is used for reflections when n=3 or 4 (representing the line being reflected over). For larger dihedral groups, v_{j} is the reflection which sends vertex 1 to vertex j.
 Semidirect products are denoted H:K. In general, it is assumed that the connecting homomorphism from K to Aut(H) has as large an image as possible. A subscript on the colon signifies that either the connecting homomorphism does not have maximal size, or that there are more than one such semidirect product up to isomorphism.
Browser Issues
These pages should work fully with recent versions of Firefox, Safari, Explorer (on windows), and Opera.
There definitely seems to be problems with Explorer on a Mac. Other broswers may work for the group tables but not the subgroup diagram tab.
When in doubt, Firefox (1.5 or later) should definitely work.
Credits
All code by John Jones, except as listed below. Many of these packages have been modified, as noted, to accomodate the needs of this program.
The following software was used in the creation of this program.
 tabber.js, for the nice tabs within the page.
 excanvas.js, for emulating the canvas element in Explorer. Subgroup diagrams are drawn on a canvas.
 central randomizer, modified to allow specifying a seed. This is used in the mystery group feature.
 graph.js was the starting point for the subgroup diagram tab. It has been extensively modified for the special needs of this program.
 prototype.js, a generally useful javascript package, especially for accessing and modifying parts of a web page. It is used in the original graph.js, and we then started using parts of it elsewhere in the code.
 drawString for canvas which is used by graph.js. It has been modified here to work around a firefox bug in drawing parts of images, to access its basic image from a file (to be compatible with explorer), and the way in which the function is called (to be compatible with safari).
 gap, which was used for group computations related to filling in the selection of groups by order.