| Overview of GAP
  GAP provides:
  
    
    Mathematical capabilities accessible through
    
      
        a large
        library of
        functions, containing
        implementations of various algebraic algorithms, part of 
        which is divided into 
        'Modules' under the 
        responsibility of 'maintainers',
      
        separate packages of additional
        functions for specialized purposes which can be used like library
        functions,
      
        data libraries containing
        large classes of various algebraic objects that are accessible by
        using GAP commands.
      
    A 
    programming language, also called GAP,
    which is interpreted and can be compiled. It can be used interactively
    at the keyboard or to write programs to be saved and then executed.
    Such programs can easily be modified and rerun. The language features:
    
      
        Pascal-like control structures,
      
        automatic memory management including garbage collection,
      
        streams,
      
        flexible
        list and
        record data types,
      
        built-in data types for key algebraic objects,
      
        automatic 
        method selection building on  a mechanism for 
        automatically  choosing the highest ranked method for a certain 
        operation,  depending on the current state of all its arguments, 
        so that GAP objects representing mathematical objects may gain 
        knowledge about themselves during their lifetime  resulting in 
        better methods being chosen later on.
      
    An 
        interactive environment that supports in particular 
      
   
    Documentation, in particular
    
      
        a
        Tutorial
        and further
        learning and
        teaching material,
        some of these in 
        French,  
        
        Japanese, 
        
        Portuguese, and
        Russian,
      
        the
        
        Reference Manual giving complete descriptions of library
        functions with examples of use,
      
        separate manuals for the
        packages,
      
        worked out higher level
        examples and a
        collection of preprints and
        talks,
      
        advice
        for people writing GAP code,
      
        a mark-up language
        GAPDoc for writing
        GAP documentation,
      
        an archive of GAP
        Forum contributions,
      
        a Bibliography of papers quoting
        GAP.
      
    Download and Installation instructions.
  
    FAQ answers.
  
    A 
    
    GAP3 benchmark,
    designed by 
    Martin Schönert, 
    has been included with the benchmarks of the Standard Performance 
    Evaluation Company.
   
  Structure of GAP
  GAP has a kernel written in C. It implements
 
  
    the GAP language,
  
    an interactive environment for developing and using
    GAP programs,
  
    memory management, and
  
    fast versions of time critical operations for various data types. 
   
  All the rest of the library of functions is written in the
  GAP language. Packages are mainly written in the
  GAP language, but some also involve standalones. Some
  packages provide links to other systems.
 
  Requirements and Availability
  The GAP system will run on any machine with a UNIX-like
  or recent Windows or MacOS operating system and with a
  reasonable amount
  of RAM and disk space. The current version is GAP 4, but
  GAP 3  is also available, so
  those GAP 3 packages that have not yet been converted to
  GAP 4 may still be used. Both GAP 4 and
  GAP 3 may be obtained at no cost by following the
  download instructions.
 |