home *** CD-ROM | disk | FTP | other *** search
/ Math Solutions 1995 October / Math_Solutions_CD-ROM_Walnut_Creek_October_1995.iso / pc / mac / discrete / doc / preface.tex < prev    next >
Encoding:
Text File  |  1993-05-05  |  17.2 KB  |  334 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %%
  3. %A  preface.tex                 GAP documentation           Joachim Neubueser
  4. %%
  5. %A  @(#)$Id: preface.tex,v 3.6 1993/02/19 10:48:42 gap Exp $
  6. %%
  7. %Y  Copyright 1990-1992,  Lehrstuhl D fuer Mathematik,  RWTH Aachen,  Germany
  8. %%
  9. %%  This file contains the preface of the GAP manual.
  10. %%
  11. %H  $Log: preface.tex,v $
  12. %H  Revision 3.6  1993/02/19  10:48:42  gap
  13. %H  adjustments in line length and spelling
  14. %H
  15. %H  Revision 3.5  1993/02/11  11:20:32  martin
  16. %H  changed for 3.2
  17. %H
  18. %H  Revision 3.4  1992/04/30  12:16:36  martin
  19. %H  changed a few sentences to avoid bold non-roman fonts
  20. %H
  21. %H  Revision 3.3  1992/04/06  09:32:52  martin
  22. %H  fixed a very minor typo
  23. %H
  24. %H  Revision 3.2  1992/03/31  13:04:12  martin
  25. %H  fixed several typos
  26. %H
  27. %H  Revision 3.1  1992/03/31  08:22:32  martin
  28. %H  initial revision under RCS
  29. %H
  30. %%
  31. \catcode`\*=12
  32. \chapter*{Preface}
  33. \catcode`\*=13
  34. \markboth{PREFACE}{PREFACE}
  35.  
  36. {\GAP} stands for *Groups,  Algorithms  and  Programming*.  The name  was
  37. chosen to reflect the  aim of the  system,  which is  introduced in  this
  38. manual.
  39.  
  40. Until  well into the  eighties  the  interest  of pure mathematicians  in
  41. computational  group theory  was  stirred  by,  but in  most  cases  also
  42. confined to  the  information  that  was  produced  by  group theoretical
  43. software  for  their special research  problems  --  and  hampered by the
  44. uneasy  feeling  that  one  was   using  black  boxes  of  uncontrollable
  45. reliability.  However the last years have seen a rapid spread of interest
  46. in the understanding, design and even implementation of group theoretical
  47. algorithms.  These are gradually becoming accepted both as standard tools
  48. for a working group theoretician,  like certain  methods of proof, and as
  49. worthwhile  objects of study, like  connections between notions expressed
  50. in theorems.
  51.  
  52. {\GAP} was  started as  an attempt to meet  this  interest.   Therefore a
  53. primary design goal has  been to give its user full access  to algorithms
  54. and the data  structures used  by them, thus  allowing  critical study as
  55. well as  modification of existing methods.  We also intend to relieve the
  56. user from unwanted technical chores and to assist him in the programming,
  57. thus supporting invention and implementation of new algorithms as well as
  58. experimentation with them.
  59.  
  60. We have tried  to achieve these goals by a design which in addition makes
  61. {\GAP} easily portable, even to computers such as Atari ST and Amiga, and
  62. at the same  time facilitates the maintenance of {\GAP} with  the limited
  63. resources of an academic environment.
  64.  
  65. While I had felt for some time rather strongly the wish  for such a truly
  66. *open* system for computational group theory, the concrete idea of {\GAP}
  67. was born when, together with a larger group of students, among whom where
  68. Johannes    Meier,   Alice   Niemeyer,   Werner   Nickel    and    Martin
  69. Sch{\accent127o}nert who eventually wrote  the first version of {\GAP}, I
  70. had  my first contact with  the  Maple system at the  EUROCAL meeting  in
  71. Linz/Austria  in  1985.  Maple demonstrated to  us  the  feasibility of a
  72. strong and efficient computer  algebra system built  from a small kernel,
  73. with an  interpreted library of  routines written  in  a  problem-adapted
  74. language.  The discussion of the plan of a system for computational group
  75. theory  organized  in  a  similar  way  started  in  the  fall  of  1985,
  76. programming only in the second half of  1986.  A first version  of {\GAP}
  77. was operational by  the end  of 1986.  The system was  first presented at
  78. the  Oberwolfach meeting  on  computational  group  theory in  May  1988.
  79. Version  2.4  was  the  first  officially to be  given  away from  Aachen
  80. starting in December 1988.  The strong interest in this version, in spite
  81. of its still rather  small collection  of  group theoretical routines, as
  82. well as constructive criticism  by  many colleagues, confirmed our belief
  83. in the general design principles of the system.   Nevertheless over three
  84. years had gone by until in April 1992 version 3.1 was released, which now
  85. in December 1992 is followed by version 3.2.
  86.  
  87. A main reason  for this  much time and  the fact  that there had not been
  88. intermediate  releases was  that we have  found it  advisable  to make  a
  89. number of changes to basic data structures until with version 3.1 we hope
  90. to have reached a  state where we can  maintain upward compatibility over
  91. further releases,  which are planned to follow much  more frequently.  Of
  92. course the time has also been  used to  extend  the scope  of the methods
  93. implemented in  {\GAP}.   A rough  guess  puts the size  of  the  program
  94. library of version 3.2 at about twelve times the size of that of  version
  95. 2.4, while for version 3.1 the factor was about eight.  In spite of  this
  96. growth there are still gaps in what I would like to see in {\GAP}.
  97.  
  98. The system that you are getting now consists of four parts\:
  99.  
  100. \begin{enumerate}
  101.  
  102. \item
  103. A comparatively  small *kernel*, written in  C, which  provides  the user
  104. with\:
  105.  
  106. \begin{description}
  107.  
  108. \item[-] automatic dynamical storage management, which the user needn\'t
  109.          bother about in his programming;
  110. \item[-] a set of time-critical basic functions, e.g.  \"arithmetic\"
  111.          operations for integers, finite fields, permutations and words,
  112.          as well as natural operations for lists and records;
  113. \item[-] an interpreter for the {\GAP} language, which belongs  to  the 
  114.          Pascal family, but, while allowing additional types  for  group
  115.          theoretical objects, does not require type declarations;
  116. \item[-] a set  of  programming  tools  for  testing,  debugging,  and 
  117.          timing algorithms.
  118.  
  119. \end{description}
  120.  
  121. \item 
  122.  
  123. A  much  larger  *library*  of  {\GAP}  functions  that  implement  group
  124. theoretical and other algorithms.  Since this is  written entirely in the
  125. {\GAP}  language, in contrast to the situation in older group theoretical
  126. software,  the  {\GAP} language is both  the main implementation language
  127. and the user language of the system.  Therefore the user can as easily as
  128. the original programmers  investigate and vary algorithms of  the library
  129. and add new ones to it, first for his  own and eventually for the benefit
  130. of all {\GAP}  users.   We hope that  moreover  the  structuring  of  the
  131. library using the concept of *domains* and  the techniques used for their
  132. handling  that  have  been   introduced   into  {\GAP}   3.1  by   Martin
  133. Sch{\accent127o}nert will be further helpful in this respect.
  134.  
  135. \item
  136.  
  137. A *library of group theoretical data* which already contains e.g.  a list
  138. of primitive groups of Charles Sims,  a list of the  2-groups of order up
  139. to 256 of Eamonn  O\'Brien  and a  large collection  of character  tables
  140. including all of the Cambridge  *Atlas of  Finite Groups*,  but  which we
  141. hope  to extend further with the  help of colleagues  who have undertaken
  142. larger classifications of groups.
  143.  
  144. \item
  145.  
  146. The *documentation*.  This is available as a file that can either be used
  147. for on-line  help or be printed out to form this manual.  Some advice for
  148. using this manual  may  be  helpful.  The first  chapter  *About GAP*  is
  149. really an introduction to the use  of the system,  starting  from scratch
  150. and,  for the  beginning,  assuming  neither  much  knowledge about group
  151. theory  nor much versatility  in  using a computer.   Some of  the  later
  152. sections of chapter 1 assume more, however.  For instance section  "About
  153. Character Tables" *About Character Tables* definitely assumes familiarity
  154. with representation theory of finite groups, while in particular sections
  155. "About the Implementation  of  Domains"  to  "About  Defining  New  Group
  156. Elements" address more  advanced users who  want to extend the  system to
  157. meet their special needs.  The further chapters of the manual give then a
  158. full description of the functions presently available in {\GAP}.
  159.  
  160. \end{enumerate}
  161.  
  162. The policy for the further development of {\GAP} is to keep the kernel as
  163. small  as  possible,  extending the set of  basic functions  only by very
  164. selected  ones  that  have  proved  to  be  time-critical  and,  wherever
  165. feasible,  of  general  use.   In  the  interest of  the  possibility  of
  166. exchanging functions written in the  {\GAP} language the kernel has to be
  167. maintained in  a  single  place which  in the foreseeable future  will be
  168. Aachen.  On the other hand we hoped from the beginning that the design of
  169. {\GAP}  would  allow the  library to  grow not only by continued work  in
  170. Aachen  but, as does  any  other  part of  mathematics,  by  exchange  of
  171. contributions  from  many sides.   Both  has in fact  happened.   Notable
  172. extensions from version 3.1 to version  3.2, which were announced as  our
  173. plans in the preface of version 3.1 are the following\:
  174.  
  175. \begin{description}
  176.  
  177. \item[-] the removal of the restriction of the  degree  of  permutations,
  178. \item[-] extensions of  the  methods for  for  permutation groups,  e.g.,
  179.          for finding the composition factors,
  180. \item[-] extension of the  methods for  finite  presentations,  e.g.,  by
  181.          reduced   Reidemeister-Schreier,   Modified   Todd-Coxeter,  and
  182.          Tietze methods,
  183. \item[-] further tools  for  getting  character  tables,  e.g.,  by   the
  184.          Dixon-Schneider method  working   from    class   multiplication
  185.          coefficients, and for working with character  tables,  e.g,  for
  186.          finding permutation  characters.   Other  extensions  include  a
  187.          package for univariate polynomials over a coefficient ring.
  188.  
  189. \end{description}
  190.  
  191. Version 3.2 is the  first  to provide separate packages in the form  of a
  192. {\GAP} *share library* (see chapter 47 for details). At present there are
  193. three such packages, the ANU p-quotient and p-group generation package by
  194. Eamonn  O\'Brien and Mike Newman,  the  (nonperiodic) Nilpotent  Quotient
  195. program of Werner Nickel, and a package for Weyl groups by Meinolf Geck.
  196.  
  197. Of course the development of {\GAP} will go on. Of our own plans for this
  198. that  were already  mentioned in  the introduction  to version 3.1  there
  199. remain the  removal  of  the present restriction of  the  size of  finite
  200. fields  and  better  means  of working  with the  output of  the subgroup
  201. lattice program.  Further plans for the near future include still further
  202. additions  to the methods for permutation groups,  the start of a package
  203. of tools for matrix groups,  the provision of graphical output through an
  204. X-window interface and a debugger. Again some of these  plans are already
  205. in  some  state of  implementation, but  just  did not make  it  for  the
  206. deadline that we had set for this release.
  207.  
  208. There are five other points to make on further policy\:
  209.  
  210. \begin{description}
  211.  
  212. \item[-]
  213.  
  214. When we began work on {\GAP} the typical user that we had in mind was the
  215. one wanting  to implement his own algorithmic ideas.  While we  certainly
  216. hope that we  still  serve such  users well it has become  clear from the
  217. experience  of  the last  years that there  are even  more  users  of two
  218. different  species,  on  the  one  hand  the   established  theoretician,
  219. sometimes with little  experience in the use of computers,  who  wants an
  220. easily understandable  tool, on the  other hand the  student, often quite
  221. familiar with computers,  who  wants to  get assistance in  learning  the
  222. theory  by being able to do nontrivial examples.  We  think  that in fact
  223. {\GAP} can well be used by both, but  we realize that for  each a special
  224. introduction would  be desirable.  We apologize that we have not had  the
  225. time yet to write such, however have learned (through  the {\GAP}  forum)
  226. that in a couple of places work on the development of Laboratory  Manuals
  227. for  the  use   of {\GAP}  alongside   with  standard  Algebra  texts  is
  228. undertaken.
  229.  
  230. \item[-]
  231.  
  232. When we began work on {\GAP}, we designed it as a system for doing *group
  233. theory*.  It has already turned out that in fact the design of the system
  234. is general enough, and  some of its functions  are also useful, for doing
  235. work in other  neighbouring areas.  For instance Leonard Soicher has used
  236. {\GAP} to develop  a system GRAPE for working  with graphs.  We certainly
  237. enjoy seeing  this  happen,  but  we want to  emphasize that  our primary
  238. interest is the development  of a group theory system and that we  do not
  239. plan to try to  extend it beyond our  abilities into a  general  computer
  240. algebra system.
  241.  
  242. \item[-]
  243.  
  244. Rather we hope to provide  tools for linking {\GAP} to other systems that
  245. represent  years of  work  and experience  in  areas such  as commutative
  246. algebra,  or to  very efficient special purpose stand-alone programs.
  247.  
  248. \item[-]
  249.  
  250. We invite  you to further extend {\GAP}.   We  are  willing to  make such
  251. extensions available through the same channels  as {\GAP} in the  form of
  252. the above mentioned *share library*.  Of course,  we will do this only if
  253. the  extension  can  be distributed  free  of charge  like  {\GAP}.   The
  254. copyright for such extensions shall remain with you.
  255.  
  256. \item[-]
  257.  
  258. Finally  to answer  an often asked question\:\ The {\GAP} language is  in
  259. principle  designed to  be  compilable.   We  may one day  try  writing a
  260. compiler for it, but this is not yet far enough under  way  to  make  any
  261. promise of prediction.
  262.  
  263. \end{description}
  264.  
  265. {\GAP} is given  away under the  conditions that have always  been in use
  266. between  mathematicians, i.e.  in particular *completely  in source*  and
  267. *free  of  charge*.  We  hope  that  the  possibility  offered  by modern
  268. technology of  depositing {\GAP} on a number of  computers  to be fetched
  269. from them by 'ftp', will assist us in this policy.  We want to emphasize,
  270. however, two points.  {\GAP} is  *not* public domain software; we want to
  271. maintain  a *copyright* that  in particular forbids  commercialization of
  272. {\GAP}.  Further we ask that use of {\GAP} be quoted in publications like
  273. the use of any  other mathematical work, and  we would be grateful if  we
  274. could keep track of where {\GAP} is implemented.  Therefore we ask you to
  275. notify us if you have got {\GAP}, e.g., by sending a short e-mail message
  276. to  'gap@samson.math.rwth-aachen.de'.   The simple reason,  on top of our
  277. curiosity, is that  as anybody  else in  an academic  environment we have
  278. from time to time to prove that we are doing meaningful work.
  279.  
  280. We  have established a {\GAP} forum, where interested  users  can discuss
  281. {\GAP}  related  topics  by  e-mail.  In particular  this  forum  is  for
  282. questions about  {\GAP}, general  comments, bug  reports,  and  maybe bug
  283. fixes.   We will read this forum and answer questions  and  comments, and
  284. distribute  bug  fixes.  Of course  others  are  also  invited to  answer
  285. questions, etc.  We will  also announce future releases of {\GAP} on this
  286. forum.
  287.  
  288. To       subscribe       send       an      e-mail       message       to
  289. 'listserv@samson.math.rwth-aachen.de'  containing  the  line   'subscribe
  290. gap-forum  <your-name>', where <your-name>  should be your full name, not
  291. your e-mail address.  You will receive an  acknowledgement, and from then
  292. on all e-mail messages sent to 'gap-forum@samson.math.rwth-aachen.de'.
  293.  
  294. 'listserv@samson.math.rwth-aachen.de'   also   accepts   the    following
  295. requests. 'help' for a short help on how to  use 'listserv', 'unsubscribe
  296. gap-forum'  to  unsubscribe,  'recipients  gap-forum' to  get  a list  of
  297. subscribers, and 'statistics  gap-forum'  to see how many e-mail messages
  298. each subscriber has sent so far.
  299.  
  300. The reliability of  large systems  of  computer programs is  a well known
  301. general problem and, although over the past year the  record of {\GAP} in
  302. this respect has not been too  bad, of  course  {\GAP} is not exempt from
  303. this problem.  We therefore feel that it is mandatory  that  we, but also
  304. other users, are warned of bugs that  have been encountered in  {\GAP} or
  305. when doubts have arisen.  We  ask all users of {\GAP} to  use  the {\GAP}
  306. forum for issuing such warnings.
  307.  
  308. {\GAP} was started as a joint Diplom project of four students whose names
  309. have  already been mentioned.  Since  then  over a  dozen finished Diplom
  310. projects  have  contributed to {\GAP} and further  students are presently
  311. extending the library in the course of their work for  the Diplom as well
  312. as other members  of Lehrstuhl  D  and  colleagues from other institutes.
  313. Their individual contributions to the  programs and  to  the  manual  are
  314. documented in the respective files.  To all of them as well as to all who
  315. have helped proofreading and  improving this  manual I want to express my
  316. thanks for their engagement and enthusiasm as well  as to  many  users of
  317. {\GAP}  who have helped us by  pointing out  deficiencies  and suggesting
  318. improvements.    Very    special   thanks    however    go    to   Martin
  319. Sch{\accent127o}nert.  Not only does {\GAP}  owe many of its basic design
  320. features  to  his  profound  knowledge  of  computer  languages  and  the
  321. techniques for their implementation, but in many  long discussions he has
  322. in the name of future users always been the strongest defender of clarity
  323. of the design against my impatience and the temptation for
  324. \"quick and dirty\" solutions.
  325.  
  326. As with the previous versions we send this version out hoping for further
  327. feedback of  constructive criticism.   Of  course we ask  to  be notified
  328. about  bugs, but  moreover we  shall appreciate  any  suggestion for  the
  329. improvement of the basic system  as  well  as  of  the algorithms  in the
  330. library.  Most  of all,  however, we hope that in spite of such criticism
  331. you will enjoy working with {\GAP}.
  332.  
  333. Aachen, January 30.,1993, \hfill Joachim Neub{\accent127u}ser.
  334.