GAP: Groups, Algorithms, Programming.
This is a powerful program for doing calculations in group theory.
It includes a Library of several million groups.
To access this program from your math dept. account add, once and for
all, /pkgs/gap to your path (if it's not already there),
for example by adding the following
line to the file .cshrc in your home directory:
set path = ( /pkgs/gap/ $path . )
Then you can always start the program with the command "gap". For
immediate help with the program, type ? (return) after the prompt
"gap>" shows up (takes a few seconds). There is also lots of info at
All gap commands are terminated by a ";" followed by "return". To
leave the program, type "quit;".
You can do some simple arithmetic:
gap> 2^20*3^11 +5; 185752092677
gap> Gcd(123123,22); 11
You can also do some number theory, linear algebra, etc. (See manual.)
The specialty of the program is in group theory.
For instance, try the following command: the output is the number of
groups of order i for all i between 4 and 60. (These bounds can be
changed, although the upper one should not be more than 2001.)
gap> for i in [4..60] do Print(i," ",NumberSmallGroups(i),"\n"); od;
Try this one too:
gap> for i in [1..10] do Print(i," ",NumberSmallGroups(2^i),"\n"); od;
Here's another way to do the same thing. First define a function which
outputs for certain integers determined by GAP (including all n<2002)
the pair [n,#n] where #n is the number of groups of order n. Then use
that function.
gap> GroupsOfOrder:=function(n) # number of groups of order n
> return [IdFunc(n), NumberSmallGroups(n) ];
> end;;
gap> GroupsOfOrder(9); [ 9, 2 ]
gap> List([4..60], GroupsOfOrder);
Explore at your leisure.
************************************
For references (some historical, some recent) on the problem of
constructing groups of a given order, check out
http://www.research.att.com/projects/OEIS?Anum=A000001