  
  [1X1 [33X[0;0YPreface[133X[101X
  
  [33X[0;0YWelcome to [5XGAP[105X. This is one of the manuals documenting the core part of [5XGAP[105X,
  the others being the [13X[5XGAP[105X Tutorial[113X and [13XHPC-GAP Reference Manual[113X.[133X
  
  [33X[0;0YThere  is also a document [11XCHANGES.md[111X on the changes from earlier versions in
  the  root  directory.  This  preface  serves  not  only to introduce [21XThe [5XGAP[105X
  Reference Manual[121X, but also as an introduction to the whole system.[133X
  
  [33X[0;0Y[5XGAP[105X  stands  for  [13XGroups, Algorithms and Programming[113X. The name was chosen to
  reflect  the  original  aim  of  the  system,  which  is  introduced in this
  reference manual. Since that choice, the system has become somewhat broader,
  and  you  will  also  find  information about algorithms and programming for
  other algebraic structures, such as semigroups and algebras.[133X
  
  [33X[0;0YThis  manual,  the [13X[5XGAP[105X Reference Manual[113X contains the official definitions of
  [5XGAP[105X  functions. It should contain all the information needed to use [5XGAP[105X, and
  is not intended to be read cover-to-cover.[133X
  
  [33X[0;0YTo get started a new user may first look at parts of the [13X[5XGAP[105X Tutorial[113X.[133X
  
  [33X[0;0YA  lot  of  the  functionality  of  the  system  and a number of contributed
  extensions are provided as [21X[5XGAP[105X packages[121X which are developed independently of
  the  core  part  of  [5XGAP[105X  and can be loaded into a [5XGAP[105X session. Each package
  comes  with  a  its  own manual which is also available through the [5XGAP[105X help
  system.[133X
  
  [33X[0;0YThis  manual  is  divided into chapters, sections and subsections. Chapter [14X2[114X
  describes  the  [13Xhelp system[113X, which provides access to all the manuals from a
  running  [5XGAP[105X  session.  Chapter [14X3[114X  gives  technical  advice for [13Xrunning[113X [5XGAP[105X.
  Chapter [14X4[114X  introduces  the [5XGAP[105X language, and the next chapters deal with the
  [13Xenvironment[113X  provided  by  [5XGAP[105X  for the user. These are followed by the main
  bulk  of  chapters  which are devoted to the various mathematical structures
  that [5XGAP[105X can handle.[133X
  
  [33X[0;0YSubsequent  sections of this preface explain the structure of the system and
  provide copyright and licensing information.[133X
  
  
  [1X1.1 [33X[0;0YThe [5XGAP[105X[101X[1X System[133X[101X
  
  [33X[0;0Y[5XGAP[105X  is  a  [13Xfree[113X,  [13Xopen[113X  and  [13Xextensible[113X software package for computation in
  discrete  abstract  algebra. The terms [21Xfree[121X and [21Xopen[121X describe the conditions
  under  which  the  system  is  distributed -- in brief, it is [13Xfree of charge[113X
  (except  possibly  for the immediate costs of delivering it to you), you are
  [13Xfree  to  pass  it  on[113X within certain limits, and all of the workings of the
  system  are  [13Xopen for you to examine and change[113X. Details of these conditions
  can be found in Section [14X'Reference: Copyright and License'[114X.[133X
  
  [33X[0;0YThe  system is [21Xextensible[121X in that you can write your own programs in the [5XGAP[105X
  language,  and use them in just the same way as the programs which form part
  of  the  system (the [21Xlibrary[121X). Indeed, we actively support the contribution,
  refereeing  and distribution of extensions to the system, in the form of [21X[5XGAP[105X
  packages[121X.  Further details of this can be found in Chapter [14X'Reference: Using
  and Developing GAP Packages'[114X, and on our website.[133X
  
  [33X[0;0YDevelopment  of  [5XGAP[105X began at Lehrstuhl D für Mathematik, RWTH-Aachen, under
  the leadership of Joachim Neubüser in 1985. Version 2.4 was released in 1988
  and  version  3.1 in 1992. In 1997 coordination of [5XGAP[105X development, now very
  much  an  international  effort,  was  transferred to St Andrews. A complete
  internal  redesign  and  almost complete rewrite of the system was completed
  over  the  following years and version 4.1 was released in July 1999. A sign
  of  the  further internationalization of the project was the [5XGAP[105X 4.4 release
  in  2004,  which  has  been coordinated from Colorado State University, Fort
  Collins.[133X
  
  [33X[0;0YMore  information  on  the motivation and development of [5XGAP[105X to date, can be
  found   on   our  website  in  a  section  entitled  [21XSome  History  of  [5XGAP[105X[121X:
  [7Xhttps://www.gap-system.org/about/history/[107X.[133X
  
  [33X[0;0YFor  those  readers  who have used an earlier version of [5XGAP[105X, an overview of
  the  changes  from  [5XGAP[105X 4.4  and  a  brief  summary  of changes from earlier
  versions is given in [11XCHANGES.md[111X file in the main directory.[133X
  
  [33X[0;0YThe  system  that you are getting now consists of a [21Xcore system[121X and a number
  of packages. The core system consists of four main parts.[133X
  
  [31X1[131X   [33X[0;6YA [13Xkernel[113X, written in C, which provides the user with[133X
  
        [30X    [33X[0;12Yautomatic  dynamic  storage  management,  which the user needn't
              bother about when programming;[133X
  
        [30X    [33X[0;12Ya   set  of  time-critical  basic  functions,  e.g.  [21Xarithmetic[121X,
              operations  for integers, finite fields, permutations and words,
              as well as natural operations for lists and records;[133X
  
        [30X    [33X[0;12Yan  interpreter  for  the  [5XGAP[105X  language,  an untyped imperative
              programming  language  with functions as first class objects and
              some  extra  built-in data types such as permutations and finite
              field  elements. The language supports a form of object-oriented
              programming, similar to that supported by languages like C++ and
              Java but with some important differences.[133X
  
        [30X    [33X[0;12Ya  small  set of system functions allowing the [5XGAP[105X programmer to
              handle  files  and  execute  external programs in a uniform way,
              regardless of the particular operating system in use.[133X
  
        [30X    [33X[0;12Ya  set  of  programming tools for testing, debugging, and timing
              algorithms.[133X
  
        [30X    [33X[0;12Ya [21Xread-eval-print loop[121X (REPL) user interface.[133X
  
  [31X2[131X   [33X[0;6YA  much  larger  [13Xlibrary of [5XGAP[105X functions[113X that implement algebraic and
        other  algorithms. Since this is written entirely in the [5XGAP[105X language,
        the [5XGAP[105X language is both the main implementation language and the user
        language  of  the  system.  Therefore  a  user  can,  as easily as the
        original  programmers,  investigate and vary algorithms of the library
        and add new ones to it, first for their own use and eventually for the
        benefit of all [5XGAP[105X users.[133X
  
  [31X3[131X   [33X[0;6YA  [13Xlibrary  of group theoretical data[113X which contains various libraries
        of  groups,  including  the  library  of  small groups (containing all
        groups  of order at most 2000, except those of order 1024) and others.
        Large  libraries of ordinary and Brauer character tables and Tables of
        Marks are included as packages.[133X
  
  [31X4[131X   [33X[0;6YThe  [13Xdocumentation[113X.  This  is  available as on-line help, as printable
        files in PDF format and as HTML for viewing with a web browser.[133X
  
  [33X[0;0YAlso  included  with  the  core  system  are some test files and a few small
  utilities which we hope you will find useful.[133X
  
  [33X[0;0Y[5XGAP[105X  [13Xpackages[113X  are  self-contained  extensions to the core system. A package
  contains  [5XGAP[105X code and its own documentation and may also contain data files
  or  external  programs  to  which  the [5XGAP[105X code provides an interface. These
  packages   may   be  loaded  into  [5XGAP[105X  using  the  [2XLoadPackage[102X  ([14XReference:
  LoadPackage[114X)  command,  and  both the package and its documentation are then
  available  just  as if they were parts of the core system. Some packages may
  be  loaded  automatically,  when  [5XGAP[105X  is started, if they are present. Some
  packages, because they depend on external programs, may only be available on
  the operating systems where those programs are available (usually UNIX). You
  should note that, while the packages included with this release are the most
  recent  versions  ready  for  release  at  this  time,  new packages and new
  versions  may  be  released  at any time and can be easily installed in your
  copy of [5XGAP[105X.[133X
  
  [33X[0;0YWith  [5XGAP[105X  there  are  two  packages  (the  library  of  ordinary and Brauer
  character  tables,  and  the  library  of  tables  of  marks)  which contain
  functionality  developed  from parts of the [5XGAP[105X core system. These have been
  moved  into packages for ease of maintenance and to allow new versions to be
  released  independently  of  new releases of the core system. The library of
  small  groups  should  also  be  regarded as a package, although it does not
  currently  use  the  standard  package  mechanism.  Other  packages  contain
  functionality  which  has never been part of the core system, and may extend
  it   substantially,   implementing   specific   algorithms  to  enhance  its
  capabilities, providing data libraries, interfaces to other computer algebra
  systems  and  data  sources  such  as the electronic version of the Atlas of
  Finite  Group Representations; therefore, installation and usage of packages
  is recommended.[133X
  
  [33X[0;0YFurther details about [5XGAP[105X packages can be found in chapter [14X'Reference: Using
  and    Developing    GAP    Packages'[114X,   and   on   the   [5XGAP[105X   website   at
  [7Xhttps://www.gap-system.org/packages/authors/[107X.[133X
  
  
  [1X1.2 [33X[0;0YAuthors and Maintainers[133X[101X
  
  [33X[0;0Y[5XGAP[105X  is  the  work of very many people, some of whom still maintain parts of
  the    system.    A   complete   list   of   authors   can   be   found   at
  [7Xhttps://github.com/gap-system/gap/blob/master/COPYRIGHT[107X.  All  [5XGAP[105X  packages
  have their own authors and maintainers. It should however be noted that some
  packages  provide  interfaces between [5XGAP[105X and an external program, a copy of
  which is included for convenience, and that, in these cases, we do not claim
  that  the  package  authors or maintainers wrote, or maintain, this external
  program.  Similarly,  the  system  and  some  packages  include  large  data
  libraries  that  may have been computed by many people. We try to make clear
  in each case what credit is attributable to whom.[133X
  
  [33X[0;0YWe  have,  for  some  time,  operated  a  refereeing  system for contributed
  packages,  both  to ensure the quality of the software we distribute, and to
  provide recognition for the authors. We now consider this to be a refereeing
  system  for modules, and we would note, in particular that, although it does
  not use the standard package interface, the library of small groups has been
  refereed and accepted on exactly the same basis as the accepted packages.[133X
  
  [33X[0;0YWe  also  include with this distribution a number of packages which have not
  (yet)  gone  through  our  refereeing  process.  Some may be accepted in the
  future,  in  other  cases  the  authors have chosen not to submit them. More
  information can be found on our website [7Xhttps://www.gap-system.org[107X.[133X
  
  
  [1X1.3 [33X[0;0YAcknowledgements[133X[101X
  
  [33X[0;0YVery  many  people  have  worked  on, and contributed to, [5XGAP[105X over the years
  since  its  inception.  On  our  website  you  will find the prefaces to the
  previous  releases,  each of which acknowledges people who have made special
  contributions  to  that  release. Even so, it is appropriate to mention here
  Joachim  Neubüser  whose  vision  of  a free, open and extensible system for
  computational  algebra inspired [5XGAP[105X in the first place, and Martin Schönert,
  who was the technical architect of [5XGAP[105X 3 and [5XGAP[105X 4.[133X
  
  
  [1X1.4 [33X[0;0YCopyright and License[133X[101X
  
  [33X[0;0YCopyright    ©   1987-2026   by   its   authors,   which   are   listed   at
  [7Xhttps://github.com/gap-system/gap/blob/master/COPYRIGHT[107X, except for files in
  the  distribution,  which have an explicit different copyright statement. In
  particular,  the  copyright of packages distributed with [5XGAP[105X is usually with
  the package authors or their institutions.[133X
  
  [33X[0;0Y[5XGAP[105X  is  free  software;  you can redistribute it and/or modify it under the
  terms  of  the  GNU General Public License as published by the Free Software
  Foundation;  either  version 2 of the License, or (at your option) any later
  version.[133X
  
  [33X[0;0Y[5XGAP[105X  is  distributed  in  the  hope  that it will be useful, but WITHOUT ANY
  WARRANTY;  without  even  the implied warranty of MERCHANTABILITY or FITNESS
  FOR  A  PARTICULAR  PURPOSE.  See  the  GNU  General Public License for more
  details.[133X
  
  [33X[0;0YYou should have received a copy of the GNU General Public License along with
  [5XGAP[105X,  see  the file [11XLICENSE[111X in the root directory of the [5XGAP[105X distribution or
  see [7Xhttps://www.gnu.org/licenses/gpl.html[107X.[133X
  
  [33X[0;0YIf  you  publish  a  mathematical result that was partly obtained using [5XGAP[105X,
  please  cite  [5XGAP[105X,  just  as you would cite another paper that you used (see
  below for a sample citation).[133X
  
  [33X[0;0YSpecifically, please refer to[133X
  
  [4X[32X[104X
    [4X[GAP] The GAP Group, GAP - Groups, Algorithms, and Programming,[104X
    [4X      Version 4.16.0; 2026 (https://www.gap-system.org)[104X
  [4X[32X[104X
  
  [33X[0;0Y[5XGAP[105X   for   Windows   is   packaged   with   several  packages  from  [5XCygwin[105X
  ([7Xhttps://cygwin.com[107X).  Files from [5XCygwin[105X are provided under their respective
  licenses,  which  are  included  in  the  installation.  The [5XGAP[105X for Windows
  executables  that  we  distribute are themselves released under the terms of
  the  GNU  General Public License (GNU GPL); either version 2 of the License,
  or (at your option) any later version.[133X
  
  [33X[0;0YPlease   contact   [7Xmailto:support@gap-system.org[107X   if   you   need   further
  information.[133X
  
