\documentclass[12pt]{article}
\usepackage{lslide}
\usepackage{path}
\addtolength{\textheight}{0.66truein} % A4
\addtolength{\textwidth}{0.27truein} % A4
\vertgroup
\landscape
\parskip 1ex plus 1ex minus 0.2ex
\def\bs{\begin{slide}}
\def\es{\end{slide}}
\def\bi{\begin{itemize}}
\def\ei{\end{itemize}}
\def\GAP{\textsf{GAP}}
\begin{document}
\title[GAP]{GAP: Status Report and Some Possible Directions}
\author{Steve Linton}
\organization{Division of Computer Science, St.~Andrews}
\titlepage
\bs
\subsection{Overview}
\begin{enumerate}
\item Status report -- GAP 3.4.4, handover, GAP 4 releases
\item Quick overview of GAP 4
\item Some thoughts on longer term directions
\end{enumerate}
\es
\section{Status Report}
\bs
\subsection{GAP 3.4.4}

\bi
\item Released April from St Andrews, Last full release of GAP3 (probably)
\bi
\item Bug fixes
\item Better Tietze routines
\item Better matrix group  handling over small fields
\item Some improvements in algorithms (interfaces unchanged)
\item HTML manual (now 1600 pages)
\item New data libraries: groups order $< 1000$, transitive groups
degree $< 24$ 
\item New share packages: autag, Chevie, CrystGAP, glissando, grim,
kbmag, matrix, pcqa, specht, xmod
\item Updated share packages: grape, guava, anupq
\ei
\ei
\es
\bs
\subsection{Transfer to St Andrews}
\bi
\item St Andrews role has been increasing -- 3.4.4, Web site, AH, WN
and SL (occasionally) work on GAP4
\item Formal handover (and transfer of e-mail addresses) in the next
weeks
\item System guaranteed to remain free and open
\item Secured some funding for people to work on GAP (2 jobs
advertised)
\item 
\begin{quote}
A move from an Aachen-based project with international involvement to
an international project coordinated at St Andrews
\end{quote}
IE: we hope to persuade you, and others world-wide, to do
a lot of the work. We are trying to set up ways to help, and to
acknowledge the effort involved.
\item The \GAP\ Council is established to encourage \GAP\ development,
and keep us in touch with \GAP\ users world-wide.
\ei
\es
\bs
\subsection{GAP 4}
\bi
\item Developed in Aachen (mostly) over the last two-three years
\item Many new features -- system and mathematical
\item Alpha test releases (weekly snapshots of our development
version) available now
\item Beta test release (with some documentation) in next few weeks
\item Full release early to mid 1998
\ei
\es
\section{Overview of GAP 4}
\bs
\subsection{What's Not Changed}
\bi
\item For interactive use, or simple programming, \GAP\ 4 looks a lot
like \GAP\ 3
\item Some commands have changed name
\item Some things will be done much more efficiently 
\ei

\es
\bs
\subsection{The \GAP\ 4 Kernel}
\bi
\item Rebuilt from the ground up -- Martin Sch\"onert, Frank Celler
\item More efficient memory manager
\item Easier to extend
\item 64 bit clean
\item Faster function calling
\item Save/load workspace
\item Fast vector arithmetic over finite fields
\item Streams 
\bi
\item More sophisticated file handling 
\item More flexible communication with other processes
\ei
\ei
\es
\bs
\subsection{The \GAP\ Compiler}
\bi
\item Ferenc Rakoczi, MS, FC
\item Compiles \GAP\ to human-readable C
\item C can be compiled and loaded dynamically (UNIX only) or compiled
into a kernel
\item Compiled code automatically loaded when it exists
\item Possible to further optimize the C by hand (care)
\ei
\es
\bs
\subsection{The \GAP\ 4 Library}
\bi
\item Much extended -- Aachen team, including Thomas Breuer, Bettina
Eick, Alexander Hulpke, Heiko Thei\ss en
\item Some new features:
\bi
\item $p$-adic numbers
\item Infrastructure for semigroups and monoids
\item Much better handling of vector spaces, bases, and algebras 
\item Multivariate polynomials and rational functions (basic
operations)
\item $GF(p): p > 2^16$
\item Groups given by confluent rewriting systems
\item Smash meat-axe in the library
\ei
\ei
\es
\bs
\subsection{ New Library Features Continued}
\bi
\bi
\item New polycyclic group code, handles infinite pc groups, based on
Deep Thought -- Werner Nickel, Wolfgang Merkwitz
\item Much improved permutation group code -- HT, Akos Seress, AH
\item Lie Algebras -- Willem de Graaf
\item Better handling of morphisms
\item Hash tables
\ei
\ei
\es
\bs
\subsection{Immutability}
\bi
\item Problem in GAP 3
\bi
\item Sets are stored as sorted lists
\item A list of lists or records, cannot be guaranteed to remain
sorted.
\item Algorithms for such sets are painfully slow. 
\ei
\item  In GAP 4:
\bi
\item Lists and records can be made immutable -- changing them is
forbidden
\item Objects (later) may claim to be immutable -- promises that they
will not change their behaviour under $=$ or $<$
\item Sets of such things stay sorted
\item Much less copying
\ei
\ei
\es
\bs
\subsection{Enumerators}
\bi
\item An enumerator is a virtual list
\item It behaves like a list, but may be stored differently inside
\item For example:
\bi
\item  elements of a finite vector space
\item  elements of a permutation group
\item  a sparse list
\ei
\item Use wherever you would use a list
\ei
\es
\bs
\subsection{Iterators}
\bi
\item An iterator provides a way to run through a set
\item May not need to list the set in full, or even enumerate it
\item Set may be infinite
\item Used in \texttt{for} loops
\item Any object may supply an iterator, can then use it

\centerline{\texttt{for g in G do}}
\ei
\es

\bs
\subsection{\GAP\ 4 Library Structure}
\bi
\item New scheme replaces operations records
\item Most functions a user calls become Operations
\item An Operation is a place-holder for a whole lot of different
functions -- it's Methods
\item All Methods for an Operation compute the same thing, but may
work for different sets of inputs
\item The system will call the ``best'' Method applicable to the
inputs (method selection)
\item Method selection can depend on ``types'' of inputs, on their
relationships and on facts learned about them since they were created
\item Easy to add new methods that work in specific circumstances
\item Fairly easy to add new types of objects, new Operations, etc.
\item Should be ideal for implementation of black box groups etc
\ei
\es
\bs
\subsection{Objects and Types}
\bi
\item In GAP 3, most things are represented by records -- the
methods applicable to them are in the operations subrecord
\item In GAP 4, most things are represented by Objects
\item An Object stores some data (either like a list or like a record)
and has a type 
\item The type is partially fixed when the object is created,
partially it reflects things learnt since
\item The types of the arguments determine the applicable methods
\item List and record access are Operations, so an Object can pretend
to be a list or a record (or both)
\ei
\es
\section{Directions}
\bs
\subsection{Ground Rules}
\bi
\item Main aim of GAP is to help people do research, teach and learn
\item Main focus is discrete mathematics especially algebra 
\item Must aim for a more distributed development effort
\ei
\es
\bs
\subsection{Some Things I think Will be Important/Useful/Interesting}
\bi
\item Algebraic broadening -- algebra, semigroups, quantum groups,
combinatorics
\item Links to other systems -- trade capabilities, expand role as the
universal front-end
\item Library modularity -- rethink the library/share package division
\item Integrate support for parallel/distributed processing
\item Split off the user interface -- different UIs for different jobs
\ei
\es
\bs
\subsection{Databases and Computation with Known Groups}
\bi
\item A favourite hobby-horse of mine -- ``Art and Science''
\item ``Computing for the post-classification world''
\item System and packages contain a lot of databases
\item New algorithms often depend on database type information
\item Much  information about known groups is not used
\item For example, computing centralizers is much easier if you know
the centralizer order
\ei
\es
\bs
\subsection{Computing with Known Groups -- Issues 1}

\bi
\item How to store and organise the information
\bi
\item what to store, what to compute
\item how to avoid redundancy and error
\item how to establish provenance of data
\item groups vs generated groups
\item big variations -- some databases have many small groups, others
a few huge ones
\ei
\ei
\es
\bs
\subsection{Computing with Known Groups -- Issues 2}

\bi
\item How to connect a concrete group with a database group
\bi
\item Constructive recognition, essentially
\item What is the user promises that the groups are isomorphic --
still have to get standard generators, match up conjugacy classes, etc
\ei
\item How to use database info in all our algorithms
\bi
\item How much of the ``art'' can be made into ``science''
\ei
\ei
\es


\end{document}





