First session with GAP


  • Remember that GAP is case-sensitive!
  • Do not panic if you see Error, Variable: 'FuncName' must have a value.
  • Care about names of variables and functions.
  • Use command line editing.
  • Use autocompletion instead of typing names of functions and variables in full.
  • Use ? and ?? to view help pages.
  • Set the default help format to HTML using SetHelpViewer.
  • Use the LogTo function to save all GAP input and output into a text file.
  • If calculation takes too long, press -C to interrupt it.
  • Read ‘A First Session with GAP’ from the GAP Tutorial.

Some more GAP objects


  • GAP has a plethora of various immediate, positional and component objects.
  • List arithmetic is very flexible and powerful.
  • Objects like lists and records are good to keep structured and related data.

Functions in GAP


  • Command line is good for prototyping; functions are good for repeated calculations.
  • Informative function names and comments will make code more readable to your future self and to others.
  • Beware of undeclared local variables!

Using regression tests


  • It is easy to create a test file by copying and pasting a GAP session.
  • Writing a good and comprehensive test suite requires some effort.
  • Make it right, then make it fast!

Small groups search


  • Organise the code into functions.
  • Create small groups one by one instead of producing a huge list of them.
  • Using SmallGroupsInformation may help to reduce the search space.
  • GAP is not a magic tool: theoretical knowledge may help much more than the brute-force approach.

Attributes and Methods


  • Positional objects may accumulate information about themselves during their lifetime.
  • This means that next time the stored information may be retrieved at zero cost.
  • Methods are bunches of functions; GAP’s method selection will choose the most efficient method based on the type of all arguments.
  • ‘No-method-found’ is a special kind of error with useful debugging tools helping to understand it.