Skip to content
johnkerl edited this page Jan 10, 2013 · 6 revisions

.

What and why

SACK is a command-line program for doing some elementary computations on small finite groups: printing cayley tables, finding element orders and max orders, and so on. I wrote it in grad school, back in 2003-2005 or so, when I found my abstract-algebra courses to be just a little too abstract for my concrete tastes.

More documentation is at http://johnkerl.org/doc/kerl-pyaa.pdf

How

You can use "sack --help" for on-line help:

  shell-prompt $ sack --help
  Usage: ./sack {group type} {command} {command arguments ...}

  Example: "./sack d:4 center ."

  Group types: T a ai cl2 d ispec metacyc modadd modmul pauli q q8 s si spec v4

  Commands: abelian add associative caytbl center close closed commutator
  conj_classes cyclic cycsgr cycsgrs derived elts eorder exp find_id
  has_inverses has_unique_id inverse inverses isgroup max_order mul nilpotent
  order orders solvable subgroup

Your $PYTHONPATH should include the directory where you installed this file.

The group types and commmands are listed above. To get information about the arguments needed for a particular command, omit them. For example:

  shell-prompt$ sack s:4 center
  center: 1 argument(s) needed; got 0.

Most commands take a "." argument meaning "operate on all group elements". For example (center of dihedral group on four vertices):

  shell-prompt$ sack d:4 center .
  0,0
  2,0

All permutations on four points:

  shell-prompt$ sack s:4 elements .
  1
  1,4
  1,3
  1,2
  2,4
  2,3
  3,4
  1,4,3
  1,4,2
  1,3,4
  1,3,2
  1,2,4
  1,2,3
  2,4,3
  2,3,4
  1,4:2,3
  1,3:2,4
  1,2:3,4
  1,4,2,3
  1,4,3,2
  1,3,2,4
  1,3,4,2
  1,2,4,3
  1,2,3,4

Other commands take group elements as arguments. For example, the composition of the permutations (1 2 3) and (2 3 4) is (1 2)(3 4):

shell-prompt$ sack s:4 mul 1,2,3 2,3,4
1,2:3,4

#See also SACK does for small finite groups what RUFFL does for finite fields (https://github.com/johnkerl/ruffl).

Disclaimers

The input/output notation are more programmer-friendly than user-friendly; I wrote this program for myself to satisfy (in part) my preference for plain text I/O. Also, I intended this program to be self-educational; for information about how it works I tend to use the code itself as documentation.

I don't expect too many people will find SACK useful -- on the other hand it might happen to be just what you're looking for. Enjoy!

License

This software is released under the terms of the GNU GPL. Please see LICENSE.txt in the same directory as this file.

John Kerl kerl.john.r@gmail.com 2007-05-31

Clone this wiki locally