GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
\Chapter{Differences to XGAP 3}12This rather short chapter is intended for the user who knows {\XGAP} 3 well3and quickly wants to know what has changed. So it covers mainly those4parts, where existing code using {\XGAP} has to be changed. For the totally5new features and packages there are only a few references to the other6parts of the documentation.78%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9\Section{Concept}1011There are two main changes in the concept. The first is the migration to12{\GAP4} with all the bells and whistles like object oriented design with13operations, methods and method selection via filters. {\XGAP4} is rewritten14nearly totally with these technologies. This should make the reusage of15code in the future easier. One can now use big parts of the code of {\XGAP}16for own structures by just replacing some methods via overloading.1718The second change is that there is no longer any mathematical ``knowledge''19or algorithm in {\XGAP}. It is now only a front end and a graphical user20interface. All code for finitely presented groups resides now in the {\GAP}21library. This is a much cleaner concept and should make the management of22the source code easier. At the same time {\XGAP} has become a much more23generic program. Operations for subgroups are for example no longer hard24wired into {\XGAP} case by case but there is generic code which can be25adapted just by hacking a few tables.2627These generalizations made some sacrifices necessary, because {\XGAP} does28no longer know anything about the mathematics it is displaying. It may for29example happen that {\XGAP} does no longer adapt its behaviour to the30amount of data that is known about some finitely presented groups. The31reason for this is, that the generic poset routines cannot know that the32vertices stand for groups at all. So sometimes one has to trigger the33comparison of subgroups of finitely presented groups manually (see section34"Compare Subgroups" for a description how to do this).3536In the old {\GAP3} version of {\XGAP} there were three different programs37for the full subgroup lattice of a (finite) group (`GraphicLattice'), the38interactive partial subgroup lattice of a finite group39(`InteractiveLattice') and the interactive partial subgroup lattice of a40finitely presented group (`InteractiveFpLattice') respectively. Now there41is only one generic program to display subgroup lattices interactively42(`GraphicSubgroupLattice').4344{\XGAP} can now handle subgroups of infinite index. They are either45placed in a ``finite size'' level or in an ``infinity'' level. See46"levelsintro" for details.4748A new logging facility allows to automatically produce a protocol of49the actions the user performs via mouse clicks. This is convenient50because the normal {\GAP} command script contains no useful51information about the selected entries in the menus. See52"loggingfacility" for details.5354There is a new layer to display generic posets that do not have to be55subgroup lattices. It can be used to display posets interactively very56easily. This is for example used in the new link to the C-MeatAxe written57by Michael Ringe. The code for this link is also included in {\XGAP4}.5859Code for the display of graphic graphs is planned but not yet completed.6061The user of {\XGAP} should not realize much of those changes (except of62course the name of the function to display a subgroup lattice). The63programmer on the other hand has to get used to the new techniques. It was64not in all places possible to achieve total compatibility for existing65code. Some changes also were introduced deliberately to make the66programmers adapt their programs to the new situation!676869%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%70\Section{User Interface}7172Some menu entries have been moved to new places, mainly because of the73division of generic poset code and specialized code for graphic subgroup74lattices. There are some new features and nearly all old features have made75it into the new version.7677The handling of the mouse is unchanged. However the introduction of levels78gives the user new possibilities.7980%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%81\Section{Where code has to be changed}8283All {\GAP} objects corresponding to graphic sheets and graphic objects are84no longer records but component objects. This means that the programmer can85no longer mess around in the data structures. If you want to add new86fields, then you have to use inheritance and define new categories. This87means also that the (internal) data structures of sheets has changed88massively. Programs that try to access record components of old {\XGAP}89structures will no longer work!9091The operation `InstallGSMethod' is no longer present. It is replaced by the92``callback'' mechanism with the operations `InstallCallback',93`RemoveCallback' and `Callback' (see "GraphicSheet" for details). This94means, that mouse events are handled differently. This was changed95deliberately because there is a big difference: In {\XGAP4} you can install96more than one function for one type of mouse event. All such callback97functions are called one after the other. There was only one graphic sheet98method for each event in {\XGAP3}. So you can *not* just change the name of99the operation to install the callback. You have to think about this100difference!101102See the section "Operations for Graphic Objects" for an overview103which operations exist now for which graphic objects. The main difference104is the introduction of `Revive', `ViewObj' and `WindowId' together with the105concept of the `IsAlive' filter.106107There was a bug in {\XGAP3} in the creation of menus: If an entry starts108with a minus sign, it will become a separating line instead of a real menu109entry. This disturbed the numbering of the menu entries, such that `Enable'110and `Check' did not work on the correct entry. This bug is fixed in111{\XGAP4} so code which contained a workaround for this bug has to be112changed. `Enable' and `Check' behave now like expected and documented in113"Enable" and "Check".114115116%%% Local Variables:117%%% mode: latex118%%% TeX-master: t119%%% End:120121122